2017-12-01 22 views
0

リストボックス内に改行を作成して、ユーザーがテキストの全内容を読むことができないようにテキストをドラッグしないようにします。私はそのようなテキストは、リストボックスの終わりに達した場合、それは簡単な言葉、ワードラップで、ダウン次の行に行くことを望ん enter image description hereAsp.netでC#を使用してリストボックスで改行を作成するには?

これは次のように私の現在の出力がどのように見えるかです。私は検索するためにオンラインに行って、リストボックスを使用して折り返しテキスト機能を実装することは不可能であることを発見しました。私は、しかし、私は私は私はそれがになりたいリストボックスにそれを実装する方法がわからないです、オンラインワードラップアルゴリズムを見つけることができたし、それを使用することにしました

ここで私が見つけたコードです:。

// https://www.codeproject.com/Articles/51488/Implementing-Word-Wrap-in-C

public static string WordWrap(string text, int width) 
{ 
    int pos, next; 
    StringBuilder sb = new StringBuilder(); 

    // Lucidity check 
    if (width < 1) 
     return text; 

    // Parse each line of text 
    for (pos = 0; pos < text.Length; pos = next) 
    { 
     // Find end of line 
     int eol = text.IndexOf(Environment.NewLine, pos); 
     if (eol == -1) 
      next = eol = text.Length; 
     else 
      next = eol + Environment.NewLine.Length; 

     // Copy this line of text, breaking into smaller lines as needed 
     if (eol > pos) 
     { 
      do 
      { 
       int len = eol - pos; 
       if (len > width) 
        len = BreakLine(text, pos, width); 
       sb.Append(text, pos, len); 
       sb.Append(Environment.NewLine); 

       // Trim whitespace following break 
       pos += len; 
       while (pos < eol && Char.IsWhiteSpace(text[pos])) 
        pos++; 
      } while (eol > pos); 
     } 
     else sb.Append(Environment.NewLine); // Empty line 
    } 
    return sb.ToString(); 
} 

/// <summary> 
/// Locates position to break the given line so as to avoid 
/// breaking words. 
/// </summary> 
/// <param name="text">String that contains line of text</param> 
/// <param name="pos">Index where line of text starts</param> 
/// <param name="max">Maximum line length</param> 
/// <returns>The modified line length</returns> 
private static int BreakLine(string text, int pos, int max) 
{ 
    // Find last whitespace in line 
    int i = max; 
    while (i >= 0 && !Char.IsWhiteSpace(text[pos + i])) 
     i--; 

    // If no whitespace found, break at maximum length 
    if (i < 0) 
     return max; 

    // Find start of whitespace 
    while (i >= 0 && Char.IsWhiteSpace(text[pos + i])) 
     i--; 

    // Return length of text before whitespace 
    return i + 1; 
} 

は現在、私は、自分自身でメソッドとしてそれを置く私は、リストボックス方法自体に直接このメソッドを置く必要がありますか? enter image description here

「はい」の場合は、上記のコードを変更して動作させるにはどうすればよいですか? ところで、descLbは私のリストボックスの名前です

リストボックスを別のフォーム(例:それは私のための単純な私はリストボックスを使用したいと思います。

+0

。それをチェックして、私に知らせてください。 – Sunil

答えて

0

asp.netのリストボックスにテキストを折り返すために、複雑なサーバー側のC#コードがすべて必要なわけではありません。必要なのは特別なCSSです。たとえば、以下のCSSはasp.netリストボックスにテキストを自動的に折り返します。

CSSの下に記載されている幅がリストボックスオプションのテキストに適合するのに十分でない場合、折り返しが自動的に発生します。ここではリストボックスに

select option { 
white-space: normal; 
width: 100px 

}

をテキストをラップする

CSSを使用すると、そのテキストが自動的に包まなっている見るためにあなたの側で試すことができASPXマークアップです。

  • は私が
  • を包むために、特定のリストボックスに集中するIDを持つCSSセレクタを使用していますし、また、私は は、マークアップ幅内に収容することができない何でもので、幅を指定していない、ということ

    注意リストボックスの100pxは、 が自動的に修復されます。

<%@ Page Language="C#" AutoEventWireup="true" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Wrtap text in ListBox</title> 
    <style> 
     select[id*='ListBox1'] option { 
      white-space:normal; 
     } 
    </style> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <div> 
      <asp:ListBox ID="ListBox1" 
       Rows="6" 
       Width="150px" 
       SelectionMode="Single" 
       runat="server"> 
       <asp:ListItem>Item 1 dsdds sdsdsdsd sdsd sdsd sds xyz</asp:ListItem> 
       <asp:ListItem>Item 2</asp:ListItem> 
       <asp:ListItem>Item 3 gfgf kgkgkg kgkkg abc</asp:ListItem> 
       <asp:ListItem>Item 4</asp:ListItem> 
       <asp:ListItem>Item 5</asp:ListItem> 
       <asp:ListItem>Item 6</asp:ListItem> 
      </asp:ListBox> 
     </div> 
    </form> 
</body> 
</html> 

上記の特殊なCSSスタイルを指定することで、折り返しがasp.net listboxにどのように表示されるかがわかります。

aspのテキストラッピングのスクリーンショット私は一瞬前に答えを提供してきたネットリストボックス

Text wrapping in asp.net Listbox

+0

こんにちは、ありがとう!あなたの方法で試してみましたが、それは私のために働いてくれました。私には大変なトラブルがありました。もう一度ありがとうございます:) – blackJack

+0

よろしくお願いします。 – Sunil

+0

あなたはホバー上で複数のリストボックスを選択する方法を知っていますか?私は、私が掲示したものの隣にある別のリストボックスを持っていて、説明の隣に国のリストを表示しています。私は、国や説明のいずれかにカーソルを合わせると、どちらも強調表示されるようにしたいと思っています。 – blackJack

関連する問題