首页 新闻 搜索 专区 学院

Winform中TextBox字体颜色设置失败

1
悬赏园豆:30 [已关闭问题] 关闭于 2011-01-08 22:27

Winform中将TextBox设置为只读后再设置字体颜色的颜色怎么没有作用啊,我想让TextBox为只读、且颜色设置为Red,怎么才能设置成功( ⊙ o ⊙ )啊?
请不大侠们吝赐教!

DreamSea530的主页 DreamSea530 | 初学一级 | 园豆:122
提问于:2010-12-29 19:23
< >
分享
所有回答(3)
0

先设置颜色,再设为只读

爱研究源码的javaer | 园豆:930 (小虾三级) | 2010-12-29 21:23
不行啊!
支持(0) 反对(0) DreamSea530 | 园豆:122 (初学一级) | 2010-12-29 21:51
0

不可以的,你只能在 KeyDown 事件中 Handled = true 就是拦截键盘输入并终止键盘输入的显示来实现只读

        private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
                e.Handled = true;
        }

eaglet | 园豆:17119 (专家六级) | 2010-12-30 10:10
我的目的是实现可以复制内容的控件,本来打算用Lable的,但用Lable时用户不能复制内容,只好用只读的TexBox,TextBox设为只读是才发现颜色不能修改!
支持(0) 反对(0) DreamSea530 | 园豆:122 (初学一级) | 2010-12-30 10:14
0

在TextBox的容器一层加如下代码。(估计TextBox是直接放在Form上的了)

1 namespace WindowsFormsApplication4
2 {
3 public partial class Form1 : Form
4 {
5 public Form1()
6 {
7 InitializeComponent();
8
9 this.textBox1.Select(0, 0);
10 }
11
12 protected override void WndProc(ref Message m)
13 {
14 base.WndProc(ref m);
15
16 if (m.Msg == NativeMethods.WM_CTLCOLORSTATIC)
17 {
18 Control control = Control.FromHandle(m.LParam);
19 if (control != null && control is TextBox)
20 {
21 UnsafeNativeMethods.SetTextColor(new HandleRef(control, m.WParam), ColorTranslator.ToWin32(Color.FromArgb(255, 0, 0)));
22 }
23 }
24 }
25 }
26 [System.Security.SuppressUnmanagedCodeSecurity]
27 internal class UnsafeNativeMethods
28 {
29 [DllImport("Gdi32.dll")]
30 public static extern int SetTextColor(HandleRef hdc, int ColorRef);
31
32 }
33
34 internal class NativeMethods
35 {
36 public const int WM_CTLCOLORSTATIC = 0x0138;
37 }
38 }

 

 

 

葡萄城技术团队 | 园豆:397 (菜鸟二级) | 2010-12-30 17:43
O(∩_∩)O谢谢,能解释下代码什么意思(⊙_⊙)?
支持(0) 反对(0) DreamSea530 | 园豆:122 (初学一级) | 2010-12-30 17:46
就是当textbox的容器收到WM_CTLCOLORSTATIC消息是,将TextBox内部win32控件的紫田颜色改变。 我是hardcode的红色,你可以改成ForeColor。
支持(0) 反对(0) 葡萄城技术团队 | 园豆:397 (菜鸟二级) | 2010-12-30 17:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册