将焦点设置回其父级?

2024-04-09

来自帖子WPF:如何以编程方式从文本框中删除焦点 https://stackoverflow.com/questions/2914495/wpf-how-to-programmatically-remove-focus-from-a-textbox,我知道如何设置TextBox使用以下代码将焦点返回到其父级:

// Move to a parent that can take focus
FrameworkElement parent = (FrameworkElement)textBox.Parent;
while (parent != null && parent is IInputElement 
                      && !((IInputElement)parent).Focusable)
{
    parent = (FrameworkElement)parent.Parent;
}

DependencyObject scope = FocusManager.GetFocusScope(textBox);
FocusManager.SetFocusedElement(scope, parent as IInputElement);

有没有什么方法可以概括此代码(如模板函数),使其也适用于其他项目,例如ComboBox, Canvas, Image etc.


它应该相对简单:

FrameworkElement ctrl = control; //or whatever you're passing in, since all controls are FrameworkElements.

// Move to a parent that can take focus
FrameworkElement parent = (FrameworkElement)ctrl.Parent;
while (parent != null && parent is IInputElement 
                  && !((IInputElement)parent).Focusable)
{
    parent = (FrameworkElement)parent.Parent;
}

DependencyObject scope = FocusManager.GetFocusScope(ctrl); //can pass in ctrl here because FrameworkElement inherits from DependencyObject
FocusManager.SetFocusedElement(scope, parent as IInputElement);

