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

前端之家收集整理的这篇文章主要介绍了c# – 我需要访问组合框的非公开成员(突出显示的项目)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为一个应用程序实现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();

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

猜你在找的C#相关文章