C# - よく使うクラス - System.Windows.Forms - ListBox

クラウディア 
1. 概要
2. クリップボードへのコピー
3. 折り返し

1. 概要

 わたしは、ダイアログ内で、ログ等を表示する際に、多用しています。  参考サイトでは「項目のリストを表示する Windows コントロールを表します。」と書かれています。  本ページは、下記のサイトを参考にさせていただきました。
ListBox クラス (System.Windows.Forms) 」
「ウェブに残したもの: C#.NET で ListView にクリップボード機能のコピーを追加:選択範囲のみCrt+Cでデータをクリップボードへ」
「クリップボードにファイルをコピーまたは切り取りをする、クリップボードからファイルを取得する、貼り付ける」
「[WPF、Silverlight 2]リストボックス内でTextBlockコントロールの文字列を折り返すには?

2. クリップボードへのコピー

 基本的なことは、いったん置いておいて。  「ListBox」へ出力した内容をコピー&ペーストしたいことは、多々あるのです。  それも、複数行選択したい・・・。  「SelecttionMode」を「MultiExtended」にしておきます。  「ListBox」に対する、「KeyDown」のイベントを作成して。  下記のようなメソッドを追加します。

private void listBox_KeyDown(object sender, KeyEventArgs e)
{
	if (e.Control && e.KeyCode == Keys.C)
	{
		try
		{
			var builder = new System.Text.StringBuilder();

			foreach (var selectItem in listBox.SelectedItems)
			{
				builder.Append(selectItem + Environment.NewLine);
			}

			Clipboard.SetText(builder.ToString());
		}
		catch (Exception ex)
		{
			MessageBox.Show(@"クリップボードへのコピーに失敗しました["+ ex.Message +"]");
		}
	}
}

3. 折り返し

 これは、まだやってみていないのですが。  通常、「ListBox」で、文字列が右端からあふれると、横スクロールのバーが出現して、横にスライドするようになります。  これを折り返し表示にするには、「ScrollViewer.HorizontalScrollBarVisibility」プロパティを「Disable」に設定すればよい(既定値は「Auto」)らしい。