मुझे solutio मिला एन वीबी में यहां: how-to-make-a-custom-combobox-ownerdrawfixed-looks-3d-like-the-standard-combobo टेक्स्ट और तीर ड्राइंग के लिए कुछ कोड जोड़ा गया। यह काम करता है :)
class MyComboBox: ComboBox
{
public MyComboBox()
{
this.SetStyle(ControlStyles.Opaque | ControlStyles.UserPaint, true);
Items.Add("lol");
Items.Add("lol2");
}
protected override void OnPaint(PaintEventArgs e)
{
if (DroppedDown)
ButtonRenderer.DrawButton(CreateGraphics(), new System.Drawing.Rectangle(ClientRectangle.X - 1, ClientRectangle.Y - 1, ClientRectangle.Width + 2, ClientRectangle.Height + 2), PushButtonState.Pressed);
else
ButtonRenderer.DrawButton(CreateGraphics(), new System.Drawing.Rectangle(ClientRectangle.X - 1, ClientRectangle.Y - 1, ClientRectangle.Width + 2, ClientRectangle.Height + 2), PushButtonState.Normal);
if (SelectedIndex != -1)
{
Font font;
if (SelectedItem.ToString().Equals("lol"))
font = new Font(this.Font, FontStyle.Bold);
else
font = new Font(this.Font, FontStyle.Regular);
e.Graphics.DrawString(Text, font, new SolidBrush(Color.Black), 3, 3);
}
if (DroppedDown)
this.CreateGraphics().DrawImageUnscaled(new Bitmap("c:\\ArrowBlue.png"), ClientRectangle.Width - 13, ClientRectangle.Height - 12);
else
this.CreateGraphics().DrawImageUnscaled(new Bitmap("c:\\ArrowGray.png"), ClientRectangle.Width - 13, ClientRectangle.Height - 12);
base.OnPaint(e);
}
मैं झिलमिलाहट को निकालने का तरीका जब माउस में प्रवेश और ComboBox जा रहा है पता नहीं है। जब डबलबफरिंग सक्षम है, कॉम्बोबॉक्स काला है। लेकिन मेरे लिए ठीक काम करता है।
स्रोत
2011-06-12 19:42:43
क्या आपको किसी भी मौके से पता चला कि अब इस झटके को कैसे हटाया जाए? – Otiel
'CreateGraphics' पर आपकी लगातार कॉल GDI संसाधनों को रिसाव कर देगी। आपको 'उपयोग' विधि को कॉल करने के लिए '() 'ब्लॉक में लिपटे एक एकल' ग्राफिक्स 'ऑब्जेक्ट का उपयोग करना चाहिए। – Dai