【发布时间】:2014-05-20 17:49:29
【问题描述】:
我有 2 个包含文件名路径的文本框。路径很长,所以我希望文本显示完整路径字符串的结尾,以便用户可以看到文件名和路径的最后部分。
文本框被调用
TxInPanel.PcmFilename
TxOutPanel.PcmFilename
我设置第一个文本框显示文本结尾如下:
// Set textbox and filename
tb = TxInPanel.PcmFilename;
tb.Text = txInDefaultPcm.ToString();
// Display end of filename in textbox
tb.Focus();
tb.CaretIndex = tb.Text.Length;
var rect = tb.GetRectFromCharacterIndex(tb.CaretIndex);
tb.ScrollToHorizontalOffset(rect.Right);
这很好用!
当我用下一个文本框再次尝试时,根本不起作用:
// Set textbox and filename
tb = TxOutPanel.PcmFilename;
tb.Text = txOutDefaultPcm.ToString();
// Display end of filename in textbox
tb.Focus();
tb.CaretIndex = tb.Text.Length;
rect = tb.GetRectFromCharacterIndex(tb.CaretIndex);
tb.ScrollToHorizontalOffset(rect.Right);
这很奇怪。如果我交换上面的顺序,它总是适用于第一个文本框,而不是最后一个。
我尝试过的其他各种组合包括:
tb.ScrollToHorizontalOffset(Math.Max(rect.Right, tb.HorizontalOffset));
tb.ScrollToEnd();
都没有成功。
我还应该说我使用的 TextBox 来自我制作的 UserControl。
<TextBox Name="PcmFilename" Grid.Row="1" Grid.Column="1" Height="25" Grid.ColumnSpan="3" VerticalAlignment="Center" TextAlignment="Left" />
运行应用程序时,我看到“工作”文本框在字符串末尾有一个克拉光标,但它没有闪烁,它是一条实心垂直线,这是不正确的。这让我觉得问题在于将焦点放在第二个文本框上。
有没有人有一种万无一失的方法来在文本框中显示刺痛的最后一部分?
【问题讨论】: