私は私の手に小さな謎を持っています。ユーザーに何らかの入力を求めるフォームを作成し、入力を示す 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() を呼び出します。
アドバイスをいただければ幸いです。
よろしく。