مشاركة عبر


الإرشادات التفصيلية: يتم الآن استرداد معلومات صندوق حوار جميعا باستخدام الالكائنات

تحتوي مربعات حوار نموذج s Windows معظم خصائص inنموذجation expose ذلك إلى الأصل نموذج. بدلاً من إنشاء العديد من الخصائص، التي يمكن أن تعرض مجموعة من بيانات ذات الصلة من خلال واحدة صندوق حوار الخاصية عن طريق إنشاء كائن فئة تخزين الجميع المعلومات المطلوبة بالنموذج الأصلي.

معاينة التالية بإنشاء صندوق حوار الذي يستهدف UserInformationاسم الخاصية الذي يحتوي على الصفحة وبيانات عنوان بريد الإلكتروني، والذي يتوفر للأصل نموذج حتى بعد صندوق حوار مغلق.

إلى إنشاء صندوق حوار الذي سوف يعرض بيانات الخاصة به إلى كائن

  1. في Visual Studio، قم بإنشاء مشروع جديد Windows Forms يسمى من DialogBoxObjects. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء مشروع تطبيقات Windows.

  2. إضافة جديد Formإلى المشروع وتسميته من InformationForm. لمزيد من المعلومات، راجع كيفية القيام بما يلي: قم بإضافة Windows Forms إلى المشاريع.

  3. من مربع أدوات التحكم، يسحب TableLayoutPanelعلى InformationFormالنموذج.

  4. استخدام علامة ذكى التي تظهر كسهم بجانب TableLayoutPanelالتحكم إلى إضافة ثالث صف إلى الجدول.

  5. استخدم الفأرة إلى تغيير حجم صفوف حتى تصبح الجميع صفوف الثلاثة.

  6. من إلى olbox ، اسحب Labelإلى كل خلية جدول في العمود أول.

  7. التعيين Nameخاصية Labelعناصر التحكم إلى firstNameLabel lastNameLabelو emailLabel .

  8. التعيين الاسم أولText خاصية لعناصر التحكم إلى و اسم العائلة بريد إلكتروني.

  9. من إلى olbox ، اسحب TextBoxإلى كل خلية في العمود الثاني.

  10. التعيين Nameخاصية TextBoxعناصر التحكم إلى firstNameText lastNameTextو emailText .

  11. من من مربع الأدوات، قم بسحب عنصر Buttonعنصر التحكم إلى النموذج.

  12. التعيين Nameخاصية Buttonإلى closeFormButton .

  13. بتعيين Textخاصية Buttonإلى ‏‏موافق .

  14. قم بإضافة ملف فئة جديدة باسم UserInformation للمشروع.

  15. C# مشروع، إضافة publicمؤهل لتعريف الفئة لجعل هذه الفئة مرئي خارج مساحة الاسم الخاصة به.

  16. في UserInformationالفئة، إضافة ملفات تعريف خاصية FirstName، LastNameو EmailAddressالخصائص. عندما تنتهي، تعليمات برمجية يجب أن تبدو كما يلي:

    Public Class UserInformation
        Private _FirstName As String = ""
        Private _LastName As String = ""
        Private _EmailAddress As String = ""
    
        Public Property FirstName() As String
            Get
                Return _FirstName
            End Get
            Set(ByVal value As String)
                _FirstName = value
            End Set
        End Property
    
    
        Public Property LastName() As String
            Get
                Return _LastName
            End Get
            Set(ByVal value As String)
                _LastName = value
            End Set
        End Property
    
    
        Public Property EmailAddress() As String
            Get
                Return _EmailAddress
            End Get
            Set(ByVal value As String)
                _EmailAddress = value
            End Set
        End Property
    End Class
    
    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace DialogBoxObjects
    {
        public class UserInformation
        {
            private string _firstName = "";
            private string _lastName = "";
            private string _emailAddress = "";
    
            public string FirstName
            {
                get
                {
                    return (_firstName);
                }
                set
                {
                    _firstName = value;
                }
            }
    
            public string LastName
            {
                get
                {
                    return (_lastName);
                }
                set
                {
                    _lastName = value;
                }
            }
    
            public string EmailAddress
            {
                get
                {
                    return (_emailAddress);
                }
                set
                {
                    _emailAddress = value;
                }
            }
        }
    }
    
    using namespace System;
    using namespace System::Collections::Generic;
    using namespace System::Text;
    
    namespace DialogBoxObjects
    {
        public ref class UserInformation
        {
        public:
            UserInformation()
            {
                firstNameValue = "";
                lastNameValue = "";
                emailAddressValue = "";
            }
        private:
            String^ firstNameValue;
        private:
            String^ lastNameValue;
        private:
            String^ emailAddressValue;
        public:
            property String^ FirstName
            {
                String^ get()
                {
                    return firstNameValue;
                }
                void set( String^ value )
                {
                    firstNameValue = value;
                }
            }
        public:
            property String^ LastName
            {
                String^ get()
                {
                    return lastNameValue;
                }
                void set( String^ value )
                {
                    lastNameValue = value;
                }
            }
        public:
            property String^ EmailAddress
            {
                String^ get()
                {
                    return emailAddressValue;
                }
                void set( String^ value )
                {
                    emailAddressValue = value;
                }
            }
        };
    }
    
  17. في "مستكشف الحلول"، يمين-انقر فوق من InformationForm وحدد عرض تعليمات برمجية .

  18. في صفحة لتعليمات برمجية في الخلف من InformationForm، Enter الزر الزر التعليمة البرمجية التالية في InformationFormالفئة إلى إضافة UserInformationخاصية.

    Public ReadOnly Property UserInformation() As UserInformation
        Get
            Return _UI
        End Get
    End Property
    
    public UserInformation UserInformation
    {
        get
        {
            return (_ui);
        }
    }
    
    public:
        property DialogBoxObjects::UserInformation^ UserInformation
        {
            DialogBoxObjects::UserInformation^ get()
            {
                return this->userInformation;
            }
        }
    
  19. في InformationFormفئة، إضافة Validatedمعالج الأحداث لكل TextBoxعناصر التحكم.

  20. في تعليمات برمجية لمعالج الأحداث، قم بتحديث خاصية المطابق ل UserInformationفئة عند TextBoxتغيير القيمة، كما هو موضح في التعليمة البرمجية التالية. لمزيد من المعلومات، راجع كيفية القيام بما يلي: إنشاء معالجات الأحداث باستخدام "مصمم".

    Private Sub FirstNameText_Validated(ByVal sender As Object, ByVal e As EventArgs) Handles FirstNameText.Validated
        Dim FirstNameTemp As String = FirstNameText.Text.Trim()
        If FirstNameText.Text.Trim().Length > 0 Then
            _UI.FirstName = FirstNameTemp
        End If
    End Sub
    
    Private Sub LastNameText_Validated(ByVal sender As Object, ByVal e As EventArgs) Handles LastNameText.Validated
        Dim LastNameTemp As String = LastNameText.Text.Trim()
        If LastNameText.Text.Trim().Length > 0 Then
            _UI.LastName = LastNameTemp
        End If
    End Sub
    
    Private Sub EmailText_Validated(ByVal sender As Object, ByVal e As EventArgs) Handles EmailText.Validated
        Dim EmailTemp As String = EmailText.Text.Trim()
        If EmailTemp.Length > 0 Then
            _UI.EmailAddress = EmailTemp
        End If
    End Sub
    
    public InformationForm()
    {
        InitializeComponent();
    
        firstNameText.Validated += new EventHandler(firstNameText_Validated);
        lastNameText.Validated += new EventHandler(lastNameText_Validated);
        emailText.Validated += new EventHandler(emailText_Validated);
    }
    
    void firstNameText_Validated(object sender, EventArgs e)
    {
        string firstNameTemp = firstNameText.Text.Trim();
        if (firstNameText.Text.Trim().Length > 0)
        {
            _ui.FirstName = firstNameTemp;
        }
    }
    
    void lastNameText_Validated(object sender, EventArgs e)
    {
        string lastNameTemp = lastNameText.Text.Trim();
        if (lastNameText.Text.Trim().Length > 0)
        {
            _ui.LastName = lastNameTemp;
        }
    }
    
    void emailText_Validated(object sender, EventArgs e)
    {
        string emailTemp = emailText.Text.Trim();
        if (emailTemp.Length > 0)
        {
            _ui.EmailAddress = emailTemp;
        }
    }
    
        private:
            void FirstNameText_Validated(Object^ sender, EventArgs^ e)
            {
                String^ firstName = firstNameText->Text->Trim();
                if (firstName->Length > 0)
                {
                    userInformation->FirstName = firstName;
                }
            }
    
        private:
            void LastNameText_Validated(Object^ sender, EventArgs^ e)
            {
                String^ lastName = lastNameText->Text->Trim();
                if (lastName->Length > 0)
                {
                    userInformation->LastName = lastName;
                }
            }
    
        private:
            void EmailText_Validated(Object^ sender, EventArgs^ e)
            {
                String^ email = emailText->Text->Trim();
                if (email->Length > 0)
                {
                    userInformation->EmailAddress = email;
                }
            }
    
        private:
            void CloseFormButton_Click(Object^ sender, EventArgs^ e)
            {
                if (userInformation->FirstName->Length == 0)
                {
                    MessageBox::Show("First name cannot be zero-length.");
                    return;
                }
                if (userInformation->LastName->Length == 0)
                {
                    MessageBox::Show("Last name cannot be zero-length.");
                    return;
                }
                if (userInformation->EmailAddress->Length == 0)
                {
                    MessageBox::Show("Email address cannot be zero-length.");
                    return;
                }
    
                this->DialogResult = ::DialogResult::OK;
                this->Hide();
            }
    
    
    
    
    #pragma region Windows Form Designer generated code
    
            /// <summary>
            /// Required method for Designer support - do not modify
            /// the contents of this method with the code editor.
            /// </summary>
        private:
            void InitializeComponent()
            {
                this->tableLayoutPanel1 = 
                    gcnew System::Windows::Forms::TableLayoutPanel();
                this->firstNameLabel = gcnew System::Windows::Forms::Label();
                this->lastNameLabel = gcnew System::Windows::Forms::Label();
                this->emailLabel = gcnew System::Windows::Forms::Label();
                this->firstNameText = gcnew System::Windows::Forms::TextBox();
                this->lastNameText = gcnew System::Windows::Forms::TextBox();
                this->emailText = gcnew System::Windows::Forms::TextBox();
                this->closeFormButton = gcnew System::Windows::Forms::Button();
                this->tableLayoutPanel1->SuspendLayout();
                this->SuspendLayout();
                //
                // tableLayoutPanel1
                //
                this->tableLayoutPanel1->ColumnCount = 2;
                this->tableLayoutPanel1->ColumnStyles->Add(
                    gcnew System::Windows::Forms::ColumnStyle(
                    System::Windows::Forms::SizeType::Percent, 33.98533F));
                this->tableLayoutPanel1->ColumnStyles->Add(
                    gcnew System::Windows::Forms::ColumnStyle(
                    System::Windows::Forms::SizeType::Percent, 66.01467F));
                this->tableLayoutPanel1->Controls->Add(this->firstNameLabel, 0, 0);
                this->tableLayoutPanel1->Controls->Add(this->lastNameLabel, 0, 1);
                this->tableLayoutPanel1->Controls->Add(this->emailLabel, 0, 2);
                this->tableLayoutPanel1->Controls->Add(this->firstNameText, 1, 0);
                this->tableLayoutPanel1->Controls->Add(this->lastNameText, 1, 1);
                this->tableLayoutPanel1->Controls->Add(this->emailText, 1, 2);
                this->tableLayoutPanel1->Location = System::Drawing::Point(33, 30);
                this->tableLayoutPanel1->Name = "tableLayoutPanel1";
                this->tableLayoutPanel1->RowCount = 3;
                this->tableLayoutPanel1->RowStyles->Add(
                    gcnew System::Windows::Forms::RowStyle(
                    System::Windows::Forms::SizeType::Percent, 50.0F));
                this->tableLayoutPanel1->RowStyles->Add(
                    gcnew System::Windows::Forms::RowStyle(
                    System::Windows::Forms::SizeType::Percent, 50.0F));
                this->tableLayoutPanel1->RowStyles->Add(
                    gcnew System::Windows::Forms::RowStyle(
                    System::Windows::Forms::SizeType::Absolute, 41.0F));
                this->tableLayoutPanel1->Size = System::Drawing::Size(658, 116);
                this->tableLayoutPanel1->TabIndex = 0;
                //
                // firstNameLabel
                //
                this->firstNameLabel->Anchor = 
                    System::Windows::Forms::AnchorStyles::None;
                this->firstNameLabel->AutoSize = true;
                this->firstNameLabel->Location = System::Drawing::Point(82, 11);
                this->firstNameLabel->Name = "firstNameLabel";
                this->firstNameLabel->Size = System::Drawing::Size(59, 14);
                this->firstNameLabel->TabIndex = 0;
                this->firstNameLabel->Text = "First Name";
                //
                // lastNameLabel
                //
                this->lastNameLabel->Anchor = 
                    System::Windows::Forms::AnchorStyles::None;
                this->lastNameLabel->AutoSize = true;
                this->lastNameLabel->Location = System::Drawing::Point(82, 48);
                this->lastNameLabel->Name = "lastNameLabel";
                this->lastNameLabel->Size = System::Drawing::Size(59, 14);
                this->lastNameLabel->TabIndex = 1;
                this->lastNameLabel->Text = "Last Name";
                //
                // emailLabel
                //
                this->emailLabel->Anchor = 
                    System::Windows::Forms::AnchorStyles::None;
                this->emailLabel->AutoSize = true;
                this->emailLabel->Location = System::Drawing::Point(73, 88);
                this->emailLabel->Name = "emailLabel";
                this->emailLabel->Size = System::Drawing::Size(77, 14);
                this->emailLabel->TabIndex = 2;
                this->emailLabel->Text = "Email Address";
                //
                // firstNameText
                //
                this->firstNameText->Anchor = 
                    System::Windows::Forms::AnchorStyles::None;
                this->firstNameText->Location = System::Drawing::Point(339, 8);
                this->firstNameText->Name = "firstNameText";
                this->firstNameText->Size = System::Drawing::Size(203, 20);
                this->firstNameText->TabIndex = 3;
                //
                // lastNameText
                //
                this->lastNameText->Anchor = 
                    System::Windows::Forms::AnchorStyles::None;
                this->lastNameText->Location = System::Drawing::Point(339, 45);
                this->lastNameText->Name = "lastNameText";
                this->lastNameText->Size = System::Drawing::Size(202, 20);
                this->lastNameText->TabIndex = 4;
                //
                // emailText
                //
                this->emailText->Anchor = 
                    System::Windows::Forms::AnchorStyles::None;
                this->emailText->Location = System::Drawing::Point(336, 85);
                this->emailText->Name = "emailText";
                this->emailText->Size = System::Drawing::Size(208, 20);
                this->emailText->TabIndex = 5;
                //
                // closeFormButton
                //
                this->closeFormButton->Location = System::Drawing::Point(550, 211);
                this->closeFormButton->Name = "closeFormButton";
                this->closeFormButton->Size = System::Drawing::Size(141, 23);
                this->closeFormButton->TabIndex = 1;
                this->closeFormButton->Text = "OK";
                this->closeFormButton->Click += gcnew System::EventHandler(this,
                    &InformationForm::CloseFormButton_Click);
                //
                // InformationForm
                //
                this->AutoScaleDimensions = System::Drawing::SizeF(6.0F, 13.0F);
                this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
                this->ClientSize = System::Drawing::Size(744, 258);
                this->Controls->Add(this->closeFormButton);
                this->Controls->Add(this->tableLayoutPanel1);
                this->Name = "InformationForm";
                this->Text = "User Information";
                this->tableLayoutPanel1->ResumeLayout(false);
                this->tableLayoutPanel1->PerformLayout();
                this->ResumeLayout(false);
    
            }
    
    #pragma endregion
    
        public:
            InformationForm()
            {
                userInformation = gcnew DialogBoxObjects::UserInformation;
    
                components = nullptr;
                InitializeComponent();
    
                firstNameText->Validated += gcnew EventHandler
                    (this, &InformationForm::FirstNameText_Validated);
                lastNameText->Validated += gcnew EventHandler(this, 
                    &InformationForm::LastNameText_Validated);
                emailText->Validated += gcnew EventHandler(this, 
                    &InformationForm::EmailText_Validated);
            }
    
  21. في InformationFormالفئة، إضافة Clickمعالج الحدث الخاص التحكم closeFormButton .

  22. في التعليمات البرمجية لمعالج الأحداث بالتحقق من صحة إدخال و يغلق صندوق الحوار إذا كان إدخال صالح، كما هو موضح في التعليمة البرمجية التالية.

    Private Sub closeFormButton_Click(ByVal sender As Object, ByVal e As EventArgs)
        If _UI.FirstName.Length = 0 Then
            MessageBox.Show("First name cannot be zero-length.")
            Exit Sub
        End If
        If _UI.LastName.Length = 0 Then
            MessageBox.Show("Last name cannot be zero-length.")
            Exit Sub
        End If
        If _UI.EmailAddress.Length = 0 Then
            MessageBox.Show("Email address cannot be zero-length.")
            Exit Sub
        End If
    
        Me.DialogResult = System.Windows.Forms.DialogResult.OK
        Me.Close()
    End Sub
    
    private void closeFormButton_Click(object sender, EventArgs e)
    {
        if (_ui.FirstName.Length == 0)
        {
            MessageBox.Show("First name cannot be zero-length.");
            return;
        }
        if (_ui.LastName.Length == 0)
        {
            MessageBox.Show("Last name cannot be zero-length.");
            return;
        }
        if (_ui.EmailAddress.Length == 0)
        {
            MessageBox.Show("Email address cannot be zero-length.");
            return;
        }
    
        this.DialogResult = DialogResult.OK;
        this.Hide();
    }
    
    private:
        void CloseFormButton_Click(Object^ sender, EventArgs^ e)
        {
            if (userInformation->FirstName->Length == 0)
            {
                MessageBox::Show("First name cannot be zero-length.");
                return;
            }
            if (userInformation->LastName->Length == 0)
            {
                MessageBox::Show("Last name cannot be zero-length.");
                return;
            }
            if (userInformation->EmailAddress->Length == 0)
            {
                MessageBox::Show("Email address cannot be zero-length.");
                return;
            }
    
            this->DialogResult = ::DialogResult::OK;
            this->Hide();
        }
    

