我有2个TextBoxs',其中包含文件名的路径。路径很长所以我希望文本显示完整路径字符串的结尾,以便用户可以看到文件名和路径的最后部分。
文本框名为
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" />
当运行应用程序时,我看到“工作”文本框在字符串末尾有一个克拉光标,但它没有闪烁,它是一条实线垂直线,这是不对的。这让我觉得问题在于将焦点放在第二个TextBox上。
有没有人有一种在文本框中显示刺痛最后部分的简单方法?
答案 0 :(得分:1)
执行此操作的一种方法是将FlowDirection
更改为RightToLeft
,以便将任何文本视为右侧作为文本的开头,并从文本框的右侧边缘开始显示