在Windows窗体C#中创建编辑对话框

时间:2012-04-23 14:27:18

标签: c# winforms visual-studio visual-studio-2010 architecture

我有Form1.cs,它有两个按钮,分别是“ADD”和“EDIT”。

单击“添加”会显示对话框Form2.cs。

Form2有一个TextBox和一个ComboBox。假设我们在文本框中输入值“A”并从ComboBox中选择“A”。 然后关闭Form2。

然后在Form1上单击EDIT按钮时,Form2应在文本框中显示“A”,在ComboBox中选择“A”。

这是一个简单的解释。我使用的真实形式有大约10-12个不同的控件,包括组合框,复选框,文本框等。

我的主要疑问是我们在何处以及如何保存这些控制值。

我缺少这种类型的DialogBoxes的具体方法吗?

5 个答案:

答案 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用于复选框,enumint用于组合框(其中整数值等于所选索引)。
或者,您可以使用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;
}