لإظهار صندوق حوار قمت بإنشائها واسترداد بيانات باستخدام كائن

  1. في "مستكشف الحلول"، يمين-انقر من Form1 واختر عرض مصمم .

  2. من من مربع الأدوات، قم بسحب عنصر Buttonعنصر التحكم إلى النموذج.

  3. التعيين Nameخاصية Buttonإلى showFormButton .

  4. بتعيين Textخاصية Buttonإلى إظهار نموذج.

  5. قم بإضافة Clickمعالج الحدث الخاص showFormButton عنصر تحكم.

  6. في تعليمات برمجية لمعالج الأحداث، اتصل صندوق حوار وعرض نتائج، كما هو موضح في التعليمة البرمجية التالية.

    Private Sub ShowFormButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ShowFormButton.Click
        Dim InfoForm As New InformationForm()
        Dim dr As DialogResult = InfoForm.ShowDialog()
        If dr = System.Windows.Forms.DialogResult.OK Then
            Dim Txt As String = "First Name: " & InfoForm.UserInformation.FirstName + ControlChars.Cr + ControlChars.Lf
            Txt &= "Last Name: " & InfoForm.UserInformation.LastName + ControlChars.Cr + ControlChars.Lf
            Txt &= "Email Address: " & InfoForm.UserInformation.EmailAddress
    
            MessageBox.Show(Txt)
        End If
    
        InfoForm.Dispose()
    End Sub
    
  7. بنية و تشغيل العينة.

  8. عند نموذج 1 يظهر انقر زر نموذج عرض.

  9. عند ظهور من InformationForm ، حدد المعلومات و ثم انقر فوق ‏‏موافق .

    عند النقر فوق ‏‏موافق ، المعلومات التي قمت بتحديدها هو التي تم استردادها من النموذج، والمعلومات هو dهوplayed في صندوق رسالة، ومن ثم النموذج هو مغلق.

راجع أيضًا:

المهام

كيفية القيام بما يلي: إنشاء مربعات حوار في تصميم الوقت

كيفية القيام بما يلي: يغلق مربعات حوار و الاحتفاظ بإدخالات مستخدم

كيفية القيام بما يلي: استرداد معلومات صندوق حوار اختيارياً باستخدام خصائص متعددة

المبادئ

إدخال مستخدم إلى مربعات حوار

موارد أخرى

مربعات الحوار في نماذج Windows