选中后,在轨迹栏控件周围隐藏虚线轮廓

Ada*_*ane 3 c# user-interface controls winforms

在C#winforms中,是否有一种方法可以不显示在使用轨迹栏控件时显示的虚线焦点轮廓边框?

细节:这个轮廓对我来说看起来有点俗气,所以我只是为了不美观而拍摄美学.

谢谢,

亚当

小智 16

ShowFocusCues对我不起作用,但这样做:

   internal class NoFocusTrackBar : System.Windows.Forms.TrackBar
   {
      [System.Runtime.InteropServices.DllImport("user32.dll")]
      public extern static int SendMessage(IntPtr hWnd, uint msg, int wParam, int lParam);

      private static int MakeParam(int loWord, int hiWord)
      {
         return (hiWord << 16) | (loWord & 0xffff);
      }

      protected override void OnGotFocus(EventArgs e)
      {
         base.OnGotFocus(e);
         SendMessage(this.Handle, 0x0128, MakeParam(1, 0x1), 0);
      }
   }
Run Code Online (Sandbox Code Playgroud)

请参阅有关WM_UPDATEUISTATE的文档,了解其工作原理(基本上发送一条消息,将愚蠢的东西从轨道栏上移开,获得焦点).

  • 对于有兴趣将此代码转换为其他语言的用户,C等效项为`SendMessage(handle,WM_UPDATEUISTATE,MAKEWPARAM(UIS_SET,UISF_HIDEFOCUS),0)`。 (2认同)