我想要创建,比如说基于单个模板表单的32个Windows表单,并且这些实例应该相互链接。也就是说,每个表单都有一个按钮来调用下一个实例,依此类推。我可以创建尽可能多的形式,但我如何将这些实例联系在一起呢?
这就是我用来创建几个子表单的方法:
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ChildForm child = new ChildForm();
child.Show();
}
}事件的顺序如下:
任何想法都欢迎!
问候
克里斯
发布于 2013-02-24 22:25:02
您可以在构造函数中创建表单的静态集合,将表单实例添加到列表中(并在dispose期间删除它)。要计算出下一个表单,您可以找到当前表单的索引,并根据该索引在列表中获取下一个表单。创建一个带有两个按钮的表单,并按下面的方式修改它以测试它。
public partial class Form1 : Form
{
static List<Form1> formList = new List<Form1>();
public Form1()
{
InitializeComponent();
formList.Add(this);
}
private void button1_Click(object sender, EventArgs e)
{
int idx = formList.IndexOf(this);
int nextIdx = (idx == formList.Count()-1 ? 0: idx+1 );
Form1 nextForm = formList[nextIdx];
nextForm.changeTextAndFocus("next form: " + nextIdx);
}
// moves to the next form and changes the text
public void changeTextAndFocus(string txt)
{
this.Focus();
this.Text = txt;
}
//Creates 5 forms
private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < 5; i++)
{
Form1 newForm = new Form1();
newForm.Show();
}
}
}发布于 2013-02-24 22:17:36
我真的不知道你打算做什么:)如果要计算多个窗体,可以向窗体添加一个属性号。然后从那里向上搜索。
主形;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ChildForm first = new ChildForm();
first.Number = 1;
first.Show();
}
}ChildForm
public partial class ChildForm : Form
{
public ChildForm()
{
// createButton here
}
private void button_Click(object sender, EventArgs e)
{
ChildForm _childForm = new ChildForm();
_childForm.Owner = this;
_childForm.Number = this.Number + 1;
this.Hide();
_childForm.Show();
}
public void FirstChildForm()
{
if (this.Number != 1) //maybe not that static
{
(this.Owner as ChildForm).FirstChildForm();
this.Close(); // or hide or whatever
}
}
public int Number
{ get; set; }
}没有经过测试的代码,希望这能有所帮助:)。
https://stackoverflow.com/questions/15057184
复制相似问题