创建一个公用类来共享菜单控件
本文关键字:共享 菜单 控件 一个 创建 | 更新日期: 2023-09-27 18:19:06
我有一个程序,其中有几个不同的表单,其中大多数表单都有一些重复,特别是当涉及到表单操作控件时。我如何创建一个公共类,这样我就不会在每个表单上都有相同的代码,但仍然能够操纵单个表单。例如,下面的代码是一个ToolStripMenuControl,用于使表单始终在顶部。我有这段代码在其他形式重复4次,但我似乎不能围绕如何去创建一个共享控件我的头。我遗漏了什么?
public bool onTop = false;
public bool ToggleTop()
{
if (onTop)
{
onTop = false;
this.TopMost = false;
keepOnTopToolStripMenuItem.Checked = false;
return onTop;
}
if (!onTop)
{
onTop = true;
this.TopMost = true;
keepOnTopToolStripMenuItem.Checked = true;
return onTop;
}
else return onTop;
}
private void keepOnTopToolStripMenuItem_Click(object sender, EventArgs e)
{
ToggleTop();
}
您不需要单独存储bool onTop
。Form.TopMost
已经跟踪了完全相同的值。
对于这个简单的任务,您的代码太长了。您可以简单地重写为:
public class Form5 : Form {
CheckBox cbTopMost = new CheckBox { Text = "Top Most" };
public Form5() {
Controls.Add(cbTopMost);
cbTopMost.CheckedChanged += delegate {
this.TopMost = cbTopMost.Checked;
};
}
}
如果您真的需要,让您的所有表单扩展一个基本表单,例如:
在您的情况下,我会使用一些基本形式与共同实现。这意味着你将把这些代码移动到一些单独的基类中,并且所有带有此ToolStripMenuControl的表单都将从它派生。
protected class FormWithToolStripControl : Form
{
//Initialization of ToolStripControl will be somewhere here
//And here your common code for all forms derived from this class
public bool onTop = false;
public bool ToggleTop()
{
if (onTop)
{
onTop = false;
this.TopMost = false;
keepOnTopToolStripMenuItem.Checked = false;
return onTop;
}
if (!onTop)
{
onTop = true;
this.TopMost = true;
keepOnTopToolStripMenuItem.Checked = true;
return onTop;
}
else return onTop;
}
private void keepOnTopToolStripMenuItem_Click(object sender, EventArgs e)
{
ToggleTop();
}
}