2011-11-09 49 views

回答

2

我觉得这里有几个问题。

如何打开一个新的形式:在Form1一些方法,添加以下代码:

Form2 form2 = new Form2(); 
form2.ShowDialog(); 

如何传递值从Form1Form2:通过他们,当你调用Form2构造:

Form2 form2 = new Form2(String value, Boolean isDone); 

而且Form2构造函数应该是这样的:

public Form2(String form1Value, Boolean form1IsDone) { 
    label1.Text = form1Value; 
    label2.Text = form1IsDone; 
} 
1

你可以那样做:

var form = new Form 
{ 
    Owner = this 
}; 
var label = new Label 
{ 
    Text = "Hello" 
}; 
form.Controls.Add(label); 
form.Show(); 

当然你要做的布局多一点的工作,但是这仅仅是一个样品“是怎么回事。”

+0

ShowDialog是模态的,这意味着在做任何事情之前,您必须关闭窗体。表演不是,这意味着你可以同时使用两种形式,并刻意改变两者之间的焦点。但是在这两种情况下,您都应该将第一种形式作为指定表单所有者的参数传递。 secondForm.Show(firstForm);.这确保了第二种形式总是在第一种形式之上,并且它不能在第一种形式之后消失,特别是如果它小于第一种。 –

+0

@ OlivierJacot-Descombes更好的是设置所有者的初始化。我忘了它并纠正它。 – Fischermaen

+0

您正在设置标签的所有者。我正在谈论设置新创建的表单的所有者。 –

1
Form newForm = new Form(); 
TextBox tb = new TextBox(); 
tb.ReadOnly = true; 
tb.Multiline = true; 
tb.Dock = DockStyle.Fill; 

tb.Text = "One and" + Environment.NewLine + "two lines of text"; 

newForm.Controls.Add(tb); 
newForm.ShowDialog(); 

更换TextBoxLabel或任何你喜欢的。 但是,如果您不需要每次都动态生成新窗体的布局,则应该在Visual Studio设计器中真正创建一个新窗体并打开该窗体,将内容属性传递给该窗体。

Form2 form2 = new Form2(); 
form2.SetContent("One and" + Environment.NewLine + "two lines of text"); 
form2.ShowDialog(); 

其中SetContent是您在Form2类中创建一个公共方法。 SetContent方法应该将相应标签的文字等文字化。

+0

是的。您也可以将内容和其他信息传递给窗体构造函数,并根据信息让窗体决定如何动态构建自己。 –

相关问题