C#如何添加类的标签以形成控件

时间:2016-12-27 02:59:14

标签: c# class menu controls

我正在制作菜单课,让我轻松控制菜单 为便于理解,请查看下图。

enter image description here


如果我想制作这些菜单,我会创建菜单类并在课程中添加7个菜单,设置文本,设置颜色,设置位置...

一切都很好,但我的控件有问题 当我在Form1.cs中创建菜单类时,我不知道如何将标签添加到Form1的控件中。
我想要的方法是让课程得到表格的控制,并在课堂上添加标签 那么有没有办法在其子类中获取父类的控件?


主类示例

namespace Tetris
{
    public partial class Form_Start : Form
    {
        public Form_Start()
        {
            InitializeComponent();
            Menu menu = new Menu(10,postion_x,postion_y,str_arr);
        }
    }
}

菜单类示例

class menu
    {
        Label[] lab;
        List<string> str = new List<string>();
        int num, start_x, start_y, x_interval, y_interval;
        public create_menu(int value, int start_x, int start_y, int x_interval, int y_interval, List<string> str)
        {
            num = value;
            lab = new Label[num];
            start_x = this.start_x;
            start_y = this.start_y;
            x_interval = this.x_interval;
            y_interval = this.y_interval;
            str = this.str;
            int count = 0;
            foreach (Label label in lab)
            {
                label.Text = str[count];
                label.Location = new System.Drawing.Point(start_x + x_interval * count, start_y + y_interval * count);
                count++;
                Parent.Controls.Add(label); // <- I want to know this code
            }
        }
}

如果您有任何更好的想法或了解其他方式,请告诉我。谢谢



------------------------------------------------- <登记/> 通过将控件发送到类,我将标签添加到表单中。

create_menu menu = new create_menu(3, 20, 20, 0, 10, menu_str, this.Controls);
public create_menu(int index, int start_x_, int start_y_, int x_interval_, int y_interval_, List<string> str_, Control.ControlCollection ctrl)
{ ctrl.Add(label[i]); }

有没有更好的想法?

1 个答案:

答案 0 :(得分:0)

你需要稍微调整你的课程。只需从System.Windows.Forms.Control类继承您的菜单类,如下所示:

class menu : System.Windows.Forms.Control
{
        //....your entire code for menu class
}

现在每当您将菜单添加到窗体Form1时,您都可以使用this.Parent(用于获取其父控件)或this.ParentForm(用于获取其父窗口窗体)访问其父窗口句法。您可以在menu类中定义的任何方法中使用此语法。例如。我可以用你的一种方法做这样的事情:

public create_menu(int value, int start_x, int start_y, int x_interval, int y_interval, List<string> str)
{
    //other code
    Console.WriteLine(this.Parent.Name);
}

希望这有帮助!