我是C#和OOP的新手,试图创建一个数学事实战舰棋盘游戏,并使用自定义类来创建棋盘空间。我的想法是创建一个对象并将其放入一个面板,然后在该面板中放置:
然后将这些碎片加载到2D阵列中。但是,当我在表格中将棋子添加到棋盘(面板)时,我看不到它们。所以我创建了一个更简单的测试,只是一个为表单添加标签的自定义类。没运气。我添加了一些代码来动态创建一个标签,告诉我“这个”是否有孩子。它说的是真的,除非我注释掉添加行。如果有人可以指出我做错了什么,或者至少给我一个链接到在线解释的地方,我真的很感激。我搜索并搜索过。我在Visual Studio Express 2013中工作.Intellisense表示一切正常。感谢
namespace testing_custom_class
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Class1 myLabel = new Class1();
this.Controls.Add(myLabel);
myLabel.Show();
Label childrenTest = new Label();
childrenTest.Text = this.HasChildren.ToString();
this.Controls.Add(childrenTest);
}
}
}
//and from the class1.cs
...
using System.Windows.Forms;
namespace testing_custom_class
{
class Class1 : System.Windows.Forms.Control
{
public Class1()
{
Label label1 = new Label();
label1.Text = "Hello World!";
}
}
}
答案 0 :(得分:1)
在Class1
代码中,您继承自Control
。如果要扩展Panel
的功能,请从Panel
继承。
此外,这两个应该用类级别范围声明,而不是在函数内声明。
Class1 myLabel = new Class1();
Label childrenTest = new Label();
答案 1 :(得分:0)
找到解决方案!我需要在自定义类中添加标签到“this”。我也改变了
class Class1 : System.Windows.Forms.Control
到
class Class1 : System.Windows.Forms.Label
然后我添加了以下行:
this.Controls.Add(label1);
在自定义Class1的末尾。谢谢大家!