2

NewForm新しいフォームのボタンがクリックされたときに、メインフォームで何かをする必要があります。

    public Newform()
        {
            InitializeComponent();
        }

        private void cancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void dontsave_click(object sender, EventArgs e)
        {

        }
    }
}

ボタンが dontsaveあり、クリックしたときにメインフォームのテキストボックスをクリアして新しいフォームを閉じる必要があります。

4

4 に答える 4

1

NewForm を作成するときは、次のいずれかを行う必要があります。

1)親フォームを受け入れるオーバーロードコンストラクターを作成します2)親フォームへの参照を保持するパブリックプロパティを持ち、最後にNewFormを表示します

次に、「dontsave」を押すと、親フォームを参照してテキストボックスをクリアし、テキストボックスプロパティがパブリックであるか、できればメソッド呼び出しであることを確認します (他のフォームから UI コントロールへのフルアクセスを許可しないでください!)

于 2013-11-13T23:14:57.477 に答える
1

MainForm.cs で

public partial class MainForm : Form
{
    NewForm frm2;

    public MainForm()
    {
        InitializeComponent();

        frm2 = new NewForm();
        frm2.Show();
        frm2.dontSaveButton += new DontSaveButtonHandler(frm2_dontSaveButton);
    }

    void frm2_dontSaveButton()
    {
        textBox1.Clear();
        frm2.Close();

    }

}

NewForm.cs で

public delegate void DontSaveButtonHandler();

public partial class NewForm : Form
{
    public event DontSaveButtonHandler dontSaveButton;

    public NewForm()
    {
        InitializeComponent();
    }

    private void btnDontSave_Click(object sender, EventArgs e)
    {
        if (dontSaveButton != null)
        {
            dontSaveButton();
        }
    }
}

私の答えは、あるべき姿だと思います。デリゲートを使用することをお勧めします。

于 2013-11-14T01:34:59.140 に答える