700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C# winform 让ComboBox控件的文本居中方法

C# winform 让ComboBox控件的文本居中方法

时间:2021-05-01 15:22:16

相关推荐

C# winform 让ComboBox控件的文本居中方法

在C#中,当将ComboBox的属性DropDownStyle设置为DropDownList后,ComboBox2框的文本默认是靠左对齐的。

用ComboBox1举例,让下拉文本居中,订阅事件:

public Form2(){InitializeComponent();comboBox1.DrawMode = DrawMode.OwnerDrawFixed;comboBox1.DrawItem += new DrawItemEventHandler(comboBox1_DrawItem);}

这段代码的作用是设置一个名为comboBox2的组合框控件的绘制模式为OwnerDrawFixed,并将一个名为comboBox2_DrawItem的事件处理程序添加到该控件的DrawItem事件中。

在C#中,ComboBox控件有几种绘制模式,包括Normal、OwnerDrawFixed、OwnerDrawVariable和Professional。在Normal模式下,ComboBox控件使用默认的绘制方式来呈现其项。而在OwnerDrawFixed和OwnerDrawVariable模式下,开发人员可以自定义ComboBox控件的绘制方式,以便更好地满足应用程序的需求。

ComboBox1的DrawItem的事件:

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){if (e.Index < 0){return;}e.DrawBackground();string text = comboBox1.GetItemText(comboBox1.Items[e.Index]);SizeF textSize = e.Graphics.MeasureString(text, comboBox1.Font);float left = (float)(e.Bounds.Width - textSize.Width) / 2;float top = (float)(e.Bounds.Height - textSize.Height) / 2;e.Graphics.DrawString(text, comboBox1.Font, Brushes.Black, e.Bounds.Left + left, e.Bounds.Top + top);e.DrawFocusRectangle();}

这段代码使用了DrawMode.OwnerDrawFixed属性来自定义ComboBox1的绘制方式。然后,我们订阅了DrawItem事件,该事件在每个项绘制时触发。在事件处理程序中,我们首先绘制了背景,然后获取当前项的文本并测量其大小。接下来,我们计算文本应该绘制的位置,以使其居中对齐。最后,我们使用Graphics.DrawString方法将文本绘制到ComboBox1中。

上面方法只是让下拉文本居中,但无法让ComboBox1框的文本居中,如图:

要让ComboBox1设置DropDownStyle属性设置为DropDownList的文本居中与ComboBox1文本框文本居中,可以通过以下步骤实现:

打开Visual Studio,打开你的C#项目。找到ComboBox1控件,双击打开它的属性窗口。在属性窗口中找到DropDownStyle属性,将其设置为DropDownList。在属性窗口中找到DrawMode属性,将其设置为OwnerDrawFixed。在属性窗口中找到ItemHeight属性,将其设置为ComboBox1的高度。(这步可以不用管)在属性窗口中找到DrawItem事件,双击打开它的代码编辑器。在代码编辑器中添加以下代码:

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){if (e.Index < 0) return;e.DrawBackground();e.DrawFocusRectangle();string text = comboBox1.GetItemText(comboBox1.Items[e.Index]);using (StringFormat sf = new StringFormat()){sf.Alignment = StringAlignment.Center;e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds, sf);}}

8.保存并运行你的程序,ComboBox1的文本现在应该已经居中了。

如果让ComboBox1下拉框与文本框显示无色可以再添加这行代码

e.Graphics.FillRectangle(Brushes.White, e.Bounds);

或者

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){e.DrawBackground();if (e.Index >= 0){string text = comboBox1.Items[e.Index].ToString();using (StringFormat sf = new StringFormat()){sf.Alignment = StringAlignment.Center;e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds, sf);}}e.DrawFocusRectangle();}

这段代码的作用是在ComboBox控件的绘制事件中,将下拉列表中的文本居中对齐。具体来说,它使用StringFormat类来设置文本的对齐方式,然后使用Graphics类的DrawString方法在指定的位置绘制文本。

在ComboBox1的DrawItem事件中,将ComboBox1的文本居中显示,将文本居中显示,如下图:

如果只让ComboBox下拉框文本居中,ComboBox框中的文本居左不变:

ComboBox控件是一个常用的下拉列表框控件。默认情况下,ComboBox控件的文本是居中对齐的。如果想要只让ComboBox1的下拉文本居中,但不让ComboBox1的文本居中,可以通过以下步骤实现:

打开Visual Studio,创建一个Windows Forms应用程序。在窗体上添加一个ComboBox控件。在ComboBox控件的属性窗口中,找到DropDownStyle属性,将其设置为DropDown。在ComboBox控件的属性窗口中,找到DrawMode属性,将其设置为OwnerDrawFixed。在ComboBox控件的事件中,添加以下代码:

private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){e.DrawBackground();if (e.Index >= 0){string text = comboBox1.Items[e.Index].ToString();using (StringFormat sf = new StringFormat()){sf.Alignment = StringAlignment.Center;e.Graphics.DrawString(text, e.Font, Brushes.Black, e.Bounds, sf);}}e.DrawFocusRectangle();}

默认不居中,ComboBox1的DrawItem事件中:

e.DrawBackground();if (e.Index >= 0){StringFormat sf = new StringFormat();sf.LineAlignment = StringAlignment.Center;e.Graphics.DrawString(comboBox2.Items[e.Index].ToString(), e.Font, new SolidBrush(e.ForeColor), e.Bounds, sf);}

上面方法直供参考,实际应用可以根据需求修改,有更好的方法欢迎补充!

上面内容用于记录自己的学习与分享,分享让技术更进一步!

技术来源于思想自由、独立思考、辩证分析、逻辑思维与人类自由的创新,来服务于人类生活各种方便,而不是为了用技术打造思想鸿沟围城来制造愚蠢;技术是好的与坏的,好人用技术是更好的,坏人用技术是更坏的。推荐好书:乔治.奥威尔的《1984》、扎米亚京《我们》、阿道司·赫胥黎《美丽新世界》,有多个译本,选择喜欢且好的译本就行了;还有柏拉图的《理想国》、[法]孟德斯鸠的《论法的精神》、哈耶克《通向奴役之路》(港版)(港版翻译较好大陆版本,英语过硬的最好看英文原版),现在网店都有售卖!阅读好书,阅读大部分人未阅读过与课堂没有的书,阅读这片土地没有的知识就能增加一种思辨思维与智慧,才能走出狭隘思维偏见的洞穴!

柏拉图在他的巨著《理想国》的第七卷里写到了洞穴理论阐明:一群从小被囚禁生活在洞穴里人,在洞穴外面的光线照明下,往内看是一片片黑影,往外看是光明的海阔天空,越看越明亮!

见多识广,包容的人更自信、思维更多元,包容好的文化使人更强大,越自信越包容越强大!包容让你用上网络、电话、各种电器、汽车、芯片、铁路、高铁................

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。