我有Form1.cs,它有两个按钮,分别是“ADD”和“EDIT”。
单击“添加”会显示对话框Form2.cs。
Form2有一个TextBox和一个ComboBox。假设我们在文本框中输入值“A”并从ComboBox中选择“A”。 然后关闭Form2。
然后在Form1上单击EDIT按钮时,Form2应在文本框中显示“A”,在ComboBox中选择“A”。
这是一个简单的解释。我使用的真实形式有大约10-12个不同的控件,包括组合框,复选框,文本框等。
我的主要疑问是我们在何处以及如何保存这些控制值。
我缺少这种类型的DialogBoxes的具体方法吗?
答案 0 :(得分:1)
您是否只想加载用户输入的最后一个值?
例如,他在文本框中写入“text”并选择“A”组合框,下次打开它时应该预先选择它?
编辑:然后使用Form.Close关闭它,而不是使它隐藏。 Form1.Hide。下次打开时,值仍会保存。除非申请已经结束。另一方面,用户可能会单击窗体中的关闭按钮。您可以通过礼仪使其“无法点击”,或者只使用我认为的事件进行配置。
答案 1 :(得分:1)
您的对话框表格应该包含一个包含所需属性/字段的字段,例如,复制一个业务对象。然后根据所需的行为传递它或在对话框构造函数或Load中初始化它。从那里你可以创建/初始化你的控件。
如果你想要一个内置系统,你可能想看看PropertyGrid(你可以嵌入一个对话框中(以适合你的问题))
答案 2 :(得分:1)
创建类,它将存储您想要传递的值(让我们称之为Foo
)。
Form2
应该有一个属性。在属性的setter中,设置controls:
public partial class Form2 : Form
{
private Foo _bar;
public Foo Bar
{
set
{
_bar = value;
//set your controls here
}
}
在“编辑”按钮上,设置如下属性:
Form2 form2 = new Form2();
form2.Bar = bar; //bar contains values to edit
然后在Form2
上放置一个“保存”按钮,可以将值从控件保存回此对象。
对于每个控件,我会在Foo
类中有一个字段,例如。 string
用于文本框,bool
用于复选框,enum
或int
用于组合框(其中整数值等于所选索引)。
或者,您可以使用Dictionary
类,并为每个控件使用键和值对。
如果您的表单在“新建”和“编辑”模式下的外观或行为不同,您也可以拥有一些enum
。
答案 3 :(得分:0)
在Form2上创建一个方法,您可以在其中将值设置为textBox并在comboBox中选择一个项目。在实例化form2之后和显示之前调用此方法。 例如:
public Form2()
{
InitializeComponent();
comboBox1.Items.AddRange(new string[] { "a", "b", "c" });//fill comboBox your way on a loading time
}
public void UpdatingControls(string a, string b)
{
textBox1.Text = a;
comboBox1.SelectedText = b;
}
//on form2;
Form1 f2;
private void OpenForm2Button_Click(object sender, EventArgs e)
{
f2 = new Form2();
f2.UpdatingControls("a", "b"); //a will go into textBox, b will be choosen in comboBox
}
答案 4 :(得分:0)
public Form2(string form1Textbox)
{
InitializeComponent();
form2Textbox.Text = form1Textbox;
}