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是的,但我想知道类如何获得对其父级的控制