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

时间:2014-05-08 10:30:59

标签: c# text textbox

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

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

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

如果我调整文本框的大小,其中的文本将随之调整大小/扩展 有没有办法自动执行此操作,可能通过文本框的Resize事件。

非常感谢。

3 个答案:

答案 0 :(得分:0)

如果您要根据输入的文字调整文本框大小,

This可能会有所帮助。您可以在任何事件上调用此代码,例如将焦点移出文本框或在文本框中加载数据后。您需要在代码中的下一行替换文本框中的实际文本。

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

答案 1 :(得分:0)

如果这是一个网页..

包含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;
    }

只有在关注文本框时才会显示整个字符串。

以下是demo的样子。

如果这有用或者您有任何疑问,请告诉我

答案 2 :(得分:0)

使用此代码删除多余文本:

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;