سؤال

في WinForms إلى تعيين التركيز إلى عنصر تحكم محدد يبدو لي دائما أن تصل الرياح الدعوة Control.Select() و Control.Focus() إلى الحصول على عمل.

ما هو الفرق ، وهذا هو النهج الصحيح ؟

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

المحلول

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

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus.aspx

نصائح أخرى

التركيز() هو وظيفة على مستوى منخفض في الواقع مجموعات التركيز.

حدد() هو العالي على مستوى الأسلوب.يبدو للوهلة الأولى تكرارا التصاعدي في السيطرة على الأم الهرمي حتى يجدها مراقبة الحاويات.ثم مجموعات من أن الحاوية ActiveControl (دعا التحكم).المنطق في هذه الأساليب ليست واضحة ومع ذلك ، هناك معالجة خاصة على UserControl الحاويات.

للحصول على مثال عن كيفية فهي مختلفة, إذا كنت تحاول وضع التحكم في أشكال التطبيق الافتراضي التركيز عند فتحه, فقط حدد() ستعمل عندما دعا في منشئ بعد InitializeComponent().التركيز() لا.

فقط أن أضيف إلى هذا الموضوع وجدت أن عند كتابة المستخدم التحكم التي انتقلت عناصر التحكم الأخرى من شكل إلى آخر (تم إنشاؤه حديثا شكل).النموذج الأصلي لم يعد حدد عنصر التحكم ولكن باستخدام التركيز سمح لها أن تفعل ذلك.أعتقد أن هذا يؤكد على إجابات حول مستويات هذه أساليب العمل.ولكن هذا يعني أيضا أنها ليست بسيطة يكفي أن أقول استخدام حدد في أعلى مستوى منذ اختيار لم يعد يعمل كما هو متوقع على شكل الاصلي (غير أنه ينبغي أن يتم وضعها في شكل مختلف - أنا أقبل ذلك)

التركيز(), في بعض الحالات, يمكن أن يسبب نافذة امتلاك التحكم للحصول على التركيز إذا لم يكن لديك التركيز.حدد() لا يسبب التركيز الاستيلاء على جانب النافذة.

من تجربة شخصية كتبت المستخدم التحكم وراثة ويندوز تحرير وسرد.اضطررت إلى كتابة التعليمات البرمجية إلى تجاوز OnEnter الحدث كان بيانا هناك يقول

If Me.Focused Then ... Else ...

ولكن للأسف عادت إلى نتيجة غير متوقعة.إذا اتصلت MyCustomerComboControl.Select (إما في الحمل ، كما هو موضح أو تفعيلها من الأحداث) فمن دعا OnEnter طريقة لكنه فشل في التسجيل كان التركيز (أيركز كانت كاذبة) ولكن إذا دعوت التركيز عملت.وعلاوة على ذلك Select عمل إذا كان النموذج مفتوحا أيإذا اخترت عنصر تحكم آخر ثم إعادة اختيار الأصلية التحكم في كل شيء كان على ما يرام.وذلك في أي ظروف أخرى غير السيناريو ، استخدام Select لأنه يقول ذلك أعلاه.

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