لماذا تحتاج الأزرار ليكون الضغط مرتين على العمل في هذا حوار مشروط؟

StackOverflow https://stackoverflow.com/questions/1808336

  •  05-07-2019
  •  | 
  •  

سؤال

ولدي هذا C # رمز:

public partial class Continue : Form
{
    public Continue(string colourName)
    {
        InitializeComponent();
        lblMessage.Text = String.Format("Do you wish to change the colour to {0}", colourName);
    }

    private void btnConfirm_Click(object sender, EventArgs e)
    {
        btnConfirm.DialogResult = DialogResult.OK;
    }

    private void btnCancel_Click(object sender, EventArgs e)
    {
        btnCancel.DialogResult = DialogResult.Cancel;
    }
}

وأنه يعمل بشكل جيد، ولكن عندما يظهر مربع الحوار حتى أنه يتطلب مني أن انقر على زر مرتين لاستخدامه. هل لديها فكرة لماذا؟

هل كانت مفيدة؟

المحلول

وتحتاج إلى تعيين this.DialogResult بدلا من btnxxx.DialogResult في انقر معالجات، أو تعيين btnxxx.DialogResult قبل معالجات.

وتعيين DialogResult النموذج على الزر قبل تشغيل أسلوب انقر، وبالتالي فإن المرة الأولى التي يتم تشغيل الحدث ترك DialogResult للنموذج في لا شيء، لكن في المرة الثانية يتم تعيينها إلى (الان مجموعة) DialogResult الزر .

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top