gpt4 book ai didi

c# - 如何设置属性网格的选定项

转载 作者:太空狗 更新时间:2023-10-29 22:32:09 25 4
gpt4 key购买 nike

我需要设置属性网格的选定项。我得到一个 eventargs,它存储一个字符串(这个字符串告诉我用户想要选择我的 propertygrid 中的什么属性)。问题是我找不到网格项目的集合,我可以从中选择一个。而且我也不知道如何正确创建新的 GridItem 对象并设置 SelectedGridItem 属性。

GridItem gridItem = ???;
detailsPropertyGrid.SelectedGridItem = gridItem;

谢谢你的帮助。

编辑:

它现在几乎可以工作了,非常感谢你。

GridItem gi = this.detailsPropertyGrid.EnumerateAllItems().First((item) =>
item.PropertyDescriptor != null &&
item.PropertyDescriptor.Name == colName);
this.detailsPropertyGrid.SelectedGridItem = gi;
this.detailsPropertyGrid.Select();

唯一的问题是:现在需要选择 Property Name 字段。我可以将焦点设置到属性的输入字段吗?

最佳答案

这里有几个 PropertyGrid 扩展,可以枚举网格中的所有项目。这是您如何使用它来选择一项:

  // get GridItem for a property named "Test"
GridItem gi = propertyGrid1.EnumerateAllItems().First((item) =>
item.PropertyDescriptor != null &&
item.PropertyDescriptor.Name == "Test");

// select it
propertyGrid1.Focus();
gi.Select();

// enter edit mode
SendKeys.SendWait("{F4}");

...

public static class PropertyGridExtensions
{
public static IEnumerable<GridItem> EnumerateAllItems(this PropertyGrid grid)
{
if (grid == null)
yield break;

// get to root item
GridItem start = grid.SelectedGridItem;
while (start.Parent != null)
{
start = start.Parent;
}

foreach (GridItem item in start.EnumerateAllItems())
{
yield return item;
}
}

public static IEnumerable<GridItem> EnumerateAllItems(this GridItem item)
{
if (item == null)
yield break;

yield return item;
foreach (GridItem child in item.GridItems)
{
foreach (GridItem gc in child.EnumerateAllItems())
{
yield return gc;
}
}
}
}

关于c# - 如何设置属性网格的选定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com