我想从单独的表单中获取数组列表的值,并将它们添加到另一个表单上的组合框中。我在form2中试过这个。
foreach (string fname in newname)
{
form1.comboBox1.Items.Add(fname);
}
但它不会将值发送到组合框。现在,如果我在form1上添加它
base.AddOwnedForm(form2)
,这在form2上
Form1 form1=(Form1)this.Owner
它可以工作但是form1会隐藏自己,当你点击“X”按钮时也不会关闭。 (这似乎是form2的继承属性)。
任何帮助都会很棒!
答案 0 :(得分:1)
我不确定这是否是您需要的。我希望它是:)。我正在学习C#+ winforms,所以我把你的问题当作练习。
我创建了两个简单的表单(所有控件默认命名)
第一个表单代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Form2 newForm = new Form2(this);
newForm.Show();
}
public void UpdateCombo(List<String> newName)
{
comboBox1.Items.Clear();
foreach (string fname in newName)
{
comboBox1.Items.Add(fname);
}
comboBox1.SelectedIndex = 0;
}
}
第二个表单代码:
public partial class Form2 : Form
{
List<String> newName;
Form1 parent;
public Form2(Form1 parentIn)
{
parent = parentIn;
InitializeComponent();
}
void UpdateList()
{
newName = new List<String>();
for (int i = 1; i <= numericUpDown1.Value; i++)
{
if (i == 1)
newName.Add("1 duck");
else
newName.Add(i.ToString() + " ducks");
}
}
private void numericUpDown1_ValueChanged(object sender, EventArgs e)
{
UpdateList();
parent.UpdateCombo(newName);
}
}
我希望代码是自我解释的,如果不随意问。如果比我更有经验的人会检查并批准它,那也会更好。
答案 1 :(得分:0)
从父母到孩子发送东西时非常容易。当你向另一个方向前进时,你通常最好设置“事件处理”,允许值“被传回”。
我不确定这是“最佳”教程,但它涵盖了使用委托在表单之间传递信息的“事件处理”:http://www.codeproject.com/KB/cs/PassDataWinForms.aspx。我认为,当你自己编写代码时,开始理解事件处理是如何工作的,而不是依赖双击设计器优点中的表单元素,这将是一个好的地方。