将 Winform 定义为抽象不允许编辑派生的 WinForms 的 UI
本文关键字:派生 WinForms UI 编辑 不允许 Winform 定义 抽象 | 更新日期: 2023-09-27 18:33:44
我有一个基本的wform和2个派生的winforms。基本信息包含标签、文本框和保存按钮。每个派生类都包含其他标签和文本框。SaveButton_Click事件正在调用 Save 方法。我在基类中将 Save 方法定义为抽象方法,因此我也将基本 winform 定义为抽象方法。
这是我的代码:
public abstract partial class BaseRowInfo : Form
{
public BaseRowInfo()
{
InitializeComponent();
}
private void SaveButton_Click(object sender, EventArgs e)
{
Save();
}
protected abstract void Save();
}
public partial class EditableRowInfoFrm : BaseRowInfo
{
public EditableRowInfoFrm():base()
{
InitializeComponent();
}
protected override void Save()
{
// TODO
}
}
public partial class ReadOnlyRowInfoFrm : BaseRowInfo
{
public ReadOnlyRowInfoFrm ():base()
{
InitializeComponent();
}
protected override void Save()
{
// TODO
}
}
一旦我将基类定义为抽象,我就无法再编辑派生表单的 UI。我将基类定义为抽象的事实是否错误?如果可以将其定义为抽象,解决方案是什么?
不,你的方法没有错。Visual Studio IDE只是不喜欢你在编辑器中使用抽象类。
我可以从微软的角度来看,这很难实现。您可能会从基类更改某些内容。我不确定他们将如何实现一个以体面的方式工作的设计器。
有两种选择:
- 为每个
- 派生类手动编写 UI 代码;
- 添加一个控件,可能实现用于通信的通用接口,您可以将其添加到派生窗体中。可以使用设计器创建该控件。
如果您希望能够编辑派生类中抽象类的 UI 控件,请使用"受保护"访问修饰符而不是"private"标记这些控件。