这是可行的,因为所有控件都继承自 FrameworkElement,而 FrameworkElement 又继承自 DependencyObject。所以你可以设置ctrl您想要的任何类型的控件:ComboBox, TextBox, Button, Canvas, etc.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将焦点设置回其父级? 的相关文章

  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • 嵌套接口:将 IDictionary> 转换为 IDictionary>?

    我认为投射一个相当简单IDictionary
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • WPF 绑定 CompositeCollection 中的 MenuItem 不起作用

    我在将命令绑定到复合集合中的菜单项时遇到问题 这MenuItem是其一部分ContextMenu这是定义在UserControl Resources 问题是新标签的绑定不起作用 当我将 MenuItem 放置在复合集合之外时 它将起作用 有
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • WPF/C# 将自定义对象列表数据绑定到列表框?

    我在将自定义对象列表的数据绑定到ListBox in WPF 这是自定义对象 public class FileItem public string Name get set public string Path get set 这是列表
  • 如何从两个不同的项目中获取文件夹的相对路径

    我有两个项目和一个共享库 用于从此文件夹加载图像 C MainProject Project1 Images 项目1的文件夹 C MainProject Project1 Files Bin x86 Debug 其中有project1 ex
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • WPF ComboBox DropDown 部分出现在错误的位置

    我在 XAML 窗口上放置了几个 ComboBox 当我展开其中任何一个时 下拉部分会出现在屏幕的左上角 我使用 Visual Studio 2008 C Express 我不记得当我使用Visual Studio 2008 试用版 时有这
  • 如何对密码进行哈希处理

    我想在手机上存储密码的哈希值 但我不知道该怎么做 我似乎只能找到加密方法 应该如何正确地对密码进行哈希处理 考虑到今天 2012 年 的最佳实践 这里的大多数其他答案都有些过时了 NET 中原生可用的最强大的密码哈希算法是 PBKDF2 由
  • 带空间的自动完成文本视图

    我有一个 Room 数据库并创建了一个模型和 viewModel 我想知道如何使自动完成文本视图与数据库数据和视图模型一起工作 以在用户输入时过滤客户列表 视图模型 class CustomerVM ViewModel private va
  • R Notebook HTML 格式 - 添加到分页表的超链接

    我希望从 R Notebook 编写一个 html 文件 其中包含带有超链接的分页表 可以使用插入超链接knitr kable 但我找不到生成的方法paged 由于我的问题似乎没有完美的解决方案 我想我应该发布我想出的解决方法 以防有人遇到
  • 代理服务器截断视图状态

    有什么方法可以模拟代理服务器截断视图状态吗 我通过将 ViewState 放在服务器端来完全避免使用 ViewState 客户端 该代码大约有 5 行长 我已经看到性能的巨大改进 http aspadvice com blogs rober
  • IE8 不显示图像(红色 x)...有时

    我对以下问题感到抓狂 这在任何其他浏览器 Chrome Firefox 上都不会发生 IE8缓存被清除 浏览器启动时会打开 HTML Javascript 页面 该页面会动态请求并创建一些图像 此 HTML 页面由 Tomcat 服务器 l
  • 下载管理器在 Android Pie 9.0 NetworkSecurityConfig 中不起作用:未指定网络安全配置,使用平台默认值

    将设备操作系统更新为Android 9 0 以前这段代码工作正常 小米A2 现在 文件没有被下载Android Pie 9 0 此外 它在奥利奥 牛轧糖 棉花糖中运行良好 这是代码片段 File myDir new File Environ
  • 使用 awk 将稀疏矩阵转换为 ARFF

    我正在处理稀疏矩阵格式的极大数据集 数据具有归档格式 3 个制表符分隔的列 其中第一列中的字符串对应于行 第二列中的字符串对应于属性 第三列中的值是加权分数 church place 3 church institution 6 man p
  • 为什么没有显示 Google Analytics(分析)内容实验的结果?

    首先 让我快速为您介绍一下我的设置 我们有多个域 因此我使用跟踪代码 将流量同时发送到 2 个不同的配置文件 一个配置文件跟踪该特定域 另一个是多域配置文件 它从以下位置收集数据 all域 这就是我的域上的页面的跟踪代码的样子 UA XXX
  • MySQL列中的随机数[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在尝试在名为 likes 的数据库列之一中添加随机数 其中大约有 5000 行 目前我已经尝试像下面这样获得从 10
  • 我可以使用 PDO 参数化语句创建 MYSQL 表吗?

    我希望使用 PHP 和 PDO 创建一个 MySQL 表 我还希望参数化表名 我已经尝试实现这一点 并且有错误的代码如下所示 class databaseaccess public hostname localhost public use
  • 如何在C#中获得一组枚举值?

    假设我有一个枚举 http msdn microsoft com en us library system windows forms dialogresult aspx namespace System Windows Forms pub
  • 从 Firebase 检索的自定义对象始终具有 Null 属性

    我正在尝试检索自定义User来自 Firebase 的对象如下 getUserFromDB loggedInUserEmail viewModel new ViewModelProvider this get UserViewModel c
  • 无法将 SelectedIndex 设置为 0

    当尝试将 ComboBox SelectedIndex 设置为 0 以便我将第一个值作为默认值时 不起作用 组合框默认为空 如果我尝试将其设置为任何其他有效的数字 我会将所选索引作为默认值 有人知道为什么我不能从 xaml 将其设置为 0
  • 从 Ansible 中的自定义模块访问 playbook 变量[重复]

    这个问题在这里已经有答案了 我正在 Ansible 中编写一个特定于 Playbook 的自定义模块 是否可以直接访问剧本变量 而不需要将其作为参数传递给任务 这是不可能的 因为模块是远程执行的 除非显式传递 否则所有变量都不可用 我有同样
  • 从 X 和 Y 坐标获取纬度和经度

    看起来从经度和纬度到X和Y坐标的转换有丰富的知识 但反过来却没有 这是我根据 Kavrayskiy 的数学计算得出的函数 float xp kavraX radians pv x radians pv y FACTOR float yp k
  • 用字典重新映射 pandas 列中的值,保留 NaN

    我有一本字典 如下所示 di 1 A 2 B 我想将其应用到col1数据框的列类似于 col1 col2 0 w a 1 1 2 2 2 NaN to get col1 col2 0 w a 1 A 2 2 B NaN 我怎样才能最好地做到
  • C# 编组回调

    我正在尝试对结构中的 c 回调进行编组 我很确定我的一切都是正确的 但是当使用我的 C 示例时 我没有收到事件 而当使用 C 时 我确实收到了事件 这是 C class Program DllImport Some dll CharSet
  • django S3 - 修剪图像字段文件名但不修剪 url 路径

    这是我的问题的后续 ImageField FileField Django 表单当前无法修剪文件名的路径 https stackoverflow com questions 47887158 imagefield filefield dja
  • 将焦点设置回其父级?

    来自帖子WPF 如何以编程方式从文本框中删除焦点 https stackoverflow com questions 2914495 wpf how to programmatically remove focus from a textb