我想将开销保持在最低限度。 现在我有:

// 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
}

不幸的是,我的客户更喜欢“继续”和“取消”来代替默认的“是”和“否”按钮文本。 似乎应该有一个简单的方法来做到这一点。

===============>>#1 票数:2 已采纳

你可以使用“确定”和“取消”

MessageBoxButtons::YesNo替换MessageBoxButtons::OKCancel

MessageBoxButtons枚举

除此之外,您必须创建一个新表单,因为我不相信Enum可以扩展。

===============>>#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
);

===============>>#3 票数:0

从我能发现的一切看起来, 科林是正确的。 这是我用来完成原始目标的代码。 我通常不是一个托管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
}

  ask by Andrew Dunaway translate from so

未解决问题?本站智能推荐:

1回复

在自定义C / C ++程序中获取PPP0接口Tx / Rx字节的最简单方法是什么?

我需要在C / C ++程序Tx / Rx中显示有关三个网络接口的信息。 其中之一是ppp接口,但是我的代码无法与ppp0一起使用。 我正在使用getifaddrs手册页中的代码示例(请参阅man getifaddrs ),该示例基本上检查接口是否具有AF_PACKET系列,如果是,则从
1回复

在C ++中使用cout创建DebugPrint函数的简单方法

是否有一些基于cout创建DebugPrint函数的简单方法,该方法将接受cout支持的所有数据类型。 我试过了 但是,它不起作用。
15回复

使用C / C ++创建多线程应用程序的最简单方法是什么?

使用C / C ++创建多线程应用程序的最简单方法是什么?
3回复

在C ++中使用STL算法的简单方法

我在Win32上有以下代码: 由于无法在使用GCC / LLVM Clang的iPhone上进行编译,因此我想从中删除C ++ 11功能。 在不使用C ++ 11功能的情况下,还有其他使用STL算法的简便方法吗? 我不想在代码中的任何地方都声明简单的函数,例如比较函数。
2回复

在C ++中创建编辑框的最简单方法是什么

我需要不使用mfc在c ++中创建编辑框..... 只有win32
1回复

要自定义消息框,我应该挂钩消息框还是使用CreateWindowEx来创建模仿?

我一直在尝试创建一个带有可更改,可读文本和可自定义按钮的MessageBox ,我认为为它做一个钩子可能很容易,但我在MSDN上阅读: “钩子往往会减慢系统速度,因为它们会增加系统必须为每条消息执行的处理量。您应该只在必要时安装一个钩子,并尽快将其删除。” 我想知道当我可以使用Cre
2回复

在C ++中使用自定义速率处理创建更新方法

如果您曾经使用过XNA game studio 4,则对更新方法很熟悉。 默认情况下,其中的代码每秒处理60次。 我一直在努力在c ++中重新创建这样的效果。 我想创建一个仅每秒处理代码x次的方法。 我尝试过的每种方式都像循环一样一次处理所有内容。 我已经尝试for循环, whil
1回复

使用Native / C ++代码在VS2010中创建简单COM对象的最简单方法是什么?

这是我发布的先前问题的后续文章(请参阅此处 )。 我正在尝试从HTML页面中运行的Javascript调用本机/ C ++代码。 所引用问题的答案是创建一个COM对象。 然后,JavaScript可以创建COM对象的实例,并在其上调用方法以获取native / C ++代码。 因此,
8回复

在C ++中动态创建和调用类方法的最简单方法是什么?

我想用类名和方法填充一个映射,一个唯一的标识符和指向该方法的指针。 如果方法是静态的,那么一个简单的指针就足够了,问题很简单,但我想动态创建对象,所以我需要存储一个指向类的方法和方法的偏移量,我不知道这是否有效(如果偏移总是相同的等等)。 问题是C ++缺乏反射,使用反射的解释语言
5回复

在C ++中为游戏创建可点击网格的最简单方法是什么?

我已经有一段时间没有使用C ++了,所以我决定进行一个小项目来再次熟悉它。 我正在尝试制作中文跳棋游戏,但是我没有C ++ GUI设计的经验。 有没有一种真正简单的方法来制作网格(即位图六边形或其他形状),当单击该网格时,会给我我所单击的网格的索引号? 如果有人有任何执行此操作的示例,即使