请教 如何改变enable属性为false的控件的字体颜色

softbuaa 2005-10-13 03:51:57
如题,textBox等控件一旦disable掉后,如何改变那个系统默认的灰色字体?
...全文
2135 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
winterboy78 2005-12-22
  • 打赏
  • 举报
回复
对 jinjazz(近身剪(充电中...)) 所讲的做个修正
if (enabled)
{SetWindowLong(c.Handle, GWL_STYLE, (~WS_DISABLED) & GetWindowLong(c.Handle, GWL_STYLE));}
else
{SetWindowLong(c.Handle, GWL_STYLE, WS_DISABLED + GetWindowLong(c.Handle, GWL_STYLE));}

false的情况下,把“+”改成“|”比较好,不会造成反复false而导致窗口出错。
softbuaa 2005-10-13
  • 打赏
  • 举报
回复
解决了,感谢4楼答复
brucenan999 2005-10-13
  • 打赏
  • 举报
回复
OnPaint可不可以重画啊?偶也不太清楚,以前遇到过,没有解决它.
softbuaa 2005-10-13
  • 打赏
  • 举报
回复
其实禁止用户编辑的话,Readonly倒是可以,但是mouse点击光标还是会进去,这个比较麻烦,不知道怎么让该控件无法得到焦点
jinjazz 2005-10-13
  • 打赏
  • 举报
回复
//用api设置控件无效

[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int wndproc);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern int GetWindowLong(IntPtr hWnd, int nIndex);

public const int GWL_STYLE=-16;
public const int WS_DISABLED=0x8000000;

public static void SetControlEnabled(Control c,bool enabled)
{
if (enabled)
{SetWindowLong(c.Handle, GWL_STYLE, (~WS_DISABLED) & GetWindowLong(c.Handle, GWL_STYLE));}
else
{SetWindowLong(c.Handle, GWL_STYLE, WS_DISABLED + GetWindowLong(c.Handle, GWL_STYLE));}
}

private void button2_Click(object sender, System.EventArgs e)
{
SetControlEnabled(this.button1,false);
this.button1.ForeColor=Color.Red;
}
softbuaa 2005-10-13
  • 打赏
  • 举报
回复
首先感谢回复.
不是不显示 不显示是Visable = false
是根据功能需要暂时禁止用户使用,但是还是要让用户看见的,只是bt用户要求灰背景色高亮度字显示
desailly 2005-10-13
  • 打赏
  • 举报
回复
你都txtbox.disable了,都不显示了,你还要改变字体干嘛?把问题想清楚再提问
softbuaa 2005-10-13
  • 打赏
  • 举报
回复
补充一下,是在WinForm里

110,596

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