[Tips] App.config内の Value値で改行をしたい

C#で使用する外部設定ファイル内の Value値で改行をしたくて、以下のように \r\n を挿入してみましたがうまくいきませんでした。

<add key="M0001" value="hoge \r\n fuga"/>


解決策

改行をしたい場所に &#13;&#10; を挿入。

<add key="M0001" value="hoge &#13;&#10; fuga"/>

よく考えてみたらあたりまえのことですね…

[ImageList][Tips] イメージサイズを設定する


ImageListコントロールにイメージを追加すると、サイズは16×16となります(既定値)。

イメージサイズを変更したい場合はSizeプロパティを設定します。ただし最大サイズは256×256となりますので注意が必要です。

下記は、ImageListのイメージサイズを256×256に設定する例です。

VBの例

' フォームロード時の処理
Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'イメージサイズを256x256に設定する
    ImageList1.ImageSize = New Size(256, 256)
End Sub

C#の例

// フォームロード時の処理
private void Form3_Load(object sender, EventArgs e)
{
    // イメージサイズを256x256に設定する
    imageList1.ImageSize = new Size(256, 256);
}

[ImageList][Tips] イメージを使用する

ImageListコントロールに登録されているイメージを使用するには主に2つの方法があります。

  1. ImageListのDrawメソッドを使用する
  2. ButtonコントロールやListViewコントロールが持つImageListプロパティSmallImageListプロパティLargeImageListプロパティなどに指定しコントロールに表示する

まずDrawメソッドですが、下記に示す例のようにGraphics上の指定された位置に、描画したいイメージのインデックスを指定して描画を行います。

次に、コントロールで描画する場合ですが、使用するコントロールによってImageListを指定できるプロパティが異なります。

たとえば、Buttonコントロールの場合はImageListプロパティ、ListViewコントロールの場合はSmallImageListプロパティ、LargeImageListプロパティ、StateImageListプロパティなどがあります。~ImageListというプロパティであればImageListを指定できると考えてよいでしょう。

コントロールでImageListのイメージを使用する場合はImageIndexプロパティに使用したいイメージのインデックスを指定します。

下記はImageListのイメージを使用する例です。

[イメージを描画]ボタンをクリックすると、フォーム上にアイコンを描画するとともに、リストビュー各項目にもイメージを表示します。

VBの例

' [イメージを描画]ボタンクリック時の処理
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    'ウィンドウハンドルの作成
    Dim g As Graphics = Graphics.FromHwnd(Me.Handle)

    'イメージリストにあるイメージをフォームに描画する
    ImageList1.Draw(g, New Point(110, 12), 0)
    ImageList1.Draw(g, New Point(140, 12), 1)

    '★★★リストビューに表示する小さなアイコンにImageList1を設定する★★★
    ListView1.SmallImageList = ImageList1
    ListView1.View = View.Details

    'リストビューに列を作成する
    ListView1.Columns.Add("アイコン")
    ListView1.Columns.Add("名前")

    'リストビューに追加する1つ目の項目を作成
    Dim item1 As New ListViewItem
    item1.ImageIndex = 0    '★★★ImageListの1つ目のイメージを使用する★★★
    item1.SubItems.Add("Camera")

    'リストビューに追加する2つ目の項目を作成
    Dim item2 As New ListViewItem
    item2.ImageIndex = 1    '★★★ImageListの1つ目のイメージを使用する★★★
    item2.SubItems.Add("PC")

    'リストビューに項目を追加する
    ListView1.Items.Add(item1)
    ListView1.Items.Add(item2)
End Sub

C#の例

