加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

.net – 如何在Windows Forms TextBox控件中设置TAB宽度?

发布时间:2020-12-13 21:00:26 所属栏目:Windows 来源:网络整理
导读:给定一个WinForms TextBox控件,MultiLine = true和AcceptsTab == true,如何设置显示的标签字符的宽度? 我想使用它作为插件的一个快速而肮脏的脚本输入框。它真的不需要花哨,但如果选项卡不显示为8个字符宽度将是很好的… 从接受的答案: // set tab stop
给定一个WinForms TextBox控件,MultiLine = true和AcceptsTab == true,如何设置显示的标签字符的宽度?

我想使用它作为插件的一个快速而肮脏的脚本输入框。它真的不需要花哨,但如果选项卡不显示为8个字符宽度将是很好的…

从接受的答案:

// set tab stops to a width of 4
private const int EM_SETTABSTOPS = 0x00CB;

[DllImport("User32.dll",CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(IntPtr h,int msg,int wParam,int[] lParam);

public static void SetTabWidth(TextBox textbox,int tabWidth)
{
    Graphics graphics = textbox.CreateGraphics();
    var characterWidth = (int)graphics.MeasureString("M",textbox.Font).Width;
    SendMessage(textbox.Handle,EM_SETTABSTOPS,1,new int[] { tabWidth * characterWidth });
}

这可以在窗体的构造函数中调用,但要小心:确保首先运行InitializeComponents。

我认为发送EM_SETTABSTOPS消息到TextBox将工作。

> Link at MSDN
> Here is another link

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读