C# 如何以编程方式单击MessageBox上的按钮

C# 如何以编程方式单击MessageBox上的按钮,c#,winforms,messagebox,C#,Winforms,Messagebox,我有一个单选按钮,当我检查它时,它应该会给出一条信息 DialogResult click = MessageBox.Show("Would you like to convert the actual values to US Customary ?\n Clicking No changes just the unit system.", "Change Unit Systems to US Customary", MessageBoxButtons.YesNo, MessageBoxIco

我有一个单选按钮,当我检查它时,它应该会给出一条信息

DialogResult click = MessageBox.Show("Would you like to convert the actual values to US Customary ?\n Clicking No changes just the unit system.", "Change Unit Systems to US Customary", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

if (click == DialogResult.Yes)
{
    //some code 
}

如何从按钮中的内部代码回答此消息为否?

当您单击单选按钮时,将发送相应的代理功能(操作)和Messagebox结果。 该操作处理是/否情况

public void HandleMessageBoxResult(DialogResult result, Action<DialogResult> action)
{
    action(result);
}


public void Radio1Action(DialogResult result)
{
    switch (result)
    {
        case DialogResult.Yes:
            MessageBox.Show("Yes Clicked for Radio1");
            break;
        case DialogResult.No:
            MessageBox.Show("No Clicked for Radio1");
            break;
    }
}

public void Radio2Action(DialogResult result)
{
    switch (result)
    {
        case DialogResult.Yes:
            MessageBox.Show("Yes Clicked for radioButton2");
            break;
        case DialogResult.No:
            MessageBox.Show("No Clicked for radioButton2");
            break;
    }
}

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
    if(radioButton1.Checked)
    {
        DialogResult result = MessageBox.Show("Message for radioButton1", "title", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
        HandleMessageBoxResult(result, Radio1Action);
    }
}

private void radioButton2_CheckedChanged(object sender, EventArgs e)
{
    if (radioButton2.Checked)
    {
        DialogResult result = MessageBox.Show("Message for radioButton2", "title", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
        HandleMessageBoxResult(result, Radio2Action);
    }
}
public void HandleMessageBoxResult(DialogResult结果,Action操作)
{
行动(结果);
}
公共空间放射性(DialogResult结果)
{
开关(结果)
{
案例对话框结果。是:
MessageBox.Show(“对Radio1单击是”);
打破
案例对话框结果。否:
MessageBox.Show(“没有为Radio1单击”);
打破
}
}
公共空间放射性2作用(DialogResult结果)
{
开关(结果)
{
案例对话框结果。是:
MessageBox.Show(“对radioButton2单击是”);
打破
案例对话框结果。否:
MessageBox.Show(“没有单击radioButton2”);
打破
}
}
私有void radioButton1_CheckedChanged(对象发送方,事件参数e)
{
如果(radioButton1.选中)
{
DialogResult result=MessageBox.Show(“radioButton1的消息”、“标题”、MessageBoxButtons.YesNo、MessageBoxIcon.Question、MessageBoxDefaultButton.Button2”);
HandleMessageBoxResult(结果,放射性1);
}
}
私有void radioButton2\u CheckedChanged(对象发送方,事件参数e)
{
如果(radioButton2.选中)
{
DialogResult result=MessageBox.Show(“radioButton2的消息”、“标题”、MessageBoxButtons.YesNo、MessageBoxIcon.Question、MessageBoxDefaultButton.Button2”);
HandleMessageBoxResult(结果,放射2作用);
}
}
我不想让消息出现

如果你真的不想要它,那么只要在单选按钮的检查更改时执行你的操作即可

private void radioButton1_CheckedChanged(Object sender, EventArgs e)
{
   //Validate to make sore it was not just deselected
   if (radioButton1.Checked)
   {
     //Do whatever I want when the use checks this radio button
   {
}

此消息框指定了一个单选按钮,当您单击它将显示的单选按钮时,我有另一个按钮将更改单选按钮,因此我不希望为用户显示消息。我需要为其提供默认答案“否”,如果按钮未单击,单选按钮将更改。您好。我更新答案。检查它是否是期望的目标。唯一的方法是在不同的线程上使用代码<代码>MessageBox.Show会一直阻止,直到单击一个按钮为止,因此在此之前,您无法在UI线程上执行任何其他操作。也许,如果您不想显示该消息,那么首先不要编写代码来显示该消息。这正是我想要的,我不想显示该消息。我如何才能做到这一点?根据DialogResult值,您正在调用不同的方法?然后,您应该从按钮单击代码调用该方法,而不显示消息框