2015-09-27 17 views
0

У меня возникла проблема с обновлением текстового поля внутри формы в C# при загрузке второй формы.Обновление формы C# при загрузке второй формы

У меня есть две формы в моем приложении. form1 сначала загружается, а затем загружается form2.

Когда form2 загружает его следует обновить в textbox.txt в form1 с текстом (в данном случае: F2:Running), указывая, что он был загружен.

Любой вид помощи ценится, вот текущий код:

namespace EditingBox { 
    static class Program { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main() { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Form1()); 
     } 
    } 
} 

namespace EditingBox { 
    public partial class Form1: Form { 
     public Form1() { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) { 

      Form2 F2 = new Form2(); 
      Form1 F1 = new Form1(); 

      F2.Show(); 
      textBox1.Select(); 
      textBox1.Refresh(); 
     } 

     public void textBox1_TextChanged(object sender, EventArgs e) { 

     } 

     private void label1_Click(object sender, EventArgs e) { 

     } 
    } 
} 

namespace EditingBox { 
    public partial class Form2: Form { 
     public Form2() { 
      InitializeComponent(); 
      Form1 F1 = new Form1(); 
      F1.textBox1.Select(); 
      F1.textBox1.Text = "F2:Running"; 
      F1.textBox1.Refresh(); 
     } 

     private void Form2_Load(object sender, EventArgs e) { 
      Form1 F1 = new Form1(); 
      F1.textBox1.Select(); 
      F1.textBox1.Text = "F2:Running"; 
      F1.textBox1.Refresh(); 
     } 
    } 
} 

ответ

0

Вы можете передать Form1 в Form2 конструктор:

namespace EditingBox 
{ 
    public partial class Form2 : Form 
    { 
     Form1 _form1; 
     public Form2(Form1 form1) 
     { 
      InitializeComponent(); 
      _form1 = form1; 
      _form1.textBox1.Select(); 
      _form1.textBox1.Text = "F2:Running"; 
      _form1.textBox1.Refresh(); 
     } 

     private void Form2_Load(object sender, EventArgs e) 
     { 
      _form1.textBox1.Select(); 
      _form1.textBox1.Text = "F2:Running"; 
      _form1.textBox1.Refresh(); 
     } 
    } 
} 
3

Вам нужно пройти this экземпляр Form1 из исходной формы когда вы его создаете. В настоящее время: Form1 F1 = new Form1(); создает новый экземпляр формы1, а не экземпляр, который отображается. Следовательно, все, что вам нужно сделать, это добавить Form1 form1 в конструктор формы2 и вызвать этот конструктор всякий раз, когда вы его отобразите:

public Form2(Form1 F1) 
    { 
     InitializeComponent(); 
     F1.textBox1.Select(); 
     F1.textBox1.Text = "F2:Running"; 
     F1.textBox1.Refresh(); 
    } 


    private void Form1_Load(object sender, EventArgs e) 
    { 

     Form2 F2 = new Form2(this); 

     F2.Show(); 
     textBox1.Select(); 
     textBox1.Refresh(); 
    } 
Смежные вопросы