首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在C#中更改运行时用户控件的属性?

如何在C#中更改运行时用户控件的属性?
EN

Stack Overflow用户
提问于 2018-08-15 09:49:21
回答 4查看 836关注 0票数 0

我是C#的新手。

我的应用程序包含主窗体和一些用户控件。当我开始运行应用程序时,我希望名为"uc_MainMenu“的用户控件显示在主窗体中名为"panel2”的面板中。

代码语言:javascript
复制
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之外的所有按钮。我怎么才能做到这一点呢?

我试过这种方法,但不起作用。

代码语言:javascript
复制
foreach (Control ctrl in panel2.Controls)
 {
     if (ctrl.GetType() == typeof(Button))
         {
            ((Button)ctrl).Enabled = false;
         }
  }

我可以在uc_MainMenu中更改每个按钮的enabled属性,但如果是这样的话,无论何时切换用户控件,我都必须再次更改它们。这就是为什么我在设计用户控件时将其enabled属性保留为true的原因。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2018-08-15 10:53:16

在用户控件内创建属性:

代码语言:javascript
复制
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使用的任何地方使用此属性。

代码语言:javascript
复制
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;
}
票数 0
EN

Stack Overflow用户

发布于 2018-08-15 10:47:58

试试这个:

代码语言:javascript
复制
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。

票数 1
EN

Stack Overflow用户

发布于 2018-08-15 11:22:34

如果您的按钮在obj_uc_MainMenu中,则无法通过panels.Controls检索它。如果你想检索它们,你应该使用obj_uc_MainMenu.Controls。

我不知道您是如何定义用户控件obj_uc_MainMenu的,那么我建议您可以这样做:

代码语言:javascript
复制
     foreach (Control ctrl in obj_uc_MainMenu.Controls)
        {
            if (ctrl.GetType() == typeof(Button))
            {
                ((Button)ctrl).Enabled = false;
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51851879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档