当前位置: 首页 > 编程语言 > C#

无法将类型’System.Windows.Forms.Control’转换为’T’分享

时间:2023-04-10 23:27:15 C#

C#学习教程:无法将类型“System.Windows.Forms.Control”转换为“T”我收到以下错误:无法将类型“System.Windows.Forms.Control”转换为“T”(T)控制;//表单控件有唯一的名字,所以不需要更多的迭代}thrownewException("Controlnotfound!");}试试这个publicTControl(Stringid)whereT:Control{foreach(ControlctrlinMainForm.Controls.Find(id,true)){return(T)ctrl;//表单控件有唯一的名字,所以不需要更多的迭代}thrownewException("Controlnotfound!");你总是可以改变规则并进行双重施法。例如:publicTControl(Stringid){foreach(ControlctrlinMainForm.Controls.Find(id,true)){return(T)(object)ctrl;}thrownewException("找不到控件!");由于T是未绑定的,您可以为类型参数传递任何内容。您应该在方法签名中添加一个“where”约束:publicTControl(stringid)whereT:Control{...}publicTControl(stringid)whereT:Control{...}你怎么称呼这个方法,你有例子吗?另外,我会在你的方法中添加一个约束:publicTControl(stringid)whereT:System.Windows.Forms.Control{//}虽然其他人已经正确指出了这个问题,但我只是想说明这对扩展非常有用方法。不要对此投票,它实际上是一条评论,我只是将其作为答案发布,这样我就可以写得更好并更好地格式化我的代码;)publicstaticclassExtensions{publicstaticTFindControl(thisControlparent,stringid)whereT:Control{returnitem.FindControl(id)asT;所以你可以这样称呼它:LabelmyLabel=MainForm.Controls.FindControl("myLabelID");将方法签名更改为:publicTControl(Stringid)其中T:Control表示所有T实际上都是Control类型。这将约束T,编译器知道你可以将它作为T返回。以上是C#学习教程:Unabletoconvertthetype'System.Windows.Forms.Control'to'T'分享所有内容。如果对大家有用,需要进一步了解C#学习教程,还望大家多加关注——本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: