当我单击另一个按钮时,是否可以更改按钮的功能?

时间:2021-04-21 07:06:26

标签: c# .net-2.0 windows-forms-designer

假设我有一个添加和编辑按钮。这两个按钮显示相同的表单并在表单内具有相同的保存按钮。当我在单击添加按钮后单击保存时,它会插入到数据库中,当我在单击编辑按钮后单击保存按钮时,它会更新记录。这是可能的还是我必须为此创建一个新的类似表单?

1 个答案:

答案 0 :(得分:0)

您应该有一个定义表单的类,其中包含一组字段和一个保存按钮。

表单上的保存按钮不会直接插入数据,而是调用用户输入的数据的事件。

然后您的应用程序创建此表单的一个实例,注册一个事件处理程序并执行它想要的操作(例如插入或更新)

一个非常简单的例子(伪代码):

class FormData {
    public string Field1 { get; set; }
    public string Field2 { get; set; }
}

class Form {
    public Form(FormData data) {
        //...

        field1.Text = data.Field1;
        field2.Text = data.Field2;
    }

    TextField field1;
    TextField field2;
    //...

    public event EventHandler<FormData> Saved;

    void OnButtonClicked() {
        var data = new FormData();
        data.Field1 = field1.Text;
        data.Field2 = field2.Text;
        
        if (Saved != null)
            Saved.Invoke(this, data);
    }
}

class Application {
    void Add() {

        //An empty data, since you are creating a new one
        var data = new FormData();

        //Show your form
        var form = new Form(data);
        form.Saved += OnAddData;
        form.Show();
    }
    void OnAddData(object sender, FormData data) {
        //INSERT into database    
    }

    void Edit() {

        //A data pre-filled with the fields of your row
        var data = new FormData();
        data.Field1 = yourDataFromYourRow1;
        data.Field2 = yourDataFromYourRow2;

        //Show your form
        var form = new Form(data);
        form.Saved += OnEditData;
        form.Show();
    }
    void OnEditData(object sender, FormData data) {
        //UPDATE into database    
    }
}