c# - WinForms AcceptButton काम नहीं कर रहा है?




modal-dialog (4)

ठीक है, यह मुझे परेशान कर रहा है, और मैं सिर्फ यह नहीं समझ सकता कि क्या गलत है ...

मैंने दो रूप बनाए हैं। पहले फॉर्म में बस एक साधारण बटन है, जो दूसरे को एक संवाद के रूप में खोलता है:

using (Form2 f = new Form2())
{
    if (f.ShowDialog() != DialogResult.OK)
        MessageBox.Show("Not OK");
    else
        MessageBox.Show("OK");
}

दूसरा, जो कि फॉर्म 2 है, पर दो बटन हैं। मैंने जो कुछ किया है, वह फॉर्म AcceptButton को एक सेट करना है, और दूसरे को रद्द करें बटन। मेरे सिर में यह सब कुछ है जो इस काम को करने के लिए जरूरी है। लेकिन जब मैं इसे चलाता हूं, तो मैं उस बटन पर क्लिक करता हूं जो फॉर्म 2 खोलता है। अब मैं CancelButton के रूप में एक सेट पर क्लिक कर सकता हूं, और मुझे "ठीक नहीं है" संदेश बॉक्स मिलता है। लेकिन जब मैं एक सेट पर AcceptButton के रूप में क्लिक करता हूं, कुछ नहीं होता है? फॉर्म 2 का प्रारंभिक कॉम्पोनेंट कोड इस तरह दिखता है:

private void InitializeComponent()
{
    this.button1 = new System.Windows.Forms.Button();
    this.button2 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    // 
    // button1
    // 
    this.button1.Location = new System.Drawing.Point(211, 13);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 23);
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.UseVisualStyleBackColor = true;
    // 
    // button2
    // 
    this.button2.DialogResult = System.Windows.Forms.DialogResult.Cancel;
    this.button2.Location = new System.Drawing.Point(130, 13);
    this.button2.Name = "button2";
    this.button2.Size = new System.Drawing.Size(75, 23);
    this.button2.TabIndex = 1;
    this.button2.Text = "button2";
    this.button2.UseVisualStyleBackColor = true;
    // 
    // Form2
    // 
    this.AcceptButton = this.button1;
    this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.CancelButton = this.button2;
    this.ClientSize = new System.Drawing.Size(298, 59);
    this.Controls.Add(this.button2);
    this.Controls.Add(this.button1);
    this.Name = "Form2";
    this.Text = "Form2";
    this.Load += new System.EventHandler(this.Form2_Load);
    this.ResumeLayout(false);
}

मैंने उन दो बटन जोड़ने से कुछ और नहीं किया है, और AcceptButton और CancelButton सेट करें। यह क्यों काम नहीं करता है?


आपको फ़ॉर्म की KeyPreview प्रॉपर्टी को सही पर सेट करने की आवश्यकता है, डिफ़ॉल्ट मान गलत है। याद रखें कि अगर फोकस AcceptButton की बजाय किसी अन्य बटन पर सेट किया गया है तो एंटर कुंजी इस बटन को निष्पादित करेगी



मुझे AcceptButton काम नहीं कर रहा था और डायलॉग रिसेट सुझाव फिक्स का हिस्सा था, जबकि मेरे पास 2 अन्य चीजें थीं जिन्हें बदलने की जरूरत थी:

  1. मेरा बटन दिखाई नहीं दे रहा था - जानबूझकर क्योंकि मैं "डिंग" को रोकना चाहता था जब बारकोड स्कैन करके कैरिज रिटर्न "दबाया गया" था।
  2. कंटेनर जिसमें बटन अंदर था, एक फर्क पड़ता था। मुझे इसे एक ही कंटेनर में रखना था, मेरे मामले में एक फॉर्म। पैनेल, टेक्स्टबॉक्स के रूप में जो इसे एक्सेस करने का प्रयास कर रहा था। मुझे यकीन नहीं है कि इससे कोई फर्क क्यों पड़ेगा, लेकिन ऐसा हुआ।

मुझे उम्मीद है इससे किसी को सहायता मिलेगी।


DialogResult पर DialogResult सेट करने का प्रयास करें

this.button1.DialogResult = System.Windows.Forms.DialogResult.OK;