C# winform 中控件禁用,但是不变灰

本文介绍了一种使用 C# 在 Windows Forms 应用程序中改变控件状态的方法,通过直接修改窗口样式来实现控件的禁用与启用,这种方式可以绕过常规的控件属性设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  [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.White;
         }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值