2

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

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

this.textBoxFolder.Text = this.folderBrowserDialog1.SelectedPath;

使用表单设计器将ReadOnly属性设置为true并将TextAlign属性设置为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.Text 以编程方式设置(而不是输入)并且字符串比 TextBox 的宽度长时,如何让最右边的字符可见?

4

2 回答 2

5

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

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

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

如果您可以使用 aLabel代替文本框,则可以使用Hans Passant 在此处创建的TextFormatFlags.PathEllipses在绘制文本时使用标志的文本框。

于 2013-03-13T07:59:54.987 回答
0

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

于 2013-09-23T12:34:49.807 回答