سؤال

لديّ winform مع 3 مربعات جماعية ، واحدة مع صناديق التحرير والسرد ، واثنين مع أزرار الراديو. لقد قمت بتعيين كل منهم وعناصر التحكم في أطفالهم على "TabStop = false" ، ولكن عندما أقوم بدوران مع علامة التبويب ، يتم تركيز زر الراديو المحدد حاليًا في كل من مربعين المجموعة الأخيرين.

إذا لم تكن هناك طريقة لتغيير هذا السلوك ، فما هو الحدث الجيد للقبض على التركيز وتحريكه بعيدًا؟ لا يمكنني العثور على حدث "onfocus".


يتمثل الحل في تعيين طريقة واحدة (رمز أدناه) للتعامل مع حدث "Enter" لكل زر راديو في النموذج (إذا كان هذا ما ترغب فيه).

في الواقع ، لقد فعلت ذلك فقط من أجل أزرار الراديو في مربع المجموعة الأولى وعملت ، فإن أزرار راديو المجموعة الثانية لم يتم التركيز عليها ، على الرغم من عدم معالجة أحداث "Enter" الخاصة بهم. هذا ليس السلوك الذي كنت تتوقعه.

private void radiobuttonXGroup1_Enter(object sender, EventArgs e)
{
   SomeOtherControl.Focus();
}

في ملف *.designer.cs ، تقوم بتحرير كل حدث إدخال (لكل زر راديو) للإشارة إلى معالج حدث واحد (الطريقة أعلاه).

this.radiobutton1Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton2Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
this.radiobutton3Group1.Enter += new System.EventHandler(this.radiobuttonXGroup1_Enter);
هل كانت مفيدة؟

المحلول

وثائق MSDN ل RadiObutton.Tabstop الدول "تدعم API هذه البنية التحتية .NET Framework ولا تهدف إلى استخدامها مباشرة من الكود الخاص بك". وهذا يعني في الأساس ، "هذا لن يعمل كيف تتوقع أن".

مع ذلك ، سيطلق حدث Enter عندما يتلقى الزر التركيز. يمكنك محاولة استخدام ذلك لنقل التركيز إلى عنصر تحكم آخر.

نصائح أخرى

قم بتعيين علامة التبويب على false على Radiobutton لمنع عمل Tabbing إلى عنصر التحكم حتى تقوم باختيار زر الراديو دون أي تجاوزات إضافية مثل اقتراح MSERGEANT.

تعديل

يمنع الرمز التالي الكود من الحصول على حدث مفتاح علامة تبويب:

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   radioButton1.TabStop = false;
}

تتصرف أزرار الراديو بشكل مختلف فيما يتعلق بعلامة التبويب من عناصر التحكم الأخرى من حيث أنها تعمل في مجموعات أو مجموعات بناءً على تعيين فهرس علامة التبويب أو وضع أزرار الراديو في مربع المجموعة.

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