2012-02-22 12 views
31

मुझे सी # जीत फ़ॉर्म में बनाए गए कस्टम बटन के साथ कोई समस्या हो रही है .. जब फॉर्म चुना जाता है तो बटन ठीक दिखाई देता है लेकिन जैसे ही मैं दूर से क्लिक करता हूं बटन पर सीमा दिखाई देती है। जब ऐसा होता है तो इसका एक अच्छा उदाहरण तब होता है जब डेस्कटॉप क्लिक किया जाता है लेकिन फ़ॉर्म अभी भी अधिकतम होता है ताकि आप इसकी सामग्री देख सकें। समस्या की एक छवि नीचे देखा जा सकता है:सी # WinForms - कस्टम बटन अवांछित सीमा जब अनदेखा

Button border problem

यह सभी बटन पर नहीं होता है, केवल जब बटन से पहले क्लिक किया गया है (एक बार में केवल एक बटन पर दिखाई देता है)। इससे मेरा मानना ​​है कि यह बटन फोकस संकेतों के साथ कुछ करना था लेकिन ये झूठे पर सेट हैं। सीमा 0 पर सेट है और मेरे पास टैबस्टॉप भी गलत है।

कोई सुझाव?

+2

मेट्रो अक्षम करना चाहिए? WinForms? WPF? सिल्वरलाइट? विंडोज फ़ोन? ASP.Net? MonoTouch? – SLaks

+0

माफ़ी, सी # जीत फॉर्म – Jpin

उत्तर

75

आप सेट जब आप कोई कस्टम बटन साथ काम कर रहे चाहिए:

button.TabStop = false; 
button.FlatStyle = FlatStyle.Flat; 
button.FlatAppearance.BorderSize = 0; 
फिर ButtonBase के बाद से

Color.Transparent पर सीमा रंग का समर्थन नहीं करता, तो आप समस्या दूर कर सकते हैं एक ARGB रंग की स्थापना द्वारा:

button.FlatAppearance.BorderColor = Color.FromArgb(0, 255, 255, 255); //transparent 
+0

उत्तर के लिए धन्यवाद, मेरे पास पहले से ही यह सेट है जैसा आपने कहा है – Jpin

+1

यह काम किया: myButton.FlatAppearance.BorderColor = Color.FromArgb (0, 255, 255, 255); बहुत बहुत धन्यवाद! – Jpin

+0

धन्यवाद, मुझे भी एक ही समस्या थी। इस जवाब ने इसे ठीक किया! –

2

फ्यूएक्स का उत्तर सिद्धांत में सीमा को हटा सकता है, लेकिन एक बग है कि बटन सक्षम करने की स्थिति बदलने के बाद कभी-कभी बटन पर ध्यान केंद्रित किया जाएगा (मैं इस बग में .NET 4.0 में चलाता हूं और मुझे नहीं पता बग तय किया गया है या बाद के संस्करण में नहीं) । इस बग को ठीक करने के लिए, आपको फोकस्यू प्रोपोर्टी

protected override bool ShowFocusCues 
    { 
     get 
     { 
      //return base.ShowFocusCues; 
      return false; 
     } 
    } 
संबंधित मुद्दे