【发布时间】:2009-09-22 16:51:29
【问题描述】:
以下代码在 Vista 上按预期工作(焦点向下移动到 ListView),但在 XP SP3(两者都带有 .Net 3.5 SP1)上它仅在 ListView 的前两项之间移动。
if (myListView.SelectedItem != null) {
IInputElement orig = FocusManager.GetFocusedElement(this);
FocusManager.SetFocusedElement(this, myListView);
ListViewItem lvi = myListView.ItemContainerGenerator.ContainerFromItem(myListView.SelectedItem) as ListViewItem;
TraversalRequest down = new TraversalRequest(FocusNavigationDirection.Down);
Boolean result = lvi.MoveFocus(down);
Console.WriteLine(result.ToString());
FocusManager.SetFocusedElement(this, orig);
}
当焦点位于文本框中时,我从窗口的 previewkeydown 事件调用此代码。我现在正在深入研究这个框架,试图在 MoveFocus() 中找出 XP 和 Vista 之间的不同之处。我觉得我又在做 Web 开发,测试浏览器的怪癖......
【问题讨论】:
-
在我的测试中,它在 XP 和 Vista 上的工作方式相同(仅在前两项之间移动)。虽然很奇怪,但一定是设置中的其他东西导致了这种行为。
标签: c# .net wpf windows-vista windows-xp