【问题标题】:How to Focus Two Text Boxes as SelectedItemChanged event of Treeview is triggerd?如何在触发 Treeview 的 SelectedItemChanged 事件时聚焦两个文本框?
【发布时间】:2015-04-27 04:54:14
【问题描述】:

当用户在树形视图中选择树形视图项时,我试图集中两个文本框。我正在使用 SlectedItemChanged 事件来实现这一点。我需要同时关注两个文本框。

    delegate void voiDelegate();
    private void click(object sender, RoutedPropertyChangedEventArgs<object> e)
    {
        TreeViewItem t;
        t =(TreeViewItem) tvMain.SelectedItem;
        StackPanel s = (StackPanel)t.Header;
        List<TextBlock> l = new List<TextBlock>(3);
        foreach (TextBlock children in s.Children)
        {
            l.Add(children);
        }
        string ch = l[3].Text;
        string[] sp = ch.Split('-');
        int te = Convert.ToByte(sp[1]) - Convert.ToByte(sp[0]) + 1;
        PacketDisplay1.SelectionStart = PacketDisplay2.SelectionStart = Convert.ToByte(sp[0]);
        PacketDisplay1.SelectionLength= PacketDisplay2.SelectionLength = te;
        voiDelegate giveFocusDelegate = new voiDelegate(giveFocus);
        Dispatcher.BeginInvoke(giveFocusDelegate, new object[] { });

    }
    private void giveFocus()
    {
        PacketDisplay1.Focus();
        PacketDisplay2.Focus();
    }  

此处的焦点仅发生在 PacketDisplay2 文本框中。
如何在两个文本框中实现焦点? 谢谢。

【问题讨论】:

  • 为什么要同时关注两者?,您是否尝试在两者中输入相同的值?
  • 我正在开发一个嗅探器,因为当用户单击树视图项时,我需要关注文本(即字节)

标签: c# wpf treeview focus


【解决方案1】:

不可能同时关注 2 个文本框。 当您调用 PacketDisplay2.Focus() 时,PacketDisplay1 控件将失去焦点。 这是窗户的设计。

阅读以下链接:https://msdn.microsoft.com/en-us/library/aa969768%28v=vs.110%29.aspx

上面写的很清楚:Keyboard focus refers to the element that is currently receiving keyboard input. There can be only one element on the whole desktop that has keyboard focus.

【讨论】:

  • 我怎样才能达到我的要求,除了focus()还有其他可能吗?
  • 如果您的要求是将焦点放在 2 个文本框上,那么这根本是不可能的。或者你必须用不同的措辞来表达你的要求。你想完成什么。例如,如果 2 个文本框有焦点并且我输入文本,会发生什么?使用绑定可以使 2 个文本框保持同步。但是只有一个文本框可以有焦点。
猜你喜欢
  • 2011-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多