首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于win apps c#中sdi窗口的基本窗体

关于win apps c#中sdi窗口的基本窗体
EN

Stack Overflow用户
提问于 2011-06-14 21:58:56
回答 2查看 223关注 0票数 1

我有一个MDI表单和几个SDI表单。现在,我将为所有sdi窗体创建一个基本窗体,并编写一个函数,该函数将启用和禁用sdi窗体上的控件,但我不会从子sdi窗体显式调用该函数。基本上我所有的sdi都会扩展这个基本表单。所以请告诉我,有没有办法在我的sdi窗体的构造函数调用完成后,自动调用基本窗体中的特定函数。

另一个问题是,我是否可以从基本窗体访问子窗体或sdi窗体的控件,从而可以启用和禁用它。所以请告诉我两种方法,一种是自动调用基本表单的函数,以及如何编写代码,因为在sdi中我不会像base.funcname()那样显式地调用该函数,另一种方法是如何从基本表单访问控制sdi表单。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-15 02:20:14

在dervied类的构造函数中,您可以调用基类上的方法。

代码语言:javascript
复制
public class MyBaseForm : Form
{
    protected void SomeIntitializationMethod() {...}
}

public class MyDerivedForm : MyBaseForm
{

    public MyDerivedForm()
    {
        base.SomeInitializationMethod();
    }
}

在没有显式调用派生构造函数的情况下,不能让基类中的内容在派生构造函数执行后执行,因此您可能仅限于使用此方法。

对于第二个问题,您始终可以访问基本窗体上的Controls集合,因为它是form对象的一部分。

票数 1
EN

Stack Overflow用户

发布于 2011-06-14 23:33:13

它“听起来”像是您正在尝试使子SDI窗体与父基本窗体对话,在这种情况下,请尝试使用事件:

在子SDI表单中:

代码语言:javascript
复制
public partial class ChildForm : Form
{
  public delegate void DisableBaseHandler(object sender, EventArgs e);
  public event DisableBaseHandler DisableBase;

  public ChildForm()
  {
    InitializeComponent();
  }

  private void Form2_Load(object sender, EventArgs e)
  {
    OnDisableBase();
  }

  private void OnDisableBase()
  {
    if (DisableBase != null)
      DisableBase(this, new EventArgs());
  }
}

在父基窗体中:

代码语言:javascript
复制
public partial class BaseForm : Form
{
  private ChildForm _OtherForm;

  public BaseForm()
  {
    InitializeComponent();
  }

  private void button1_Click(object sender, EventArgs e)
  {
    if (_OtherForm == null || _OtherForm.IsDisposed)
    {
      _OtherForm = new ChildForm();
      _OtherForm.DisableBase += new ChildForm.DisableBaseHandler(DisableMe);
    }
    _OtherForm.Show();
  }

  private void DisableMe(object sender, EventArgs e)
  {
    //Disable Base Controls...
    button1.Enabled = false;
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6344686

复制
相关文章

相似问题

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