【问题标题】:Cut Text to fit Textbox width and then right align剪切文本以适合文本框宽度,然后右对齐
【发布时间】:2014-05-08 10:30:59
【问题描述】:

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

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

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

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

非常感谢。

【问题讨论】:

  • 这样做有什么意义?
  • @AJ:所以你看到文件名的结尾不是开头,因为这对用户更有用?
  • 不好..所有这些人试图帮助你,你甚至没有回应!你得到的两个赞成票不会帮助你得到答案。

标签: c# text textbox


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    如果这是一个网页..

    包括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 的外观。

    如果这有帮助或有任何疑问,请告诉我

    【讨论】:

      【解决方案3】:

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

      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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-24
        • 2014-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多