【问题标题】:C# hide form controls using base form classC# 使用基表单类隐藏表单控件
【发布时间】:2018-07-05 16:34:50
【问题描述】:

我有一些具有菜单控件的表单。此菜单控件应根据登录系统的用户可见或不可见。我可以使用这个代码块隐藏这个控件:

    public myForm()
    {
        InitializeComponent();
        myMenu.Visible = CheckUserRole();
    }

完美运行。但是我有几种具有相同代码结构和菜单控件的表单。如何创建一个基本表单并将这个结构继承到我拥有的每个表单?

我创建了一个名为 BaseForm 的基本表单,带有一个菜单控件,然后我在我的表单中调用它,如下所示:

public partial class myFrom : BaseForm
{
    public myForm() : base()
    {
        InitializeComponent();
    }...

但我不知道如何处理我的基类?

您能告诉我如何在我的项目中应用这种结构吗?

谢谢。

【问题讨论】:

  • 为什么你的基类中没有myMenu.Visible = CheckUserRole();?正如您所描述的那样,这似乎有效。
  • @Jamiec 我做到了!但这并没有解决我的问题。
  • 为什么它没有解决你的问题,发生了什么?你期望会发生什么?你还尝试了什么?

标签: c# forms inheritance form-control


【解决方案1】:

我原以为这会解决它:

public partial class BaseForm : Form
{
    public BaseForm()
    {
        InitializeComponent();
    }

    private void BaseForm_Load(object sender, EventArgs e)
    {
        button1.Visible = DateTime.Now.Millisecond % 2 == 0;
    }
}

public partial class MyForm : WindowsFormsApp7.BaseForm
{
    public MyForm() : base()
    {
        InitializeComponent();
    }

    private void MyForm_Load(object sender, EventArgs e)
    {
        button3.Visible = !button1.Visible;
    }
}

【讨论】:

  • MyForm 组件呢?我怎样才能加载它们?此代码加载BaseForms 组件。
  • @Badiparmagi - 是的,你是对的。我忘了是private void
  • @Badiparmagi - 当您开始继承表单时,您开始失去设计者的支持,因此习惯手动编辑表单通常是个好主意。
  • 在问这个问题之前我做了完全相同的事情,但没有运气。我想我会在初始化组件后检查每个表单中的角色。感谢您的努力。
  • @Badiparmagi - 我刚刚在BaseForm 的构造函数中使用button1.Visible = DateTime.Now.Millisecond % 2 == 0; 测试了我的代码,它就像一种享受。你一定在做一些不同的事情。
猜你喜欢
  • 2019-11-05
  • 2018-02-02
  • 1970-01-01
  • 2010-12-16
  • 2022-01-06
  • 1970-01-01
  • 2013-04-29
  • 2016-01-15
  • 2013-08-20
相关资源
最近更新 更多