2013-03-13 82 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的應用程序中,單行文本框僅支持左對齊。多行文本框可以在左側,右側或中心對齊。

相關問題