Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 委托、事件处理程序和控件。OfType_C#_Winforms_Forms - Fatal编程技术网

C# 委托、事件处理程序和控件。OfType

C# 委托、事件处理程序和控件。OfType,c#,winforms,forms,C#,Winforms,Forms,关于此代码,我有两个问题。 第一名: 代码中的1st方式和2nd方式有什么区别?我的意思是,他们做什么都没有。您更喜欢哪一个? 第二名: 在类型为的控件中,我们如何获得多个结果,例如文本框和按钮,这里我仅为文本框编写。(Windows窗体) private void Form2\u加载(对象发送方,事件参数e) { foreach(Controls.OfType()中的控件项) { item.MouseEnter+=item_MouseEnter;//第1路 item.MouseLeave+=n

关于此代码,我有两个问题。
第一名:
代码中的1st方式和2nd方式有什么区别?我的意思是,他们做什么都没有。您更喜欢哪一个?
第二名: 在类型为的控件中,我们如何获得多个结果,例如文本框按钮,这里我仅为文本框编写。(Windows窗体)

private void Form2\u加载(对象发送方,事件参数e)
{
foreach(Controls.OfType()中的控件项)
{
item.MouseEnter+=item_MouseEnter;//第1路
item.MouseLeave+=new System.EventHandler(item_MouseLeave);//第二种方式
}
}
无效项_MouseLeave(对象发送方,事件参数e)
{
变量senderButton=(控制)发送器;
senderButton.高度-=5;
senderButton.宽度-=5;
}
无效项\u鼠标指针(对象发送方,事件参数e)
{
变量senderButton=(控制)发送器;
senderButton.高度+=5;
senderButton.宽度+=5;
}

1st:没有区别。第一行将隐式使用EventHandler。这是首选

2nd:of type只接受1个类型参数,因此它将只返回该类型的对象。但是你可以自己过滤<代码>控件。其中(ctrl=>ctrl是文本框| | ctrl是按钮) (无论如何,这就是OfType内部所做的。)

编辑:ControlCollection似乎实现了非泛型IEnumerable,因此它没有名为Where的扩展方法。 因此,您必须使用:

Controls.OfType()。其中(ctrl=>ctrl是文本框| | ctrl是按钮)

(OfType将
IEnumerable转换为IEnumerable


或者你可以在循环中使用一个简单的if语句。

我写不出来,它会出错,它不知道在哪里,你介意写代码吗?OfType的另一个错误,在给定的上下文中无效,请提前在foreach循环中写它,tnx。我错过了括号,这是问题吗?它应该是()类型
private void Form2_Load(object sender, EventArgs e)
{
    foreach (Control item in Controls.OfType<TextBox>())
    {
        item.MouseEnter += item_MouseEnter; // 1st way 
        item.MouseLeave += new System.EventHandler(item_MouseLeave); //2nd way
    }
}
void item_MouseLeave(object sender, EventArgs e)
{
    var senderButton = (Control)sender;
    senderButton.Height -= 5;
    senderButton.Width -= 5;
}

void item_MouseEnter(object sender, EventArgs e)
{
    var senderButton = (Control)sender;
    senderButton.Height += 5;
    senderButton.Width += 5;
}