2014-05-08 32 views
2

我有幾個文本框在我的窗體中顯示文件路徑。大多數文件路徑太長而無法在文本框中顯示。是否有可能削減多餘的文字並附加一些點字符,然後將其對齊?剪切文本以適應文本框的寬度,然後右對齊

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

一個文本框應該顯示:...lder\blabla\thisisatest.xml

如果我調整文本框,其中的文本應調整/它擴大。
有沒有辦法自動做到這一點,也許通過文本框的Resize事件。

非常感謝。

+0

什麼是這樣做的呢? –

+1

也許這有助於:http://stackoverflow.com/questions/8403086/long-path-with-ellipsis-in-the-middle – ChrFin

+0

@AJ:所以你看到文件名的末尾不是開頭,因爲這是很多對用戶更有用嗎? – ChrFin

回答

0

This可能會幫助您,如果您正在尋找基於輸入的文本調整您的文本框的大小。您可以在任何事件中調用此代碼,例如將焦點移出文本框或將文本加載到文本框後。您需要在代碼中將下面的行替換爲您的文本框的實際文本。

mySize = e.Graphics.MeasureString("This is a test", myFont); 
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它看起來像。

讓或者我知道這是有益的,如果您有任何疑問

0

使用此代碼刪除多餘的文字:

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

而且使用上面的代碼是這樣的:

​​

對於更改對齊方式,如果您的表單是Windows窗體,則可以使用此代碼:

txtPath.TextAlign = HorizontalAlignment.Right; 

或者,如果您的形式是一個WPF形式使用此代碼:

txtPath.HorizontalContentAlignment = System.Windows.HorizontalAlignment.Right;