【发布时间】:2017-05-11 08:16:40
【问题描述】:
我正在制作菜单类,让我可以轻松控制菜单
为了便于理解,请看下图
如果我想制作这些菜单,我会创建我的菜单类并向该类添加 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]); }
有没有更好的想法?
【问题讨论】:
-
如果我没听错 - 你有一个菜单控件,上面有几个标签来显示菜单结构。当您将该菜单控件的实例添加到表单
form1时,菜单控件上的所有标签都将添加到您的表单中。我是否正确解释了它?在这种情况下,您的菜单控件将是菜单标签的父级,而 form1 将是菜单控件的父级。那么您在这里面临的具体问题是什么? -
@RBT 是的,但我想知道类如何控制它的父级