Geo*_*ge2 1 .net c# visual-studio-2008 winforms
在按钮单击甚至Form1的处理程序,我想创建Form2.这是我的代码,
甚至是Form1的button1的处理程序
// button1 belongs to Form1
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2("www.google.com");
form2.ShowDialog();
}
Run Code Online (Sandbox Code Playgroud)
Form2构造函数
public Form2 (string str)
{
InitializeComponent();
address = str;
button2.Text = str; // button2 belongs to Form2
}
public Form2()
{
InitializeComponent();
}
Run Code Online (Sandbox Code Playgroud)
我的问题和关注是,按钮1事件处理程序由Form1的UI线程执行,如果我在Form1 UI线程内创建新的Form2,并使用UI线程来设置Form2的UI元素(button2.Text),这是合法的吗?我的理解是每个Form都有它的所有者UI线程和UI元素(例如按钮)应该只由表单个体所有者线程处理?如果我的代码是错误的,那么如果有人能够告诉我在当前表单的事件处理程序中创建另一个Form并传递参数的优雅方法,那就表示赞赏.
我使用的是VSTS 2008 + C#+ .Net 2.0.
你的代码非常好.两种形式都将存在于同一个线程中,并且可以相互访问而无需担心线程.除非您特别说明,否则不会生成新的线程.
作为旁注,我想改变你的构造函数Form2.我假设Form2还有没有参数的默认构造函数,那个构造函数也调用了InitializeComponent?如果是这样,则无需在构造函数中复制该调用; 如果你这样设置,它将首先运行默认构造函数,然后添加自定义的东西:
public Form2 (string str) : this()
{
address = str;
button2.Text = str; // button2 belongs to Form2
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1052 次 |
| 最近记录: |