我正在制作名为FMP的Windows窗体应用程序。 我有一个名为Form1的类,一个名为Panels的类。 然后我使用继承来制作具有不同属性的不同Panel。
这样做的原因是教师不希望我们初始化Form-class中的所有面板。
但我不知道该怎么做。在@Stackoverflow找到了一些东西,但他们也无法帮助我。
所有面板的尺寸,位置和颜色都相同。 (通过单击按钮,将出现另一个面板;)) 但是面板上的名称,控件和BackgroundImages是不同的。控件是这里最重要的方面。
问题是:
宽度和高度应等于表格中的Widht和Height。 编程C#最擅长什么?从Form1中的面板设置宽度和高度(但我保护它们)或在Panels类中声明表单并使用 Form1.Width?
我正确知道的代码:
Form1
public Form1()
{
InitializeComponent();
buttonsProperties();
panelsProperties();
}
private void button1_Click(object sender, EventArgs e)
{
panelsChanged(1);
}
private void button2_Click(object sender, EventArgs e)
{
panelsChanged(2);
}
private void panelsChanged(int panelNr)
{
if (panelNr == 1)
{
panel1.Visible = true;
panel1.Enabled = true;
panel2.Visible = false;
panel2.Enabled = false;
}
else if (panelNr == 2)
{
panel1.Visible = false;
panel1.Enabled = false;
panel2.Visible = true;
panel2.Enabled = true;
}
}
小组
class Panels
{
Form1 f = new Form1();
//Color Property
protected Color color { get; set; }
//Size
protected Int32 Width { get; set; }
protected Int32 Height{ get; set; }
//Location
protected Point Location { get; set; }
public Panels()
{
initMembers();
}
private void initMembers()
{
this.Width = f.Width;
this.Height = f.Height;
this.Location = new Point(0, 0);
}
}
public class Panel1 : Panels
{
//Nothing yet.
}
答案 0 :(得分:0)
使用名称Panels
作为每个面板的基类令人困惑:
System.Windows.Forms.Panel
类如果我是你,我会让您的基类派生自System.Windows.Forms.Panel
:
abstract class MyPanelBase : Panel
{
public MyPanelBase()
{
Dock = DockStyle.Fill;
}
}
class MyPanel1 : MyPanelBase
{
}
这样您就可以自动获取Panel
的行为(和属性),并允许您将其添加到父控件(在您的情况下,表单中)。
如果Panel
已经支持您想要的所有功能,您甚至可以跳过MyPanelBase
位并让MyPanel1
直接从Panel
派生。