从主窗体中在UserControl中定义的清除var

时间:2013-05-06 18:16:18

标签: c# .net c#-4.0 user-controls

我有一个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

2 个答案:

答案 0 :(得分:1)

您始终可以访问您定义的任何变量,以及放置在您放置UserControl的所有位置UserControl上的任何控件。

请确保您已经制作了变量public并通过public properties公开了您的变量,即

假设您在UserControl上为名称保留了TextBox。要在外面使用它,您必须通过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;   
   }
}

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

答案 1 :(得分:1)

您需要公开一个属性,然后从主窗体访问usercontrol-instance上的该属性:

<强>用户控件

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

主要表单

MyUserControl.BD = new List<string>();