我正在为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)
错误表示并非所有代码路径都返回值。下面是错误的图像
答案 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
}