我是C#的新手。我正在使用 Windows 窗体,我有 Form1,其中包含 2 个按钮(一个用于在运行时创建用户控件,另一个用于在运行时创建用户控件上的按钮)。
此代码创建用户控件,并在单击按钮时add_UserControl
FlowLayoutPanel
(以组织按钮位置)。然后,如果您单击Add_Buttons
按钮,它会在FlowLayoutPanel
上创建按钮,并且这一切都在运行时完成。
现在Form1
假设我创建了用户控件和FlowLayoutPanel
,然后创建了 5 个按钮,如何将此用户控件的属性/详细信息及其FlowLayoutPanel
和 5 个按钮保存在 SQL 数据库中,以便以后在运行程序时使用它们?我一直在想一个想法,我上网了,但没有运气。
知道吗?请帮助我。谢谢
public partial class Form1 : Form
{
FlowLayoutPanel FLP = new FlowLayoutPanel();
UserControl uc = new UserControl();
private void add_UserControl_Click(object sender, EventArgs e)
{
uc.Height = 700;
uc.Width = 900;
uc.BackColor = Color.Black;
Controls.Add(uc); //add UserControl on Form1
FLP.Height = 600;
FLP.Width = 800;
FLP.BackColor = Color.DimGray;
uc.Controls.Add(FLP); // add FlowLayoutPanel to UserControl
}
private void Add_Buttons_Click(object sender, EventArgs e)
{
//####### add buttons to FlowLayoutPanel ############
Button dynamicButton = new Button();
dynamicButton.Height = 50;
dynamicButton.Width = 200;
dynamicButton.BackColor = Color.Green;
dynamicButton.ForeColor = Color.Blue;
dynamicButton.Text = "";
FLP.Controls.Add(dynamicButton);
}
}
好的,首先你需要创建一个类,该类将表示具有所需属性的按钮之一。
class MyButton
{
public string ButtonText {get;set;}
}
每次单击并创建按钮时,实际上都会创建此类的对象并将其添加到集合或列表中。然后,您将有一些其他代码监视集合,并且每次它获得新条目时,它都会创建一个新按钮并将其 Button 文本设置为 text 属性。当列表成员消失时,它会删除该按钮。
如果您需要记住更多属性(颜色、大小、字体等),您也可以将它们添加到类中。如果您还需要其他控件,....您始终可以创建通用父控件。
简单。
如果您希望能够重新加载它,则可以将 MyButton 类定义为可序列化并将其存储在 xml 文件中,并在生成时重新加载它。
您应该关注 WPF 及其 MVVM 模式。它与它非常相似。还要看看命令模式,当它来到这个时,有用的模式。
您可以在一个SQL表中记住FlowLayoutsPanel,在另一个表中,您可以保存属于这些FlowLayoutPanel的按钮。
在表单加载或应用程序加载时,您可以检查 SQL 数据库中是否已经存在 FlowLayoutPanel,并且确实存在相应的按钮,如果是,则创建它们,否则什么都不做。