0

私は私の手に小さな謎を持っています。ユーザーに何らかの入力を求めるフォームを作成し、入力を示す CancelOK MessageBox を表示します。ユーザーは、[送信] ボタンをクリックするか、Enter キーを押して、入力を入力できます。秘訣は、ユーザーがキャンセルした場合、MessageBox を閉じて、テキスト フィールド内の元のテキストを再び強調表示することです。コードは次のとおりです。

namespace WindowsFormsManualAdditions
{
    public partial class ManualAdditionsForm : Form
    {
        public ManualAdditionsForm()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                additionsAction();
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            additionsAction();
        }

        private void additionsAction()
        {
            DialogResult btn = MessageBox.Show(textBox1.Text + " additions are being added manually", "Confirm Manual Additions", MessageBoxButtons.OKCancel);
            if (btn == DialogResult.OK)
            {
                MessageBox.Show("Hellow World!");
                this.Close();
            }
            else
            {
                textBox1.SelectionStart = 0;
                textBox1.SelectionLength = textBox1.Text.Length;
            }
        }
    }
}

謎は、このフォームを実行すると、additionsAction() メソッドが呼び出されたときに 2 つの異なることが発生する可能性があることです。

1) ユーザーがデータを入力し、Enter キーを押してキャンセルを選択すると、メッセージ ボックスが消え、元のテキストが強調表示されます。

2) ユーザーがデータを入力し、[送信] ボタンをクリックして、キャンセルを選択すると、メッセージ ボックスは消えますが、元のテキストは強調表示されません。

しかし、どちらのアクションも同じメソッド、つまり additionalsAction() を呼び出します。

アドバイスをいただければ幸いです。

よろしく。

4

2 に答える 2

3

ボタンをマウスでクリックするとテキスト ボックスからフォーカスが移動しますが、キーを押しても移動しないため、動作が異なります。

DialogResult が ではない場合、 Control.Focus ()またはControl.Select( )への呼び出しを追加してみてくださいOK

textBox1.SelectionStart = 0;
textBox1.SelectionLength = textBox1.Text.Length;
textBox1.Focus();
// Or
textBox1.Select();
于 2012-06-01T20:39:46.853 に答える
1

Button1 をクリックすると、textBox1 にフォーカスがないため、テキストは選択されません。

于 2012-06-01T20:39:46.963 に答える