自定义类不会显示视觉效果

时间:2013-12-07 17:00:51

标签: c# class label panel

我是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!";
        }
    }
}

2 个答案:

答案 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的末尾。谢谢大家!