C# 如何投射按钮
我在理解铸造按钮方面有一些问题,也许你可以帮助我。如果我有例如3个按钮,我不会有很长的代码,我可以投他们,对吗? 例如: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
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 (...)
...