2015-09-03 1 views
1

Я хочу контролировать событие загрузки формы из другой формы. моей проблемой я создаю winform control в form1 время исполнения, но создание будет контролироваться form2.Как управлять загрузкой формы из другой формы

Я прочитаю некоторые данные от пользователя в form2, и когда пользователь вводит конкретный текст, я создам элемент управления winform в form1.

Я делаю код для этого, используя from1 для создания winform контроль во время выполнения.

private TextBox txtBox = new TextBox(); 
     private Button btnAdd = new Button(); 
     private ListBox lstBox = new ListBox(); 
     private CheckBox chkBox = new CheckBox(); 
     private Label lblCount = new Label(); 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      this.MaximizeBox = false; 
      this.MinimizeBox = false; 
      this.BackColor = Color.White; 
      this.ForeColor = Color.Black; 
      this.Size = new System.Drawing.Size(550, 550); 
      this.Text = "Test Create form in runtime "; 
      this.FormBorderStyle = FormBorderStyle.FixedDialog; 
      this.StartPosition = FormStartPosition.CenterScreen; 

      this.btnAdd.BackColor = Color.Gray; 
      this.btnAdd.Text = "Add"; 
      this.btnAdd.Location = new System.Drawing.Point(90, 25); 
      this.btnAdd.Size = new System.Drawing.Size(50, 25); 
      this.txtBox.Text = "Text"; 
      this.txtBox.Location = new System.Drawing.Point(10, 25); 
      this.txtBox.Size = new System.Drawing.Size(70, 20); 

      this.lstBox.Items.Add("One"); 

      this.lstBox.Sorted = true; 
      this.lstBox.Location = new System.Drawing.Point(10, 55); 
      this.lstBox.Size = new System.Drawing.Size(130, 95); 
      this.chkBox.Text = "Disable"; 
      this.chkBox.Location = new System.Drawing.Point(15, 190); 
      this.chkBox.Size = new System.Drawing.Size(110, 30); 
      this.lblCount.Text = lstBox.Items.Count.ToString() + " items"; 
      this.lblCount.Location = new System.Drawing.Point(55, 160); 
      this.lblCount.Size = new System.Drawing.Size(65, 15); 

      this.Controls.Add(btnAdd); 
      this.Controls.Add(txtBox); 
      this.Controls.Add(lstBox); 
      this.Controls.Add(chkBox); 
      this.Controls.Add(lblCount); 

     } 

Как сделать то же самое из формы2?

+0

используя экземпляр Form1 в Form2, который вы можете добавить, где вас путают btw? –

+0

Я пытаюсь это, но не могу контролировать событие загрузки – mbugr

+0

при создании загрузки экземпляра вызывается при загрузке формы1 –

ответ

2

Я не знаю, какой «контроль» вам нужен. Однако в среде с несколькими формами связь между формами тривиальна. Есть много способов сделать общаться, как один может быть как

Создания открытых свойств типа Form в форме Родителя

public Form propForm1 {get;set;} 

Когда по пункту меню щелчка откройте Form1, сохраните это объект этой общественности имущество.

var form1 = New yourchildformname(); 
form1.MdiParent = this; 
propForm1 = form1; // Add this line. 
form1.Show(); 

Теперь каждый раз, когда вы щелкните на другую кнопку, чтобы открыть Form2, вы будете иметь propForm1 объект, который можно использовать, чтобы установить некоторые данные по этой форме.

EDIT: На form2, вы можете получить доступ к элементам управления form1 в

private void button1_Click(object sender, EventArgs e) 
{ 
    this.parent.propForm1.txtUserName = "Yokohama"; 
} 

Помните приведенный выше код на form2. Также установите свойство «access modifier» txtUserName от private до public.

+0

Тип контроля текстовое поле, кнопка и combobox – mbugr