winForm光标控制

huisheng 2007-11-11 08:42:19
在TextBox中我在keyUp使用了"回车"操作,在按下回车后判断控件是否为空如果为空弹出对话提示框,不为空跳下一个控件.

现在问题来了.当弹出对话框按回车返回主窗体时还会执行TextBox控件的KeyUp事件执行"回车"再次弹出对话提示框.
也就是"对话提示框"中的回车事件被主窗体中的TextBox继承下来了.

如何解决.
...全文
178 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
radiu7 2010-06-19
  • 打赏
  • 举报
回复
学习!~
huisheng 2007-11-12
  • 打赏
  • 举报
回复
不行哦.zswang 你的方式行不通哦.
voodooer 2007-11-12
  • 打赏
  • 举报
回复
学习.
王集鹄 2007-11-12
  • 打赏
  • 举报
回复
在KeyPress事件中处理更恰当些
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
switch (e.KeyChar)
{
case (char)Keys.Return:
{
if (DialogResult.Yes == MessageBox.Show(
"开新单吗?\n\"Y\":开新单,\"N\":取旧单 ",
"提示窗口 ", MessageBoxButtons.YesNo))
{
((TextBox)sender).Focus();
}
}
break;
}
}
huisheng 2007-11-11
  • 打赏
  • 举报
回复
没有看懂.

你们试下.在TextBox
private void fmOG_KeyUp(object sender, KeyEventArgs e)
{ switch (e.KeyCode)
 {
 case Keys.Enter:
 {
       if (DialogResult.Yes == MessageBox.Show("开新单吗?\n\"Y\":开新单,\"N\":取旧单", "提示窗口", MessageBoxButtons.YesNo))
{
         TextBox1.Focus();
       }
break;
     }

  }



在MessageBox对话框上按回车确认后在返回主窗体中时还会再次执行这段代码.如果在MessageBox不是通过回车而是按下空格或者用鼠标选择的话返回主窗体时就不会再次执行这段.
王集鹄 2007-11-11
  • 打赏
  • 举报
回复
参考如下代码
bool msgBoxShowing = false;
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
switch (e.KeyCode)
{
case Keys.Return:
{
if (((TextBox)sender).Text.Length <= 0)
{
if (!msgBoxShowing)
{
MessageBox.Show("内容不能为空");
msgBoxShowing = true;
return;
}
}
else SelectNextControl((Control)sender, true, true, true, true);
}
break;
}
msgBoxShowing = false;
}
kingjason 2007-11-11
  • 打赏
  • 举报
回复
看都看不懂呢....
jciwolf 2007-11-11
  • 打赏
  • 举报
回复
那就在弹出的对话框中做判断.点确定直接跳到下一个控件.
llyzcy 2007-11-11
  • 打赏
  • 举报
回复
没看懂。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