我手上有一个小秘密。我创建了一个表单,提示用户进行一些输入,然后显示一个 CancelOK 消息框来显示输入。用户可以通过单击提交按钮或按 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;
}
}
}
}
神秘的是,当我运行这个表单时,当调用 addedsAction() 方法时会发生两种不同的事情:
1) 用户输入数据,按回车键,选择取消,消息框消失,原文突出显示。
2) 用户输入数据,点击提交按钮,选择取消,消息框消失但原文未突出显示。
但是两个动作都调用了同一个方法,即additionsAction(),那么行为怎么会不同呢?!
任何建议表示赞赏。
问候。