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」)らしい。
|
|