gpt4 book ai didi

c# - 如何在 C# 中查找通用控件的标记

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

我正在创建一个允许您通过标签搜索控件的函数。唯一的参数是标签的名称。它返回所有带有标签的 T 类型控件的列表。这是我的:

public static List<T> FindWithTag<T>(string tag)
{
List<T> types = new List<T>();

foreach (T type in fm.Controls.OfType<T>())
if (type.Tag == tag)
types.Add(type);
return types;
}

问题是,由于 T 是一个通用变量,它没有标记属性。我能理解为什么,因为可能是 intstring。我如何告诉编译器 T 仅用于控件,因此会有一个标记?

提前致谢。

最佳答案

您可以指定您的 T 类型应从哪个类型继承。

public static T[] FindWithTag<T>(string tag) where T : Control
{
List<T> types = new List<T>();

foreach (T type in fm.Controls.OfType<T>())
if (type.Tag == tag)
types.Add(type);
return types;
}

顺便调用一个foreach局部变量type让我感到困惑,因为实际上您是通过控件进行枚举。所以,应该是

 foreach (T control in fm.Controls.OfType<T>())

它也适用于 List<T> types实际上,它是 Control 的列表。有时,单个变量的名称不正确会使代码的可读性大大降低:)

关于c# - 如何在 C# 中查找通用控件的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30528554/

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