1

I have a little issue, I have form1 in which I got button1 and button2 and I got form2 which I'm able to open with both buttons. Button1 serves as opening form2 and inserting details into SQL DB which can be seen in form1 datagridview. Button2 opens the same form2 but it selects data from form1 and automatically is filling them into textboxes in form2 - it is edit-like.

When I created the button2 (edit button) a problem occured, because form2 didn't knew from which button the was opened.

I thought that everytime I open the form2 I should pass integer so when form2 is loaded it should decide from which button it was opened and act according to that.

Would someone help me solve this thing out?

Thanks

4

4 に答える 4

2

別の「モード」でフォームを開くには、フォーム 2 のコンストラクターを変更する必要があります。

ちょうどこのような :

Form2.cs

    public Form2(bool fromButton2)
    {
        InitializeComponent();
        //Do whatever with that bool
    }

そして、次のようにフォームを開きます。

Form1.cs

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(false);
        frm.Show();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Form2 frm = new Form2(true);
        frm.Show();
    }

次に、 fromButton2 bool を使用してロジックを適用できます

于 2013-07-04T12:50:30.867 に答える
1

文字列、呼び出し元のボタンの名前をパラメーターとして受け取る新しいコンストラクターを定義し、form2from ボタンはボタンの名前をform2パラメーターとしてに送信し、form2ButtonNameで呼び出し元のボタンを検出するための名前パラメーターを確認します。

于 2013-07-04T12:49:34.020 に答える
1

個人的には、ボタン、テキスト、またはブール値を渡すのではなく、明示的に列挙型を作成します。これをコンストラクターに渡すと、編集モードか表示モードかがわかります。(これは、新しい「モード」が必要になった場合に適用されます) 例

 public enum EditingType
    {
        Display,
        Editing
    }

    public class Form2
     {
        private EditingType _editingType;

        public Form2(EditingType editingType)
        {
            _editingType = editingType;
        }

        public void DoSomething()
        {
            if (_editingType == EditingType.Display)
            {
                // display mode
            }

            if (_editingType == EditingType.Editing)
            {
                // editing mode
            }
        }
     }

そして呼び出す - Form2 form2 = new Form2(EditingType.Editing); (処理しているボタンのクリックに応じて、編集または表示を渡します)

于 2013-07-04T12:54:40.360 に答える