2010-01-07 21 views
7

पर कोई टेक्स्ट लागू नहीं किया गया है, तो मेरे पास सभी चेकबॉक्स, की टेक्स्ट प्रॉपर्टी के बिना Winforms पर एकाधिक चेकबॉक्स हैं, इसलिए समस्या यह है कि जब मैं चेकबॉक्स पर माउस को घुमाता हूं तो यह हाइलाइट किया जाता है लेकिन जब मैं टैब कुंजी यह प्रकाश डाला कभी नहीं मिलता है ..Winforms चेकबॉक्स समस्या पर ध्यान दें यदि चेकबॉक्स

यह कृपया मदद अगर कोई समान मुद्दा है और पहले से ही हल का उपयोग कर चेकबॉक्स के पास जाओ ..

उत्तर

7

समस्या यह है कि जब एक चेक बॉक्स ध्यान केंद्रित हो जाता है यह केवल पाठ पर प्रकाश डाला गया है नियंत्रण के हिस्से जो आपके मामले में खाली है। आपके पास कुछ विकल्प हैं:

1) अपने सभी "खाली" टेक्स्ट बॉक्स के लिए, टेक्स्ट प्रॉपर्टी को किसी स्थान पर सेट करें। जब आप नियंत्रण में टैब करते हैं तो इससे एक छोटा हाइलाइट किया गया हिस्सा बन जाएगा।

2) चेकबॉक्स के ऑनएन्टर और ऑनलेव कार्यक्रमों को प्रोग्राम करें, और पूरे नियंत्रण के चारों ओर एक वर्ग खींचें/पेंट करें।

3) के रूप में आप डिफ़ॉल्ट mouseenter व्यवहार जो चेक बॉक्स पर ही एक पीले प्रकाश डाला बनाता चाहते हैं, अपने स्वयं के चेक बॉक्स नियंत्रण बनाने:

public class MyCB : CheckBox 
{ 
    protected override void OnEnter(EventArgs e) 
    { 
     base.OnEnter(e); 
     base.OnMouseEnter(e); 
    } 

    protected override void OnLeave(EventArgs e) 
    { 
     base.OnLeave(e); 
     base.OnMouseLeave(e); 
    } 
} 
0

आप AutoSize संपत्ति की स्थापना करके इसे ठीक कर सकते = असत्य। जब ऑटोसाइज सही होता है, तो यह ऑटोसाइज़ सेट के साथ लेबल की तरह काम करता है, जिसमें एक खाली लेबल स्क्रीन पर लगभग कोई स्थान नहीं लेगा। ऑटोसाइज = गलत के साथ, आप चेकबॉक्स के लिए बाध्यकारी आयत मैन्युअल रूप से सेट कर सकते हैं।

+0

ऑटोसाइज प्रॉपर्टी को झूठी पर सेट करना अभी भी इस तथ्य को नहीं बदलेगा कि पाठ खाली है और जब आप चेकबॉक्स में टैब करते हैं तो यह केवल टेक्स्ट ब्लॉक को हाइलाइट करता है, न कि पूरे नियंत्रण में। आप जितना चाहें उतना बड़ा नियंत्रण कर सकते हैं, ऑटोसाइज चेकबॉक्स पर लागू होता है, चेकबॉक्स के अंदर टेक्स्टबॉक्स नहीं। – AKoran

3

मैं CheckBox.Paint घटना के लिए एक ईवेंट हैंडलर जोड़ा गया है और निम्नलिखित कहा:

private void checkBox1_Paint(object sender, PaintEventArgs e) 
{ 
    CheckBox checkBox = sender as CheckBox; 

    if (checkBox.Focused) 
    { 
     // e.ClipRectangle is affected by checkBox.Padding. Be careful when changing the Padding. 
     ControlPaint.DrawFocusRectangle(e.Graphics, e.ClipRectangle, checkBox.ForeColor, checkBox.BackColor); 
    } 
} 

मैं भी CheckBox.Padding समायोजित करने के लिए एक सीमा है कि CheckBox के किनारे से 1 पिक्सेल था प्राप्त करने के लिए 2, 2, 0, 1 किया जाना है।

0

यदि आप केवल सीमा खींचते हैं, तो इन गुणों को सेट करने का प्रयास करें।

AutoSize : False 
CheckAlign : MiddleCenter 
Font: Courier New, 12.25pt 
TextAlign: MiddleRight 
Padding : 0, 5, 0, 0 
Size : 26, 26 
Text : " " (two spaces) 
संबंधित मुद्दे