0

我有一个 UserControl,我在其中定义了一些变量,并且还有一些组件,如按钮、文本框和其他一些组件:

private List<string> bd = new List<string>();
private List<string> bl = new List<string>();

可以从namespace WindowsFormsApplication1? 如何?如果我尝试这样做,private void recuperarOriginalesToolStripMenuItem_Click(object sender, EventArgs e)我会得到一个错误:

bl = new List<string>();
blYear.Enabled = true;
btnCargarExcel.Enabled = true;
filePath.Text = "";
nrosProcesados.Text = "";
executiontime.Text = "";
listBox1.DataSource = null;

这样做的正确方法是什么?

编辑:澄清 我正在寻找的是每次访问菜单项时清除值。对于 textBox 和其他组件,由于此处提出的建议,它可以工作,但对于 List,我不知道如何将其设置为 null

4

2 回答 2

1

You need to expose a property and then access that property on the usercontrol-instance from your main form:

UserControl

public List<string> BD {get; set;}

Main form

MyUserControl.BD = new List<string>();
于 2013-05-06T18:19:34.367 回答
1

您始终可以访问您定义的任何变量,您放置在您UserControl的所有这些地方的任何控件,您放置 UserControl 的地方。

只要确保,您已经制作了变量public并通过public propertiesie公开了您的控件

TextBox 假设您在 UserControl 上保留了一个名称。为了在外面使用它,你必须通过一个public property

public partial class myUserControl:UserControl
{
   public TextBox TxtName{ get{ return txtBox1;}}

   public ListBox CustomListBoxName
   {
      get
      {
         return ListBox1;
      }
      set
      {
         ListBox1 = value;
      }
   }

   public List<object> DataSource {get;set;}

} 

您可以在拖动此用户控件的表单上使用它,即

public partial form1: System.Windows.Forms.Form
{
   public form1()
   {
       InitializeComponent();
       MessageBox.Show(myUserControl1.TxtName.Text);

       MessageBox.Show(myUserControl1.CustomListBoxName.Items.Count);
       myUserControl1.DataSource = null;   
   }
}

类似地,您可以通过公共属性公开您的变量。这样,您还可以控制是否希望某些变量为只读或什么!

于 2013-05-06T18:18:32.577 回答