// [イメージを描画]ボタンクリック時の処理
private void button1_Click(object sender, EventArgs e)
{
    // ウィンドウハンドルの作成
    Graphics g = Graphics.FromHwnd(this.Handle);

    // イメージリストにあるイメージをフォームに描画する
    imageList1.Draw(g, new Point(110, 12), 0);
    imageList1.Draw(g, new Point(140, 12), 1);

    // ★★★リストビューに表示する小さなアイコンにImageList1を設定する★★★
    listView1.SmallImageList = imageList1;
    listView1.View = View.Details;

    // リストビューに列を作成する
    listView1.Columns.Add("アイコン");
    listView1.Columns.Add("名前");

    // リストビューに追加する1つ目の項目を作成
    ListViewItem item1 = new ListViewItem();
    item1.ImageIndex = 0;    // ★★★ImageListの1つ目のイメージを使用する★★★
    item1.SubItems.Add("Camera");

    // リストビューに追加する2つ目の項目を作成
    ListViewItem item2 = new ListViewItem();
    item2.ImageIndex = 1;    // ★★★ImageListの1つ目のイメージを使用する★★★
    item2.SubItems.Add("PC");

    // リストビューに項目を追加する
    listView1.Items.Add(item1);
    listView1.Items.Add(item2);
}

[ImageList][Tips] イメージを追加する

ImageListコントロールにはイメージを複数のイメージを格納することができます。

プロパティウィンドウからイメージを追加する場合は下記手順にて行います。

1.Imagesプロパティ欄の右側に表示される[…]ボタンをクリックする

2.イメージコレクションダイアログが表示されるので[追加]ボタンをクリックする

3.追加するイメージを選択する

4. 2.と3.を繰り返し必要なイメージを追加する

次にコードからイメージを追加する方法ですが、ImagesプロパティのAddメソッドを使用します。

Addメソッドの引数にはImageクラスFromFileメソッドを使用してイメージを指定します。

VBの例

' フォームロード時の処理
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    'イメージを追加する
    ImageList1.Images.Add(
        Image.FromFile("C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1041\VS2010ImageLibrary\Objects\ico_format\WinXP\blankcd.ico"))
End Sub

C#の例

// フォームロード時の処理
private void Form1_Load(object sender, EventArgs e)
{
    // イメージを追加する
    imageList1.Images.Add(
        Image.FromFile(@"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\VS2010ImageLibrary\1041\VS2010ImageLibrary\Objects\ico_format\WinXP\blankcd.ico"));
}

[HelpProvider][Tips] ポップアップヘルプを表示する

HelpProviderを使用すると、ポップアップヘルプを表示することができます。

ポップアップヘルプは、タイトルバーにある[?]ボタンをクリックした後、目的のコントロールをクリックするか、コントロールを選択状態にしてから[F1]キーを押すことで表示できます。

はじめに[?]ボタンを表示する方法ですが、HelpButtonプロパティにTrueを設定します。このときフォームの最小化ボタン(MinimizeBoxプロパティ)と最大化ボタン(MaximizeBoxプロパティ)にFalseを設定する必要があることに注意してください。

次に、コントロールに割り当てるヘルプ文字列ですが、SetHelpStringメソッドで設定します。第1引数にはヘルプ文字列を設定するコントロールを、第2引数にはヘルプ文字列を指定します。

下記はポップアップヘルプを表示する例です。

Buttonコントロール、CheckBoxコントロール、RadioButtonコントロールにヘルプ文字列を設定しています。

VBの例

' フォームロード時の処理
Private Sub Form3_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    '最小化ボタンと最大化ボタンを無効にする
    Me.MinimizeBox = False
    Me.MaximizeBox = False

    'ヘルプボタンを表示する
    Me.HelpButton = True

    'コントロールにヘルプ文字列を設定する
    HelpProvider1.SetHelpString(Button1, "これはButton1です")
    HelpProvider1.SetHelpString(CheckBox1, "これはCheckBox1です")
    HelpProvider1.SetHelpString(RadioButton1, "これはRadioButton1です")
End Sub

C#の例

// フォームロード時の処理
private void Form3_Load(object sender, EventArgs e)
{
    // 最小化ボタンと最大化ボタンを無効にする
    this.MinimizeBox = false;
    this.MaximizeBox = false;

    // ヘルプボタンを表示する
    this.HelpButton = true;

    // コントロールにヘルプ文字列を設定する
    helpProvider1.SetHelpString(button1, "これはbutton1です");
    helpProvider1.SetHelpString(checkBox1, "これはcheckBox1です");
    helpProvider1.SetHelpString(radioButton1, "これはradioButton1です");
}