none
Запрос сведений в MessageBox RRS feed

  • Вопрос

  • Здравствуйте! В общем, я использую диалоговое окно в своей программе и хочу узнать, какая кнопка была нажата пользователем. в MSDN на странице Приступая к работе с Windows Forms->Диалоговые окна в Windows Forms->Практическое руководство. Отображение окон сообщений во втором примере есть код C++. Но у меня при его использовании выходит ошибка error C2039: Yes: не является членом "System::Windows::Forms::Form::DialogResult" . Не могу понять, почему так. Просмотрел документацию класса MessageBox на MSDN, там действительно есть члены Yes и No. Может я что-то не подключил? Хотя такое диалоговое окно работало - MessageBoxButtons::OKCancel. В чем причина? Заранее спасибо.
    12 июля 2013 г. 11:57

Ответы

Все ответы

  • Здравствуйте Влад,

    Покажите пожалуйста код программы, а то так только гадать можно.


    Если вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение"

    15 июля 2013 г. 6:13
    Модератор
  • #pragma once

    namespace KeyManager {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;

    /// <summary>
    /// Сводка для Form1
    /// </summary>
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
    Form1(void)
    {
    InitializeComponent();
    //
    //TODO: добавьте код конструктора
    //
    }

    protected:
    /// <summary>
    /// Освободить все используемые ресурсы.
    /// </summary>
    ~Form1()
    {
    if (components)
    {
    delete components;
    }
    }
    private: System::Windows::Forms::TextBox^  SiteName;
    private: System::Windows::Forms::TextBox^  Password;
    protected: 


    protected: 

    protected: 

    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
    private: System::Windows::Forms::Label^  Message;
    private: System::Windows::Forms::TextBox^  Login;
    private: System::Windows::Forms::Label^  label1;
    private: System::Windows::Forms::Label^  label2;
    private: System::Windows::Forms::Label^  label3;






    private:
    /// <summary>
    /// Требуется переменная конструктора.
    /// </summary>
    System::ComponentModel::Container ^components;

    #pragma region Windows Form Designer generated code
    /// <summary>
    /// Обязательный метод для поддержки конструктора - не изменяйте
    /// содержимое данного метода при помощи редактора кода.
    /// </summary>
    void InitializeComponent(void)
    {
    this->SiteName = (gcnew System::Windows::Forms::TextBox());
    this->Password = (gcnew System::Windows::Forms::TextBox());
    this->button1 = (gcnew System::Windows::Forms::Button());
    this->button2 = (gcnew System::Windows::Forms::Button());
    this->Message = (gcnew System::Windows::Forms::Label());
    this->Login = (gcnew System::Windows::Forms::TextBox());
    this->label1 = (gcnew System::Windows::Forms::Label());
    this->label2 = (gcnew System::Windows::Forms::Label());
    this->label3 = (gcnew System::Windows::Forms::Label());
    this->SuspendLayout();
    // 
    // SiteName
    // 
    this->SiteName->Location = System::Drawing::Point(21, 30);
    this->SiteName->Name = L"SiteName";
    this->SiteName->Size = System::Drawing::Size(121, 20);
    this->SiteName->TabIndex = 0;
    this->SiteName->TextChanged += gcnew System::EventHandler(this, &Form1::SiteName_TextChanged);
    // 
    // Password
    // 
    this->Password->Location = System::Drawing::Point(324, 30);
    this->Password->Name = L"Password";
    this->Password->Size = System::Drawing::Size(119, 20);
    this->Password->TabIndex = 2;
    // 
    // button1
    // 
    this->button1->Location = System::Drawing::Point(21, 78);
    this->button1->Name = L"button1";
    this->button1->Size = System::Drawing::Size(202, 33);
    this->button1->TabIndex = 3;
    this->button1->Text = L"Сохранить пароль";
    this->button1->UseVisualStyleBackColor = true;
    this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
    // 
    // button2
    // 
    this->button2->Location = System::Drawing::Point(237, 78);
    this->button2->Name = L"button2";
    this->button2->Size = System::Drawing::Size(206, 33);
    this->button2->TabIndex = 4;
    this->button2->Text = L"Найти пароль";
    this->button2->UseVisualStyleBackColor = true;
    this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
    // 
    // Message
    // 
    this->Message->BorderStyle = System::Windows::Forms::BorderStyle::Fixed3D;
    this->Message->ImageAlign = System::Drawing::ContentAlignment::MiddleRight;
    this->Message->Location = System::Drawing::Point(21, 122);
    this->Message->Name = L"Message";
    this->Message->Size = System::Drawing::Size(422, 15);
    this->Message->TabIndex = 4;
    // 
    // Login
    // 
    this->Login->Location = System::Drawing::Point(170, 30);
    this->Login->Name = L"Login";
    this->Login->Size = System::Drawing::Size(125, 20);
    this->Login->TabIndex = 1;
    // 
    // label1
    // 
    this->label1->AutoSize = true;
    this->label1->Location = System::Drawing::Point(18, 14);
    this->label1->Name = L"label1";
    this->label1->Size = System::Drawing::Size(62, 13);
    this->label1->TabIndex = 5;
    this->label1->Text = L"Веб-адрес:";
    // 
    // label2
    // 
    this->label2->AutoSize = true;
    this->label2->Location = System::Drawing::Point(167, 9);
    this->label2->Name = L"label2";
    this->label2->Size = System::Drawing::Size(41, 13);
    this->label2->TabIndex = 6;
    this->label2->Text = L"Логин:";
    // 
    // label3
    // 
    this->label3->AutoSize = true;
    this->label3->Location = System::Drawing::Point(321, 14);
    this->label3->Name = L"label3";
    this->label3->Size = System::Drawing::Size(48, 13);
    this->label3->TabIndex = 7;
    this->label3->Text = L"Пароль:";
    // 
    // Form1
    // 
    this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    this->ClientSize = System::Drawing::Size(464, 147);
    this->Controls->Add(this->label3);
    this->Controls->Add(this->label2);
    this->Controls->Add(this->label1);
    this->Controls->Add(this->Login);
    this->Controls->Add(this->Message);
    this->Controls->Add(this->button2);
    this->Controls->Add(this->button1);
    this->Controls->Add(this->Password);
    this->Controls->Add(this->SiteName);
    this->Name = L"Form1";
    this->Text = L"Form1";
    this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
    this->ResumeLayout(false);
    this->PerformLayout();

    }
    #pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    using namespace System::Runtime::InteropServices;
    System::String^ str = SiteName->Text;
    char *site_name = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
    str = Login->Text;
    char *log = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
    str = Password->Text;
    char *pass = (char*)(void*)Marshal::StringToHGlobalAnsi(str);
    if ((strlen(site_name) == 0) || (strlen(log) == 0) || (strlen(pass) == 0)) Message->Text = "Не все поля заполнены. Операция не выполнена.";
    else{
    char *pass_code = GetPasswordCode(pass, "Outbin");
    char *log_code = GetPasswordCode(log, "Outbin");
    int sel = WritePasswordToFile(site_name, log_code, pass_code, "Passwords");
    switch (sel){
    case 0: Message->Text = "Операция выполнена успешно!";
    break;
    case 1: Message->Text = "Введенные данные имеют слишком большую длину.";
    break;
    //case 2:

    /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    здесь я хочу вызвать диалоговое окно и узнать результат нажатия пользователем кнопки. диалоговое окно с кнопками Да-Нет.

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.*/
    }
    }

    }
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
    }
    private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    }
    private: System::Void SiteName_TextChanged(System::Object^  sender, System::EventArgs^  e) {
    }
    };
    }

    Восклицательными знаками пометил место, которое меня интересует. Весь код не могу скинуть, я его уже изменил. Это только файл Form1.h. Важно то, что в данном проекте у меня не работает код получения ответа от пользователя, как я писал выше. Спасибо за ответ. 

    • Изменено VladVin 15 июля 2013 г. 6:52 поправка
    15 июля 2013 г. 6:23
  • Этот код ничем не поможет, так не виден где DialogResult, но думаю что у Вас такая же проблема как здесь: http://social.msdn.microsoft.com/Forums/ru-RU/56eb3c7d-47f6-491d-9d32-53d22a5d7a6a/error-c2039

    Смотрите предпоследний ответ.


    Если вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение"

    • Помечено в качестве ответа VladVin 15 июля 2013 г. 11:29
    15 июля 2013 г. 10:01
    Модератор
  • Спасибо большое, ваш ответ помог. Причина была в том, что я неправильно использовал объявление переменной. Правильно: System::Windows::Forms::DialogResult answer;
    15 июля 2013 г. 11:31
  • Не зачто, всегда рады помочь.


    Если вам помог чей-либо ответ, пожалуйста, не забывайте жать на кнопку "Предложить как ответ" или "Проголосовать за полезное сообщение"

    15 июля 2013 г. 13:08
    Модератор