加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 我需要访问组合框的非公开成员(突出显示的项目)

发布时间:2020-12-15 06:25:51 所属栏目:百科 来源:网络整理
导读:我正在为一个应用程序实现Key Navigation,而当Combo Box集中在一起时,我想覆盖空格键功能,使其像一个Enter键;喜欢这个: if (!cb.IsDropDownOpen){ cb.IsDropDownOpen = true;}else{ cb.SelectedItem = cb.{non-public member HighlightedItem}; cb.IsDropDo
我正在为一个应用程序实现Key Navigation,而当Combo Box集中在一起时,我想覆盖空格键功能,使其像一个Enter键;喜欢这个:
if (!cb.IsDropDownOpen)
{
  cb.IsDropDownOpen = true;
}
else
{
  cb.SelectedItem = cb.{non-public member HighlightedItem};
  cb.IsDropDownOpen = false;
}

问题是我需要获取非公开成员的价值,以便我可以设置所选择的值并关闭下拉菜单(如何正常工作).

现在的问题是:实现这一目标最快捷,最轻松的方式是什么?

解决方法

您必须使用反射来获取属性的值
PropertyInfo highlightedItemProperty = cb.GetType().GetProperties(BindingFlags.NonPublic  | BindingFlags.Instance).Single(pi => pi.Name == "HighlightedItem");
object highlightedItemValue = highlightedItemProperty.GetValue(cb,null);

要浏览所有属性或字段,请查看

var allProps = cb.GetType().GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).OrderBy(pi => pi.Name).ToList();
var allFields = cb.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance).OrderBy(pi => pi.Name).ToList();

(您可以在调试器中阅读它们)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读