textbox设置字体颜色为只读后,怎样才能显示字体颜色

6461人阅读
Winforms技术(23)
一、问题描述
当一个TextBox的ReadOnly属性设为true的时候,我们不管怎么改变ForeColor,该TextBox的字体颜色都不发生改变。
二、问题重现
1.新建一个Winforms工程;
2.从工具箱里拖拽一个TextBox到Form1上;
3.在属性框里,把textBox1的ReadOnly属性设为true;
4.在属性框里,把textBox1的Text属性设为一个非空字符串;
5.在属性框里,改变textBox1的ForeColor属性。
我们可以注意到尽管我们改变了textBox1的ForeColor属性,显示的字体颜色并没有发生变化。
三、原因分析
在Winforms里TextBox控件是在响应消息WM_CTLCOLOREDIT的时候的时候,把颜色ForeColor通过API SetTextColor设置为字体颜色。在中,有这样一句话:
Read-only or disabled edit controls do not send the
instead, they send the
当我们把一个TextBox设为只读时,Windows将不再发送消息WM_CTLCOLOREDIT给它。但该TextBox将收到消息WM_CTLCOLORSTATIC。在TextBox对消息WM_CTLCOLORSTATIC的响应函数里,Winforms并没有调用SetTextColor把ForeColor设置为字体颜色。也就是说,当一个TextBox为只读时,它的字体颜色不是由Winforms设定的,而是由Windows设置为黑色。因此无论我们怎么修改一个只读TextBox的ForeColor颜色,它的字体颜色都不发生改变。
四、类似现象
如果把一个Button的FlatStyle属性设为System,然后当我们在试图去修改BackColor的时候,我们发现该Button的背景颜色也不发生改变。原因与上面提到的类似,详情请参考。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:387585次
积分:4824
积分:4824
排名:第5631名
原创:56篇
评论:704条
(2)(3)(5)(2)(1)(1)(1)(1)(1)(2)(1)(1)(2)(5)(4)(1)(3)(5)(1)(2)(4)(1)(2)(1)(4)11:16 提问
后台如何取到Itemtemplate里TextBox的属性,我想改变TextBox的只读属性?
CheckBoxType="ChkNO" OnRowDataBound="wgvDetailOrder_RowDataBound" EmptyDataText="
没有运单明细!"&'&
按赞数排序
GridView里放入ItemTemplate,后台如何取到Itemtemplate里TextBox的属性,我想改变TextBox的只读属性?
CheckBoxType="ChkNO" OnRowDataBound="wgvDetailOrder_RowDataBound" EmptyDataText="
没有运单明细!"&'&
CheckBoxType="ChkNO" OnRowDataBound="wgvDetailOrder_RowDataBound" EmptyDataText="
没有运单明细!"&'&
&asp:UpdatePanel ID="pnlUpdate" runat="server"&
&ContentTemplate&
&div class="FormGridClass" style="height: 355 overflow-y: margin-right: 3"&
&wgv:WebGridView ID="wgvDetailOrder" DataKeyNames="seq" runat="server" Width="99%"
CheckBoxType="ChkNO" OnRowDataBound="wgvDetailOrder_RowDataBound" EmptyDataText="&span style='color:Red'&&&&没有运单明细!&/span&"&
&asp:BoundField DataField="SEQ" HeaderText="序号" ReadOnly="true" ItemStyle-Width="30px" /&
&asp:BoundField DataField="TASK" HeaderText="任务内容" ReadOnly="true" ItemStyle-Width="100px" /&
&asp:TemplateField HeaderText="第一周进度" ShowHeader="true"&
&ItemStyle CssClass="cellPadding" HorizontalAlign="Center" Width="100px" /&
&ItemTemplate&
&asp:TextBox ID="txtFPro" runat="server" Width="100px" Text='&%#Eval("FirstProcess")%&'&&/asp:TextBox&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="确认人" ShowHeader="true"&
&ItemStyle CssClass="cellPadding" HorizontalAlign="Center" Width="50px" /&
&ItemTemplate&
&asp:TextBox ID="txtFCon" runat="server" Width="50px" Text='&%#Eval("FirstConfirmer")%&'&&/asp:TextBox&
&/ItemTemplate&
&/asp:TemplateField&
其他相似问题求教:单击确定按钮后才可以修改上面显示文字的字体和颜色【c#吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:108,287贴子:
求教:单击确定按钮后才可以修改上面显示文字的字体和颜色收藏
能不能写下在按钮下的字体,字号,颜色的代码。
同时相求有没有这种例子可以让我边练边学的,,谢谢
这么简单都写不出来 就从基础学起走吧
确定按钮有一个单击事件,你点击触发那个时间再根据你选择的颜色字体进行判断,然后改变TXT文本框里面的颜色字体就OK了。
给你个视频地址 http:///v_show/id_XNzA4MzcwMjU2.html?f=讲的就是和这个例子很类似
这个很简单的
你应该是改变TextBox里改变一下文字大小颜色吧button时间里 先写个确定选中状态,然后判断TextBox是否为空,然后 swith case一下就行 不懂回复我,我详细给你说说,这都是基础东西 多看看基础!
基础学起来是很无聊的
但是带着热情去学吧百度 传智博客 (我不是打广告) 里面有免费视频额 层主就是看那里的
导致开学后 上课全是在玩
←_←textbox控件里面的属性看一下,有设置字体字色和编辑状态的
using System.Collections.GponentMusing System.Dusing System.Dusing System.Lusing System.Tusing System.Windows.Fnamespace WindowsFormsApplication13{
public partial class Form1 : Form
public Form1()
InitializeComponent();
private void radioButton5_CheckedChanged(object sender, EventArgs e)
private void textBox1_TextChanged(object sender, EventArgs e)
private void button1_Click(object sender, EventArgs e)
int a=0,b=0,c=0;
if (radioButton1.Checked == true)
if (radioButton2.Checked == true)
if (radioButton3.Checked == true)
if (radioButton4.Checked == true)
if (radioButton5.Checked == true)
if (radioButton6.Checked == true)
if (radioButton7.Checked == true)
if (radioButton8.Checked == true)
if (radioButton9.Checked == true)
switch (a)
case 1: textBox1.Font = new Font(radioButton1.Text, textBox1.Font.Size, textBox1.Font.Style);
case 2: textBox1.Font = new Font(radioButton2.Text, textBox1.Font.Size, textBox1.Font.Style);
case 3: textBox1.Font = new Font(radioButton3.Text, textBox1.Font.Size, textBox1.Font.Style);
switch (b)
case 1: textBox1.ForeColor=Color.B
case 2: textBox1.ForeColor = Color.G
case 3: textBox1.ForeColor = Color.R
switch (c)
case 1: textBox1.Font = new Font(textBox1.Font.FontFamily, 12, textBox1.Font.Style);
case 2: textBox1.Font = new Font(textBox1.Font.FontFamily, 16, textBox1.Font.Style);
case 3: textBox1.Font = new Font(textBox1.Font.FontFamily, 18, textBox1.Font.Style);
private void Form1_Load(object sender, EventArgs e)
radioButton1.Checked = radioButton2.Checked = radioButton3.Checked = radioButton4.Checked = radioButton5.Checked = radioButton6.Checked = radioButton7.Checked = radioButton8.Checked = radioButton9.Checked =
private void button2_Click(object sender, EventArgs e)
this.Hide();
}}想法是三个groupbox 就分成三列
每一列选中不同的radiobox,就给与不同的值,用switch选择,设置的时候,是单个设置,改变字体就设置改变字体的参数,改变颜色就只用改变颜色的语句,改变大小同改变参数一样。也是最近在学
一起加油就行!
登录百度帐号推荐应用}

我要回帖

更多关于 vba textbox字体颜色 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信