0

我有 Form1.cs,它有两个按钮,分别是“添加”和“编辑”。

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

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

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

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

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

我缺少这种类型的对话框是否有特定的方法?

4

5 回答 5

1

您是否只想加载用户在此处输入的最后一个值?

例如,他在文本框上写“文本”并选择“A”组合框,下次打开它时应该预先选择它吗?

编辑:然后不要使用 Form.Close 关闭它,而是让它隐藏起来。Form1.隐藏。下次打开时,值仍会保存。除非申请已经关闭。另一方面,用户可能会单击窗口窗体中的关闭按钮。您可以通过属性使其“不可点击”,也可以使用我认为的事件对其进行配置。

于 2012-04-23T14:34:10.320 回答
1

您的对话表单应该有一个包含您想要的属性/字段的字段,例如一个业务对象的副本。然后,根据您想要的行为,在对话框构造函数或 Load 中传递或初始化它。从那里您可以创建/初始化您的控件。

如果您想要一个内置系统,您可能想看看 PropertyGrid(您可以将其嵌入对话框中(以适合您的问题))

于 2012-04-23T14:36:27.863 回答
1

创建类,它将存储您要传递的值(我们称之为Foo)。

Form2那么应该有一个属性。在属性的 setter 中,设置控件:

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,这会将值从控件保存回该对象。

For every control I would have a field in Foo class, eg. string for textboxes, bool for checkboxes and enum or int for comboboxes (where integer value would equal selected index).
Alternatively, you could use Dictionary class instead and have key and value pair for every control.

You can also have some enum, if your form looks or behaves differently in New and Edit mode.

于 2012-04-23T14:46:17.090 回答
0

在 Form2 上创建一个方法,您将在其中将值设置为 textBox 并在组合框中选择一个项目。在实例化 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
    }
于 2012-04-23T14:29:40.820 回答
0
public Form2(string form1Textbox)
{
    InitializeComponent();
    form2Textbox.Text = form1Textbox;
}
于 2012-04-23T14:37:55.840 回答