C# WinForms动态创建Guna2Button文本水平左对齐失效如何解决?
问题场景
开发C# WinForms应用时,动态生成Guna.UI2按钮后,设置文本左对齐不生效,已尝试原生TextAlign属性配置无效,实际效果如下:
已尝试的无效配置代码:
iBtn.TextAlign = Left; iBtn.TextAlign = ContentAlignment.MiddleLeft;
完整业务代码如下:
private void dynBtnClick(string btnText) //Dynamic Text List In flp2 { string[] listData = File.ReadAllLines(filePath + @"\" + btnText + ".txt"); int e=listData.Count(); flp2.FlowDirection = FlowDirection.LeftToRight; flp2.Controls.Clear(); for ( int j =0; j<e;j++) { Guna.UI2.WinForms.Guna2Button iBtn = new Guna.UI2.WinForms.Guna2Button(); iBtn.Tag = j; iBtn.BorderRadius = 5; iBtn.Height = 25; iBtn.Width = 200; iBtn.AutoSize = false; iBtn.Animated = true; iBtn.FillColor = ColorTranslator.FromHtml("#263238"); iBtn.TextAlign = ContentAlignment.MiddleLeft; string[] btnFacetext = listData[j].Split('~'); iBtn.Text = btnFacetext[0].ToString(); iBtn.Click += (s, c) => { flp2Action(btnFacetext[0]+"~"+ btnFacetext[1], btnText); }; flp2.Controls.Add(iBtn); } }
解决方案
Guna.UI2库的自定义按钮布局逻辑和原生WinForms按钮不同,仅设置TextAlign无法生效,按以下步骤修改即可:
- 先排除文本本身带前置空白的问题,给文本加
Trim()处理 - 显式修改按钮默认的左右内边距,替换默认的内置留白
- 搭配设置
TextOffset属性清除默认的文本偏移
修改后的核心代码片段:
Guna.UI2.WinForms.Guna2Button iBtn = new Guna.UI2.WinForms.Guna2Button(); iBtn.Tag = j; iBtn.BorderRadius = 5; iBtn.Height = 25; iBtn.Width = 200; iBtn.AutoSize = false; iBtn.Animated = true; iBtn.FillColor = ColorTranslator.FromHtml("#263238"); // 新增对齐相关配置 iBtn.TextAlign = ContentAlignment.MiddleLeft; iBtn.Padding = new Padding(3, 0, 0, 0); // 左侧留3px避免文本贴边,右侧无额外留白 iBtn.TextOffset = new Point(0, 0); // 清除Guna2按钮默认的文本偏移量 string[] btnFacetext = listData[j].Split('~'); iBtn.Text = btnFacetext[0].Trim(); // 去除文本首尾空白字符 iBtn.Click += (s, c) => { flp2Action(btnFacetext[0]+"~"+ btnFacetext[1], btnText); }; flp2.Controls.Add(iBtn);
如果以上配置仍不生效,可额外添加文本格式化配置:
iBtn.TextFormatFlags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter;
内容的提问来源于stack exchange,提问作者Data Dynamic
相关产品推荐
相关产品推荐

