猿问

C# VSTO Winform Control 从动态创建的表单访问控件

我有一个Excel插件,它调用一个带有列表框的 Windows 窗体。在显示表单之前,我想ListBox根据Excel 中的值动态填充表单

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和添加Items的最佳方式?

或者还有其他方法吗?


holdtom
浏览 321回答 2
2回答

森林海

在您的场景中,由于您每次希望显示它时都会创建一个新的 Form1 实例,并且由于它是一个自定义表单,因此我将简单地修改表单的构造函数以接受输入数据。public Form1(object[] ListBoxData){   ...   listBox1.Items.AddRange(ListBoxData);}然后,您可以在单击按钮时简单地传递值;Form1 fm = new Form1(new object[] { 1, 2, 3, 4, 5 });fm.Show();

蝴蝶不菲

根据 Chetan 的建议: 属性: public object[] ListBoxData        {            set            {                listBox1.Items.AddRange(value);            }        }按钮点击的变化: Form1 fm = new Form1();            fm.ListBoxData = new object[] { 1, 2, 3, 4, 5 };            fm.Show();
随时随地看视频慕课网APP
我要回答