文本框.TextAlign右对齐在某些情况下没有效果

本文关键字:情况下 有效果 TextAlign 右对齐 文本 | 更新日期: 2023-09-27 18:03:42

在我的Visual c# Express 2010表单应用程序中有一个路径选择器

我使用FolderBrowserDialog和(单行)TextBox来显示所选路径。在我的UI刷新代码中使用以下行代码。

this.textBoxFolder.Text = this.folderBrowserDialog1.SelectedPath;
ReadOnly属性设置为trueTextAlign属性设置为Right使用表单设计器,因为选择的路径通常比TextBox长,我更喜欢显示路径的右侧。表单设计器生成如下内容:
// 
// textBoxFolder
// 
this.textBoxFolder.Location = new System.Drawing.Point(40, 72);
this.textBoxFolder.Name = "textBoxFolder";
this.textBoxFolder.ReadOnly = true;
this.textBoxFolder.Size = new System.Drawing.Size(160, 20);
this.textBoxFolder.TabIndex = 13;
this.textBoxFolder.TabStop = false;
this.textBoxFolder.TextAlign = System.Windows.Forms.HorizontalAlignment.Right;

当选择的路径短于文本框大小时,右对齐就起作用。(但这并不重要)

当选择的路径大于文本框的大小时,右对齐不起作用,文本框中的字符串显示为最左边的字符可见,最右边的字符隐藏。

我知道,在一个正常的单行TextBox (ReadOnly = false)中,当一个过长的字符串由手输入时,最右边的字符是可见的,即使焦点消失,无论是否TextAlign设置为左/右/中心!

换句话说,我的目标是,当TextBox。文本以编程方式设置(而不是键入),并且字符串长于TextBox的宽度,我如何使最右边的字符可见?

文本框.TextAlign右对齐在某些情况下没有效果

不应该设置TextAlign属性,而应该将插入符号移动到最后一个字符:

textBoxFolder.Text = this.folderBrowserDialog1.SelectedPath;
textBoxFolder.SelectionStart = textBox1.Text.Length - 1;

设置SelectionStart实际上是将插入符号移动到指定位置。这使得该位置的字符在TextBox中可见。

如果您可以使用Label而不是文本框,您可以使用Hans Passant创建的在绘制文本时使用TextFormatFlags.PathEllipses标志的文本框。

Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows CE Platform注:在基于Pocket PC的应用程序中,单行文本框只支持左对齐。多行文本框可以向左、向右或居中对齐。

相关文章: