如何预测winforms中的所有按钮(C#)

Rad*_*ant 1 c# case button winforms

你能帮帮我吗?我在winforms.designer.cs中有所有按钮,我为所有按钮分配了相同的处理程序.处理程序是MouseEnterMouseLeave.我需要找到所有按钮和分配给每个不同的MouseEnterMouseLeave.

我在一个按钮上尝试了这个,但它不起作用.

private void createButton_MouseEnter(object sender, EventArgs e)
{
    createButton.Cursor = NativeMethods.LoadCustomCursor(Path.Combine(collection.source, collection.cursor_hand));
    switch (Name)
    {
        case "createButton":
            this.createButton.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.create_on));
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Sel*_*enç 8

您可以使用OfType扩展方法轻松遍历所有按钮,如下所示:

foreach(var button in this.Controls.OfType<Button>())
{
    button.MouseEnter += createButton_MouseEnter;
    button.MouseLeave += createButton_MouseEnter;
}
Run Code Online (Sandbox Code Playgroud)

而在你的createButton_MouseEnter,如果你想获得电流Button's Name可以做到以下几点:

private void createButton_MouseEnter(object sender, EventArgs e)
{
   var currentButton = sender as Button;
   var name = currentButton.Name;
   ...
}
Run Code Online (Sandbox Code Playgroud)