创建“是否”对话框

时间:2017-10-23 17:23:17

标签: c# microsoft-dynamics

我正在为Microsoft Dynamics Rms创建一个插件。我创建了一个快速的招标按钮,这个按钮工作正常。我想添加一个Yes NO对话框,但我遇到了一些问题。

如果我不包含MessageBox

,它会起作用
public class Addin : Addin_Interface
{
    public bool Process(QSRules.SessionClass mySession)
    {
        if (MessageBox.Show("Do you want to Tender €10", "Tender Amount", 
            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            SendKeys.Send("{F12}{DOWN}10.00{{ENTER}");
            return true;
            // return false;
        }
    }
}

我在此行的处理上有一个红色错误行

public bool Process(QSRules.SessionClass mySession)

错误表示并非所有代码路径都返回值。下面是错误的图像

Visual Studio - not all code paths return a value

3 个答案:

答案 0 :(得分:2)

你可以写

return false
在您使用if语句修复此问题之后

。您的问题是,如果用户在消息框中按“否”,则代码不会返回布尔值。但是你为方法声明了一个返回类型“bool”,因此该方法必须在每个可能的代码路径中返回一个bool。

所以你的代码应该是这样的:

public class Addin : Addin_Interface
{
    public bool Process(QSRules.SessionClass mySession)
    {
        if (MessageBox.Show("Do you want to Tender €10", "Tender Amount", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            SendKeys.Send("{F12}{DOWN}10.00{{ENTER}");
            return true;

        }
        return false;
    }
}

}

答案 1 :(得分:0)

返回类型不为void的方法必须在所有可能的条件下返回一个值。您的方法仅在用户单击“是”时返回值。如果用户单击“否”,则if的内部部分不会执行,这是您返回的位置。

以下是我写它的方法......(有很多方法可以写出来)

public bool Process(QSRules.SessionClass mySession)
{
    var response = MessageBox.Show("Do you want to Tender €10", 
        "Tender Amount", MessageBoxButtons.YesNo, 
        MessageBoxIcon.Question) == DialogResult.Yes;
    if (response)
        SendKeys.Send("{F12}{DOWN}10.00{{ENTER}");
    return response;
}

答案 2 :(得分:0)

// This is dialog Yes No in Visual Studio Form C++;

        System::Windows::Forms::DialogResult ResultDialog = MessageBox::Show("Msg title", "Hello", MessageBoxButtons::YesNo, MessageBoxIcon::Question);

        if (ResultDialog == System::Windows::Forms::DialogResult::Yes)
        {

            this->Close();
        }
        else
        {
            //some code 
        }