【发布时间】:2019-12-01 13:29:39
【问题描述】:
我有一个包含文本框和日期选择器的用户控件。当表单加载时,动态生成用户控件并在表单中显示。 (EventComponent(用户控件))。
我想在用户单击保存按钮时获取这些用户控件值中的每一个。
public partial class InsertEventForm : Form
{
private int numberOfEvent;
public InsertEventForm(int numberOfEvent)
{
InitializeComponent();
this.numberOfEvent = numberOfEvent;
}
private void InsertEventForm_Load(object sender, EventArgs e)
{
EventComponent[] eventComponents = new EventComponent[(int)this.numberOfEvent];
int i = 0;
Button backBTN = new Button();
backBTN.Text = "Back";
backBTN.Location = new Point(0, 10);
backBTN.Size = new Size(50, 30);
this.Controls.Add(backBTN);
// generate user control dynamically here
for ( i = 0; i < eventComponents.Length; i++)
{
eventComponents[i] = new EventComponent();
System.Drawing.Point pLabel = new System.Drawing.Point(36, 50 + i * 280);
eventComponents[i].Location = pLabel;
eventComponents[i].Size = new System.Drawing.Size(358, 259);
this.Controls.Add(eventComponents[i]);
}
Button saveBTN = new Button();
saveBTN.Text = "Save";
saveBTN.Location = new Point(200, 50 + i * 280);
saveBTN.Size = new Size(100, 50);
this.Controls.Add(saveBTN);
saveBTN.MouseEnter += new System.EventHandler(this.SaveBTN_click);
}
private void SaveBTN_click(object sender, EventArgs e)
{
// need to retrieve value from user control
}
}
【问题讨论】:
-
问题在于您声明控件的位置。您在方法中声明了控件,因此您无法引用其他方法中的控件。因此,在全局空间中声明 backBTN,例如: Button backBTN;然后在 InsertEventForm_Load 方法中分配按钮: backBTN = new Button();
-
让你 eventComponents 和 saveBtn 控件的字段或属性,你可以在任何你想要的地方访问它。
-
我想知道你在用户控件中设置值的位置。
标签: c# winforms user-controls