100分求助 C#中如何让控件失去焦点

ndsccccc2 2005-11-13 12:45:28
谢谢大家

我遇到一个问题,我响应TextBox的OnGotFocus事件,弹出一个模态对话框。

但关闭这个对话框后,焦点又回到TextBox上。

请问,如何能让textBox不自动获取焦点,或者调用函数强制让它失去焦点呢?谢谢
...全文
8738 34 打赏 收藏 转发到动态 举报
写回复
用AI写文章
34 条回复
切换为时间正序
请发表友善的回复…
发表回复
gj121 2005-11-14
  • 打赏
  • 举报
回复
在弹出模式窗口后面加上这一句
this.Activate();
就OK啦!
jinta2001 2005-11-14
  • 打赏
  • 举报
回复
如果窗口就一个控件,你的要求应该没有办法做到,如果有其他控件,你可以把焦点设置到某一控件,或者使用下面的代码
private void textBox1_Enter(object sender, System.EventArgs e)
{
MessageBox.Show(DateTime.Now.ToString());
textBox1.Enabled=false;
textBox1.Enabled=true;
}
JasonHeung 2005-11-14
  • 打赏
  • 举报
回复
使用隐藏文本框textBox2;
private void textBox1_GotFocus(object sender, System.EventArgs e)
{
MessageBox.Show("Thanks for cshmai", "test");
textBox2.Focus();
}

private void Form1_Load(object sender, System.EventArgs e)
{
textBox2.Focus();
}
ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
大侠们帮帮忙啊
ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
最后谢谢大家!!!
ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
回复 xujiaoxiang()
Thanks!
我就用这办法了,如何结贴啊~~

ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
我刚试完啦,第一下成,可后来又是反复出来了……

555,有没有MFC那样的失去焦点的函数啊
xujiaoxiang 2005-11-14
  • 打赏
  • 举报
回复
private void textBox1_GotFocus(object sender, System.EventArgs e)
{
textBox1.Enabled=false;
MessageBox.Show(DateTime.Now.ToString());
textBox1.Enabled=true;
}
gj121 2005-11-14
  • 打赏
  • 举报
回复
this.Activate();
MessageBox.Show("xxxx");
这样应该行了吧!
ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
To fanjiyong000:

我记得这个代码我写过……也是反复弹dialog
ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
感谢这么多热心人啊~~

net_boy(小明):
我好像也试了,被隐藏的控件好像获得不了焦点了就,另外这样写技巧性代码会被经理骂的,Thank you all the same

gj121(男儿当自强):
那句话就写在InitializeComponent()中,自动生成的那里。好像就是加载时就调用了。不过我用
if(TextBox.MouseButtons!= MouseButtons.Left)
{
return;
}
在前面先判断一下,就不会在加载时进去了,但新问题又出了,关闭对话框后textBox1仍然获取着焦点,但就不能触发GotFocus了,除非出去再进来,做不到“要每次GotFocus时出来”了。

To XuDunYu(西门吹雪):
嗯那,但要是只有一个Control没有other怎么办啊~~

To xujiaoxiang() :
不行不行,我之所以非要响应GotFocus这么恶心的接口,其实响应Click不就成了么……但是,我写的程序要在windows ce和xp都能运行的,就是说用的compact framework,而且要用1.1版本的。所以只好响应GotFocus了,我试着响应Click或者mousedown什么的,但怎么按鼠标都不响应的。

To fanjiyong000:
我正在尝试您的代码~~




xujiaoxiang 2005-11-14
  • 打赏
  • 举报
回复
使用下面的代码
private void textBox1_Enter(object sender, System.EventArgs e)
{
textBox1.Enabled=false;
MessageBox.Show(DateTime.Now.ToString());
textBox1.Enabled=true;
}
XuDunYu 2005-11-14
  • 打赏
  • 举报
回复
将onthercontrol.focus()和messagebox()交换一下位置就结了。
先other.focus();
然后MessageBox.show("");
OK
gj121 2005-11-14
  • 打赏
  • 举报
回复
To: 01070801(琪琪)
你知道
this.textBox1.GotFocus += new System.EventHandler(this.textBox1_GotFocus);
这个响应事件,在窗口加载显示的时候就触发这个事件了!
你上面这一句写在什么地方的啊!
net_boy 2005-11-14
  • 打赏
  • 举报
回复
关注了 我只想到了 多方一个control 然后 模态关闭后 让隐藏的这个得到焦点
fanjiyong000 2005-11-14
  • 打赏
  • 举报
回复
private void textBox1_GotFocus(object sender, System.EventArgs e)
{
MessageBox.Show("Thanks for cshmai", "test");
this.textBox1.Capture = false;
}

private void Form1_Load(object sender, System.EventArgs e)
{
this.textBox1.Capture = false;
}

就是希望MessageBox关闭后,textBox1不要获得焦点
ndsccccc2 2005-11-14
  • 打赏
  • 举报
回复
感谢楼上关注,但我试了,还是不行
private void textBox1_GotFocus(object sender, System.EventArgs e)
{
MessageBox.Show("test");
this.Activate();
}
就是这段代码,

前面响应的事件为
this.textBox1.GotFocus += new System.EventHandler(this.textBox1_GotFocus);

我想让它不反复探messagebox,但又要每次GotFocus时出来~~~

再次谢您
ndsccccc2 2005-11-13
  • 打赏
  • 举报
回复
谢谢,可问题是,考虑到只有一个TextBox的情况呢
wxy0401 2005-11-13
  • 打赏
  • 举报
回复
把焦点调给其它控件能满足你的要求。
ndsccccc2 2005-11-13
  • 打赏
  • 举报
回复
救救我吧~555
加载更多回复(14)

111,130

社区成员

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

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

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