设置RichTextBox的左右缩进

 看到这个标题,很多人会想,这还不简单么?

  1. this.richTextBox1.SelectAll();
  2. this.richTextBox1.SelectionIndent = 20;
  3. this.richTextBox1.SelectionRightIndent = 20;
  4. this.richTextBox1.SelectionStart = this.richTextBox1.Rtf.Length;

这就搞定了。

没错,当时我也这么想,可是我把Word的内容粘帖进来,如果Word里面本身已经有缩进的,那就傻了~~~~~

 

找遍了richTextBox也没看到有什么属性或者方法让我用用,逼的我没办法了,使用API吧,NND

 

首先声明一个SendMessage的API

 

  1. [DllImport("user32.dll", EntryPoint = "SendMessageA", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
  2. private static extern uint SendMessage(int Hdc, int Msg_Const, int wParam, int lParam);

 

定义几个常量

 

  1. private const int EC_LEFTMARGIN = 1;
  2. private const int EC_RIGHTMARGIN = 2;
  3. private const int EM_SETMARGINS = 211;

 

然后就可以这样

 

  1. int right = 20 << 16;
  2. int left = 20;
  3. SendMessage(this.richTextBox1.Handle.ToInt32(), EM_SETMARGINS, EC_LEFTMARGIN | EC_RIGHTMARGIN, right | left);

 

这回看看吧,这才是搞定~~

 

欢迎转载,请注明出处~~

 

你可能感兴趣的:(api,user)