我有一个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
答案 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>();