2013-03-13 69 views
2

我在Visual C#Express 2010表单应用程序中有一个路径选择器。TextBox.TextAlign右侧对齐在某些情况下没有效果?

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

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

只读属性设置为textAlign设置属性使用窗体设计器设置为,因为所选择的路径往往长于文本框,我更喜欢展示路径的右侧。表单设计器生成此:

// 
// 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; 

只要所选路径短于文本框大小,右对齐工作。 (但这并不重要)

只要所选路径长于文本框大小,右对齐无效,文本框中的字符串将显示为使最左侧的字符可见,大部分都隐藏着。

我知道,在一个正常的单行文本框(ReadOnly = false),当一个过长的字符串是手工键入,最右边的字符是可见的,甚至当焦点消失,不管textAlign设置是否设置到左/右/中心!

换句话说,我的目标是,当TextBox.Text以编程方式设置(而不是键入),并且该字符串比TextBox的宽度更长时,我如何获得最右边的字符可见?

回答

5

而不是设置TextAlign财产,你应该插入符号移动到最后一个字符:

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

设置SelectionStart实际上移动插入符指定位置。这使得该位置上的角色在TextBox中可见。

如果您可以使用Label而不是文本框,则可以使用在绘制文本时使用TextFormatFlags.PathEllipses标志的one created by Hans Passant here

+0

谢谢!设置'SelectionStart'完成了我想要的! – gus 2013-03-13 12:05:13

0

适用于Pocket PC的Windows Mobile,适用于智能手机的Windows Mobile,Windows CE平台注意:在基于Pocket PC的应用程序中,单行文本框仅支持左对齐。多行文本框可以在左侧,右侧或中心对齐。

相关问题