WPF中combobox的IsFocused

jason87629 2011-11-08 09:16:37
不知道为什么控件combobox获得焦点后,IsFocused始终为false

即使是利用Focus()获得焦点后IsFocused的值都是false

textbox控件正常没问题的


求解!!!!
...全文
500 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jason87629 2011-11-15
  • 打赏
  • 举报
回复
有谁知道解决办法的帮帮忙吧!!
jason87629 2011-11-15
  • 打赏
  • 举报
回复
有谁知道解决办法的帮帮忙吧!!
MKing0412 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jason87629 的回复:]

引用 12 楼 mking0412 的回复:
引用 11 楼 jason87629 的回复:
没人知道怎么弄吗???combobox的isfocused值要怎样弄才能正常???

现在光标移动到它那里,isfocused值怎么都是false的,只有在程序初始化时调用focus()后它才

会是true,其他情况都不是的。

你就在构造函数里设置一下就完了啊。


问题是我不……
[/Quote]
等高手解决吧,之前搜索的时候只知道在构造中解决,帮你up一个。
jason87629 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 mking0412 的回复:]
引用 11 楼 jason87629 的回复:
没人知道怎么弄吗???combobox的isfocused值要怎样弄才能正常???

现在光标移动到它那里,isfocused值怎么都是false的,只有在程序初始化时调用focus()后它才

会是true,其他情况都不是的。

你就在构造函数里设置一下就完了啊。
[/Quote]

问题是我不是要程序刚启动时执行到啊,我是要打开程序后,鼠标移到或者其他情况移动它那里时,我在那里操作时触发某个方法,现在我都判断不了他获取了焦点啊!!!
MKing0412 2011-11-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jason87629 的回复:]
没人知道怎么弄吗???combobox的isfocused值要怎样弄才能正常???

现在光标移动到它那里,isfocused值怎么都是false的,只有在程序初始化时调用focus()后它才

会是true,其他情况都不是的。
[/Quote]
你就在构造函数里设置一下就完了啊。
jason87629 2011-11-14
  • 打赏
  • 举报
回复
没人知道怎么弄吗???combobox的isfocused值要怎样弄才能正常???

现在光标移动到它那里,isfocused值怎么都是false的,只有在程序初始化时调用focus()后它才

会是true,其他情况都不是的。
MKing0412 2011-11-09
  • 打赏
  • 举报
回复
http://social.msdn.microsoft.com/Forums/zh-CN/wpfzhchs/thread/8fa71b13-8b89-413c-a398-871af943868e/

你判断isfoucused的时候估计方式有问题,或者判断时候让其失去focus了。

你试一下这个: 一个窗体 一个combox 一个button
然后

private void button1_MouseEnter(object sender, EventArgs e)
{
comboBox1.Focus();
bool bl= comboBox1.Focused;
}

鼠标进入button,跟下断点没问题,结果也没问题。
MKing0412 2011-11-09
  • 打赏
  • 举报
回复
跟断点 看一下 什么时候可以触发Grid_KeyDown,LOAD。如果不在构造函数中设置,第一次点击不会触发,原因我不懂,你再查查吧。
MKing0412 2011-11-09
  • 打赏
  • 举报
回复
构造函数中设置 loaded之后获取焦点
这个必须有


public Window1()
{
InitializeComponent();
this.Loaded += delegate
{
this.comboxLine.Focus();
};
}
MKing0412 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jason87629 的回复:]
引用 4 楼 mking0412 的回复:
引用 3 楼 jason87629 的回复:
还有我在window_load事件上放上this.line.Focus(); 程序启动后光标是的确在combobox上的

我在window_load事件上放上
this.line.Focus();
if (this.line.IsFocused)
{MessageBox.Show("123")……
[/Quote]
1.我运行你的没问题,运行我自己的也没问题。
2.建议你重新建个wpf测试下。然后找找原因。
jason87629 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mking0412 的回复:]
引用 3 楼 jason87629 的回复:
还有我在window_load事件上放上this.line.Focus(); 程序启动后光标是的确在combobox上的

我在window_load事件上放上
this.line.Focus();
if (this.line.IsFocused)
{MessageBox.Show("123");}
程序启动后光标在combox上,但还是……
[/Quote]

你可以看清我写的代码吗??你在机上运行了是可以的??我的和你的就是一样的,我也用了你的方法,也是

不行的,还有同样的代码在textbox上是有效果的。

还有光标的确是在combobox上的,但就是不知道为什么IsFocused一直都是false。
MKing0412 2011-11-09
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jason87629 的回复:]
还有我在window_load事件上放上this.line.Focus(); 程序启动后光标是的确在combobox上的

我在window_load事件上放上
this.line.Focus();
if (this.line.IsFocused)
{MessageBox.Show("123");}
程序启动后光标在combox上,但还是没有弹出messagebox的
[/Quote]

sorry 刚才说错了。 你应该看看我给你贴得那个网址的
你需要在load之后设置combox.focuse();给你贴个代码吧。

public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
this.Loaded += delegate
{
this.comboxLine.Focus();
};
}

private void Grid_Loaded(object sender, RoutedEventArgs e)
{

}

private void comboxLine_MouseEnter(object sender, MouseEventArgs e)
{
if (this.comboxLine.IsFocused)
{
MessageBox.Show("123456");
}
}
}

jason87629 2011-11-09
  • 打赏
  • 举报
回复
还有我在window_load事件上放上this.line.Focus(); 程序启动后光标是的确在combobox上的

我在window_load事件上放上
this.line.Focus();
if (this.line.IsFocused)
{MessageBox.Show("123");}
程序启动后光标在combox上,但还是没有弹出messagebox的
jason87629 2011-11-09
  • 打赏
  • 举报
回复
不行啊,我不是说了focus()后IsIsFocused的值都是false吗??

我是这样的

private void Window_KeyDown(object sender, KeyEventArgs e)
{
if(e.Key == Key.Enter)
{
this.line.Focus(); //line是combobox的name
if (this.line.IsFocused)
{MessageBox.Show("123");}
}
}

就这样按回车后都不会弹出messagebox的,还有,我的只有IsFocused,没有Focused的!!

求解!!!!
jason87629 2011-11-09
  • 打赏
  • 举报
回复
谁帮帮忙,看看是什么原因??或者有其他方法实现我9楼所说的功能??
jason87629 2011-11-09
  • 打赏
  • 举报
回复

现在发现一定要在public Window1(){}上执行combobox.Focus()后,combobox.IsFocused的值才会是

true,其他方法执行都没效果的,手动点击焦点移到combobox上也不行。

奇怪的是其他控件例如textbox没这个问题,


我现在是希望我在combobx按回车时,触发读取数据库信息的方法,现在根本执行不了。


请问大家有其他方法吗???

110,538

社区成员

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

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

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