C# VSTO Winform Control 从动态创建的窗体访问控件
C# VSTO Winform Control Access controls from dynamically created Form
我有一个 Excel 加载项调用一个 Windows 具有列表框的表单。在显示表单之前,我想根据 Excel 中的值动态填充 ListBox
。
Winform 如下所示:
功能区中的按钮单击如下所示:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Form1 fm = new Form1();
System.Windows.Forms.ListBox lbx = fm.Controls.Find("listBox1", true).FirstOrDefault() as System.Windows.Forms.ListBox;
lbx.Items.AddRange(new object[] { 1, 2, 3, 4, 5 });
fm.Show();
}
是
System.Windows.Forms.ListBox lbx = fm.Controls.Find("listBox1", true).FirstOrDefault() as System.Windows.Forms.ListBox;
访问 ListBox
并向其添加 Item
的最佳方式?
或者还有其他方法吗?
根据 Chetan 的建议:
属性 :
public object[] ListBoxData
{
set
{
listBox1.Items.AddRange(value);
}
}
按钮点击的变化:
Form1 fm = new Form1();
fm.ListBoxData = new object[] { 1, 2, 3, 4, 5 };
fm.Show();
在您的方案中,由于每次要显示它时都会创建一个新的 Form1 实例,并且由于它是自定义表单,所以我只需修改表单的构造函数以接受输入数据。
public Form1(object[] ListBoxData)
{
...
listBox1.Items.AddRange(ListBoxData);
}
然后您可以在单击按钮时简单地传递值;
Form1 fm = new Form1(new object[] { 1, 2, 3, 4, 5 });
fm.Show();
我有一个 Excel 加载项调用一个 Windows 具有列表框的表单。在显示表单之前,我想根据 Excel 中的值动态填充 ListBox
。
Winform 如下所示:
功能区中的按钮单击如下所示:
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Form1 fm = new Form1();
System.Windows.Forms.ListBox lbx = fm.Controls.Find("listBox1", true).FirstOrDefault() as System.Windows.Forms.ListBox;
lbx.Items.AddRange(new object[] { 1, 2, 3, 4, 5 });
fm.Show();
}
是
System.Windows.Forms.ListBox lbx = fm.Controls.Find("listBox1", true).FirstOrDefault() as System.Windows.Forms.ListBox;
访问 ListBox
并向其添加 Item
的最佳方式?
或者还有其他方法吗?
根据 Chetan 的建议: 属性 :
public object[] ListBoxData
{
set
{
listBox1.Items.AddRange(value);
}
}
按钮点击的变化:
Form1 fm = new Form1();
fm.ListBoxData = new object[] { 1, 2, 3, 4, 5 };
fm.Show();
在您的方案中,由于每次要显示它时都会创建一个新的 Form1 实例,并且由于它是自定义表单,所以我只需修改表单的构造函数以接受输入数据。
public Form1(object[] ListBoxData)
{
...
listBox1.Items.AddRange(ListBoxData);
}
然后您可以在单击按钮时简单地传递值;
Form1 fm = new Form1(new object[] { 1, 2, 3, 4, 5 });
fm.Show();