gpt4 book ai didi

c# - 根据标题删除选项卡项

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:20 25 4
gpt4 key购买 nike

首先,这个问题是对this question的跟进。 .我觉得我的问题只得到了一半的回答。

除了删除 Name 引用的 tabItems 之外,我还需要能够通过引用它们的 Headers< 来删除 tabItems/.

当实现我的答案并将 n.Name 更改为 n.Header 时,如下所示:

var tabToDelete = tabControl.Items.OfType<TabItem>().SingleOrDefault(n => n.Header == stringValue);
if (tabToDelete != null)
tabControl.Items.Remove(tabToDelete);

我发现它不一样。这应该有效,还是我需要编辑整个结构?如果是这样,我该怎么做才能确保我需要的 tabItemHeader 引用?

添加:当 Name 引用的选项卡被删除时,它们将离开屏幕,而 Header 引用的选项卡是不是(直到您手动切换选项卡)。这使我认为它们仍然存在于程序中。

最佳答案

你的问题是 Header 是一个对象而不是字符串。您正在比较这两个值,就好像它们是一样,但是因为 Header 是一个对象,您实际上是在进行引用比较,而不是值比较。您只需在 Header 上调用 .ToString() 即可将 Header 转换为字符串。

var tabToDelete = tabControl.Items.OfType<TabItem>().SingleOrDefault(n => (n.Header as string) == stringValue);
if (tabToDelete != null)
tabControl.Items.Remove(tabToDelete);

如果这不能解决问题,您可以通过调用强制控件重绘

tabControl.Refresh();

更新

感谢 Daniel Gimenez 发现了可能的空引用异常。 Header 被设置为控件的问题不是问题,因为所有对象都可以调用 ToString(),真正的问题是如果 Header 根本没有设置,导致 null 对象。

关于c# - 根据标题删除选项卡项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281832/

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