剪切文本以适合文本框宽度,然后右对齐

本文关键字:文本 然后 右对齐 | 更新日期: 2023-09-27 18:02:24

我有几个文本框在我的表单显示文件路径。大多数情况下,文件路径太长,无法在文本框中显示。是否有可能削减多余的文本,并追加一些点字符,然后对其进行对齐?

例如

:
如果路径为C:'Programs'anotherfolder'blabla'thisisatest.xml

文本框应该显示:...lder'blabla'thisisatest.xml

如果我调整文本框的大小,其中的文本也会随之调整/展开。
是否有一种方法可以自动做到这一点,也许通过调整文本框的大小事件。

剪切文本以适合文本框宽度,然后右对齐

如果您正在根据输入的文本调整文本框的大小,这可能会有所帮助。您可以在任何事件中调用此代码,例如当您将焦点移出文本框或在数据加载到文本框中时。您需要在代码的下一行替换文本框的实际文本。

mySize = e.Graphics.MeasureString("This is a test", myFont);

如果这是一个网页…

包含如下2个隐藏变量

<div>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:HiddenField ID="HiddenField1" runat="server" />
    <asp:HiddenField ID="HiddenField2" runat="server" />
</div>

包含jquery和如下脚本

    <script type="text/javascript">
    $(document).ready(function () {
        $('#TextBox1').focus(function () {
            $('#TextBox1').val($('#HiddenField1').val());
        });
        $('#TextBox1').blur(function () {
            $('#TextBox1').val($('#HiddenField2').val());
        });
    });
</script>

设置

后面代码中的字段
    string str = @"C:'Programs'anotherfolder'blabla'thisisatest.xml";
    HiddenField1.Value = str;
    if (str.Length > 10)
    {
        TextBox1.Text = "..." + str.Substring(str.Length - 10, 10);
        HiddenField2.Value = TextBox1.Text;
    }

只在聚焦于文本框时显示整个字符串。

下面是一个演示。

让我知道这是否有帮助,或者如果你有任何疑问

使用以下代码删除多余的文本:

private string GetShortText(string longText)
{
    int validTextSize = 27;
    if (longText.Length <= validTextSize)
        return longText;
    return "..."+longText.Substring(longText.Length - validTextSize);
}

并像这样使用上面的代码:

string longText = @"C:'Programs'anotherfolder'blabla'thisisatest.xml";
txtPath.Text=GetShortText(longText);

如果你的窗体是Windows窗体,你可以使用下面的代码:

txtPath.TextAlign = HorizontalAlignment.Right;

或者如果您的表单是WPF表单,则使用以下代码:

txtPath.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right;
相关文章: