我是C#的新手。
我的应用程序包含主窗体和一些用户控件。当我开始运行应用程序时,我希望名为"uc_MainMenu“的用户控件显示在主窗体中名为"panel2”的面板中。
uc_MainMenu obj_uc_MainMenu = new uc_MainMenu();
private void frmMain_Load(object sender, EventArgs e)
{
this.panel2.Controls.Add(obj_uc_MainMenu);
}
它起作用了。
uc_MainMenu包含几个按钮: btnHeadmaster、btnTeacher、btnStudent、btnAttendance、btnExam和btnLogin。每次点击这些按钮都会显示相应的预定义用户控件。
这是我的问题。当表单加载时,我想禁用除btnLogin之外的所有按钮。我怎么才能做到这一点呢?
我试过这种方法,但不起作用。
foreach (Control ctrl in panel2.Controls)
{
if (ctrl.GetType() == typeof(Button))
{
((Button)ctrl).Enabled = false;
}
}
我可以在uc_MainMenu中更改每个按钮的enabled属性,但如果是这样的话,无论何时切换用户控件,我都必须再次更改它们。这就是为什么我在设计用户控件时将其enabled属性保留为true的原因。
发布于 2018-08-15 10:53:16
在用户控件内创建属性:
public bool MyButtonEnabled
{
get
{
return anyButtonButNo_btLogin.Enabled;
}
set
{
foreach (Control ctrl in this.Controls)
{
if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Name != "btLogin")
{
((Button)ctrl).Enabled = value;
}
}
}
}
现在,您可以在usercontrol使用的任何地方使用此属性。
uc_MainMenu obj_uc_MainMenu = new uc_MainMenu();
private void frmMain_Load(object sender, EventArgs e)
{
this.panel2.Controls.Add(obj_uc_MainMenu);
///this property will access the button inside that user control
obj_uc_MainMenu.MyButtonEnabled=false;
}
发布于 2018-08-15 10:47:58
试试这个:
foreach (Control ctrl in obj_uc_MainMenu.Controls)
{
if (ctrl.GetType() == typeof(Button) && ((Button)ctrl).Name != "btLogin")
{
((Button)ctrl).Enabled = false;
}
}
请注意,我将panel2更改为obj_uc_MainMenu。
发布于 2018-08-15 11:22:34
如果您的按钮在obj_uc_MainMenu中,则无法通过panels.Controls检索它。如果你想检索它们,你应该使用obj_uc_MainMenu.Controls。
我不知道您是如何定义用户控件obj_uc_MainMenu的,那么我建议您可以这样做:
foreach (Control ctrl in obj_uc_MainMenu.Controls)
{
if (ctrl.GetType() == typeof(Button))
{
((Button)ctrl).Enabled = false;
}
}
https://stackoverflow.com/questions/51851879
复制相似问题