我想将开销保持在最低限度。现在我有:
// Launch a Message Box with advice to the user
DialogResult result = MessageBox::Show("This may take awhile, do you wish to continue?", "Warning", MessageBoxButtons::YesNo, MessageBoxIcon::Exclamation);
// The test will only be launched if the user has selected Yes on the Message Box
if(result == DialogResult::Yes)
{
// Execute code
}
不幸的是,我的客户更喜欢“继续”和“取消”来代替默认的“是”和“否”按钮文本。似乎应该有一个简单的方法来做到这一点。
答案 0 :(得分:2)
您可以使用“确定”和“取消”
用MessageBoxButtons::YesNo
替换MessageBoxButtons::OKCancel
除此之外,您必须创建一个新表单,因为我不相信Enum可以扩展。
答案 1 :(得分:0)
从我能找到的所有内容看起来Corin是正确的。这是我用来完成原始目标的代码。我通常不是一个托管C ++程序员,所以任何编辑都会受到赞赏。
CustomMessageBox.h:
using namespace System::Windows::Forms;
/// <summary>
/// A message box for the test. Used to ensure user wishes to continue before starting the test.
/// </summary>
public ref class CustomMessageBox : Form
{
private:
/// Used to determine which button is pressed, default action is Cancel
static String^ Button_ID_ = "Cancel";
// GUI Elements
Label^ warningLabel_;
Button^ continueButton_;
Button^ cancelButton_;
// Button Events
void CustomMessageBox::btnContinue_Click(System::Object^ sender, EventArgs^ e);
void CustomMessageBox::btnCancel_Click(System::Object^ sender, EventArgs^ e);
// Constructor is private. CustomMessageBox should be accessed through the public ShowBox() method
CustomMessageBox();
public:
/// <summary>
/// Displays the CustomMessageBox and returns a string value of "Continue" or "Cancel"
/// </summary>
static String^ ShowBox();
};
CustomMessageBox.cpp:
#include "StdAfx.h"
#include "CustomMessageBox.h"
using namespace System::Windows::Forms;
using namespace System::Drawing;
CustomMessageBox::CustomMessageBox()
{
this->Size = System::Drawing::Size(420, 150);
this->Text="Warning";
this->AcceptButton=continueButton_;
this->CancelButton=cancelButton_;
this->FormBorderStyle= ::FormBorderStyle::FixedDialog;
this->StartPosition= FormStartPosition::CenterScreen;
this->MaximizeBox=false;
this->MinimizeBox=false;
this->ShowInTaskbar=false;
// Warning Label
warningLabel_ = gcnew Label();
warningLabel_->Text="This may take awhile, do you wish to continue?";
warningLabel_->Location=Point(5,5);
warningLabel_->Size=System::Drawing::Size(400, 78);
Controls->Add(warningLabel_);
// Continue Button
continueButton_ = gcnew Button();
continueButton_->Text="Continue";
continueButton_->Location=Point(105,87);
continueButton_->Size=System::Drawing::Size(70,22);
continueButton_->Click += gcnew System::EventHandler(this, &CustomMessageBox::btnContinue_Click);
Controls->Add(continueButton_);
// Cancel Button
cancelButton_ = gcnew Button();
cancelButton_->Text="Cancel";
cancelButton_->Location=Point(237,87);
cancelButton_->Size=System::Drawing::Size(70,22);
cancelButton_->Click += gcnew System::EventHandler(this, &CustomMessageBox::btnCancel_Click);
Controls->Add(cancelButton_);
}
/// <summary>
/// Displays the CustomMessageBox and returns a string value of "Continue" or "Cancel", depending on the button
/// clicked.
/// </summary>
String^ CustomMessageBox::ShowBox()
{
CustomMessageBox^ box = gcnew CustomMessageBox();
box->ShowDialog();
return Button_ID_;
}
/// <summary>
/// Event handler: When the Continue button is clicked, set the Button_ID_ value and close the CustomMessageBox.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
void CustomMessageBox::btnContinue_Click(System::Object^ sender, EventArgs^ e)
{
Button_ID_ = "Continue";
this->Close();
}
/// <summary>
/// Event handler: When the Cancel button is clicked, set the Button_ID_ value and close the CustomMessageBox.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
void CustomMessageBox::btnCancel_Click(System::Object^ sender, EventArgs^ e)
{
Button_ID_ = "Cancel";
this->Close();
}
然后最后修改原始代码:
// Launch a Message Box with advice to the user
String^ result = CustomMessageBox::ShowBox();
// The test will only be launched if the user has selected Continue on the Message Box
if(result == "Continue")
{
// Execute Code
}
答案 2 :(得分:0)
如下更改消息。这可能是我认为最简单的方式。
DialogResult result = MessageBox::Show(
"This may take awhile, do you wish to continue?**\nClick Yes to continue.\nClick No to cancel.**",
"Warning",
MessageBoxButtons::YesNo,
MessageBoxIcon::Exclamation
);