Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.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# 如何投射按钮_C#_Casting - Fatal编程技术网

C# 如何投射按钮

C# 如何投射按钮,c#,casting,C#,Casting,我在理解铸造按钮方面有一些问题,也许你可以帮助我。如果我有例如3个按钮,我不会有很长的代码,我可以投他们,对吗? 例如: private void button1_Click(object sender, EventArgs e) { } private void button2_Click(object sender, EventArgs e) { } private void button3_Click(object sender, EventArgs e) { } 如果我给ev

我在理解铸造按钮方面有一些问题,也许你可以帮助我。如果我有例如3个按钮,我不会有很长的代码,我可以投他们,对吗? 例如:

private void button1_Click(object sender, EventArgs e)
{

}

private void button2_Click(object sender, EventArgs e)
{

}

private void button3_Click(object sender, EventArgs e)
{

}
如果我给evry button一个标签,我应该能够询问按钮是否被点击,对吗

private void MachMalClick(object sender, EventArgs e)
{
    var myButton = (Button)sender;

    if (myButton != null)
    {
        var test = myButton.Tag;
switch (test)
            {
                case 1: MessageBox.Show("button 1 was clicked");
                    break;
                case 2: MessageBox.Show("button 2 was clicked");
                    break;
                case 3: MessageBox.Show("button 3 was clicked");
                    break;
            }
    }
}

如果上面的方法成功,那么对象必须是一个按钮(将发送者强制转换为按钮->必须是一个按钮),但是现在我在处理标签时遇到了问题。有人能帮我吗?我在互联网上找不到任何东西,如果这是一个愚蠢的问题,我很抱歉,但我是c#的新手。

你可以尝试使用
Id属性

Button myButton = (Button)sender;
if(myButton.Id == "button1")
{
  ....
}
elseif(myButton.Id == "button2")
{
   .....
}
无法打开对象。

此操作不需要“Tag”属性吗

您可以直接对照按钮对象进行检查

if(sender == button1)
    MessageBox.Show("button 1 was clicked");
else if(sender == button2)
    MessageBox.Show("button 2 was clicked");
else if (...)
    ...

这假设按钮是在设计时创建的,并且按钮字段被命名为“button1”、“button2”等。

“但是现在我在处理标签时遇到了问题”-问题是什么?你有例外吗?请说得更具体些。我不能转换,是什么让我觉得我脑子里有个思维错误。错误是一个开关表达式:必须有一个允许空值的对应类型。这可以帮助您:非常感谢,链接很好。我搜索了30多分钟,没有找到真正有用的东西。我很高兴能帮助你使用1676819。我也非常感谢你。这对我也很有用
if(sender == button1)
    MessageBox.Show("button 1 was clicked");
else if(sender == button2)
    MessageBox.Show("button 2 was clicked");
else if (...)
    ...