Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何添加类';s标签形成';s控制_C#_Class_Menu_Controls - Fatal编程技术网

C#如何添加类';s标签形成';s控制

C#如何添加类';s标签形成';s控制,c#,class,menu,controls,C#,Class,Menu,Controls,我正在制作一个菜单类,使我能够轻松地控制菜单 为便于理解,请查看下图 如果我想制作这些菜单,我将创建我的菜单类,并向该类添加7个菜单,设置文本、设置颜色、设置位置…… 一切正常,但我的控制有问题。 在Form1.cs中创建菜单类时,我不知道如何将标签添加到Form1的控件中。 我的想法是让类获得表单的控制并在类中添加标签。 那么,有没有办法在父类的子类中获取父类的控件呢 像 主类示例 namespace Tetris { public partial class Form_Start

我正在制作一个菜单类,使我能够轻松地控制菜单
为便于理解,请查看下图


如果我想制作这些菜单,我将创建我的菜单类,并向该类添加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
            }
        }
}
菜单类示例

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
            }
        }
}
类菜单
{
标签[]实验室;
List str=新列表();
int num,start_x,start_y,x_interval,y_interval;
公共创建菜单(int值,int开始,int开始,int开始,int x间隔,int y间隔,列表str)
{
num=值;
lab=新标签[num];
start_x=this.start_x;
start_y=this.start_y;
x_间隔=此.x_间隔;
y_间隔=此.y_间隔;
str=this.str;
整数计数=0;
foreach(实验室标签)
{
label.Text=str[count];
label.Location=新系统.Drawing.Point(开始x+x\U间隔*计数,开始y+y\U间隔*计数);
计数++;

Parent.Controls.Add(label);//您需要稍微调整一下类。只需从
System.Windows.Forms.Control
类继承菜单类,如下所示:

class menu : System.Windows.Forms.Control
{
        //....your entire code for menu class
}
现在,无论何时将菜单添加到windows窗体
Form1
,都可以使用
this.parent
(用于获取其父控件)或
this.ParentForm
(用于获取其父windows窗体)访问其父窗体语法。您可以在
菜单
类中定义的任何方法中使用此语法。例如,我可以在您的一个方法中执行类似操作:

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);
}
public create_菜单(int value、int start_x、int start_y、int x_interval、int y_interval、List str)
{
//其他代码
Console.WriteLine(this.Parent.Name);
}

希望这有帮助!

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

class menu : System.Windows.Forms.Control
{
        //....your entire code for menu class
}
现在,无论何时将菜单添加到windows窗体
Form1
,都可以使用
this.parent
(用于获取其父控件)或
this.ParentForm
(用于获取其父windows窗体)访问其父窗体语法。您可以在
菜单
类中定义的任何方法中使用此语法。例如,我可以在您的一个方法中执行类似操作:

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);
}
public create_菜单(int value、int start_x、int start_y、int x_interval、int y_interval、List str)
{
//其他代码
Console.WriteLine(this.Parent.Name);
}

希望这有帮助!

如果我理解正确-您有一个菜单控件,上面几乎没有标签,可以显示菜单类型的结构。当您将该菜单控件的实例添加到表单
form1
上时,菜单控件上的所有标签都将添加到表单中。我是否正确解释了它?在这种情况下,您的菜单控件将我将是菜单标签的父级,而form1将是菜单控件的父级。那么,您在这里面临的确切问题是什么?@RBT是的,但我想知道类如何获得其父级的控制权如果我没有弄错的话-您有一个菜单控件,上面几乎没有标签,以显示菜单类的结构。当您将该菜单控件的实例添加到表单
form1
那么菜单控件上的所有标签都将添加到表单中。我是否正确解释了它?在这种情况下,菜单控件将是菜单标签的父级,而form1将是菜单控件的父级。那么,您在这里面临的确切问题是什么?@RBT是的,但我想知道类如何获得对其父级的控制