DOBON.NET DOBON.NETプログラミング掲示板過去ログ

CheckListBoxでチェックボックス部分

環境/言語:[Vista]
分類:[.NET]

こんにちは。

CheckListBoxを使っています。
クリックした場合に
チェックボックス部分をクリックしたのか
チェックボックス以外の項目部分をクリックしたのかを
知りたいのですが、
どのようにすればよいでしょうか?

よろしくお願いします。
そういうメソッドは用意されてないので直接は無理っぽいですね。
GetItemRectangle でアイテム全体の Rectangle は取得できるので、それと
CheckBoxRenderer.GetGlyphSize とを併せてそれっぽい値を計算するぐらいでしょうか。
■No24569に返信(Hongliangさんの記事)
> そういうメソッドは用意されてないので直接は無理っぽいですね。
> GetItemRectangle でアイテム全体の Rectangle は取得できるので、それと
> CheckBoxRenderer.GetGlyphSize とを併せてそれっぽい値を計算するぐらいでしょうか。

ありがとうございます。
こんな感じでできました。
値は私の環境で13と出ていました。

Dim g As Graphics
Dim state As VisualStyles.CheckBoxState
Dim returnValue As Size

returnValue = CheckBoxRenderer.GetGlyphSize(g, state)

    If CheckListBox.PointToClient(MousePosition).X >= returnValue.Width Then
    'チェックボックス以外の所をクリックしている
    End If
昨日は動いていたのですが
今日になると、次のエラーが出てしまいました。

警告 1 変数 'g' は、値が割り当てられる前に使用されています。Null 参照の例外が実行時に発生する可能性があります。

gにどんなエラーを割り当てるとよいのでしょうか?

ご存じの方おられましたら教えてください。
よろしくお願いします。



> こんな感じでできました。
> 値は私の環境で13と出ていました。
>
> Dim g As Graphics
> Dim state As VisualStyles.CheckBoxState
> Dim returnValue As Size
>
> returnValue = CheckBoxRenderer.GetGlyphSize(g, state)
>
> If CheckListBox.PointToClient(MousePosition).X >= returnValue.Width Then
> 'チェックボックス以外の所をクリックしている
> End If
>
>
>
エラー割り当てちゃ駄目です。g As Graphics ですよ?

MSDN の CheckBoxRenderer.GetGlyphSize の解説にあるサンプルコードを参考にすればいいんじゃないですか?
■No24582に返信(Hongliangさんの記事)
> エラー割り当てちゃ駄目です。g As Graphics ですよ?

あ、すいません
エラー、じゃなくて値でしたね。
どんな値を割り当てればいいのかを知りたかったです。

> MSDN の CheckBoxRenderer.GetGlyphSize の解説にあるサンプルコードを参考にすればいいんじゃないですか?

そこのサンプルのまま書いたはずなのですが
エラーになってしまいました。

自己レスですが
ネットで探しましたら、

Dim g As Graphics = CheckListBox.CreateGraphics
Dim state As VisualStyles.CheckBoxState
Dim returnValue As Size
returnValue = CheckBoxRenderer.GetGlyphSize(g, state)

このようにすると、よいことがわかい、動作確認もできました。
ありがとうございます。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.checkboxrenderer.getglyphsize.aspx
えー、ちゃんと g に値割り当ててますけど。Using 構文付きで。
■No24584に返信(Hongliangさんの記事)
> http://msdn.microsoft.com/ja-jp/library/system.windows.forms.checkboxrenderer.getglyphsize.aspx
> えー、ちゃんと g に値割り当ててますけど。Using 構文付きで。

おお、
下の方に書かれてあったのですね。

上の方しかみていなくて、そのまま書いてしまいました。

ありがとうございます。

DOBON.NET | プログラミング道 | プログラミング掲示板