C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ListBox生成とSelectedIndexChanged


(過去ログ 99 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■59101 / inTopicNo.1)  ListBox生成とSelectedIndexChanged
  
□投稿者/ さくたま (1回)-(2011/05/13(Fri) 15:47:44)

分類:[VB.NET/VB2005 以降] 

ShownのプロパティでDataTableを使ってListBoxを生成し
フォーカスが来た項目のValueMemberの値をTextBoxに表示させるために
SelectedIndexChangedのプロパティでSelectedValueを使い値を呼び出す様にしようとしています

しかしSelectedIndexChangedのプロパティで

  If ListBox1.SelectedIndex <> -1 Then
 Me.TextBox1.Text = ListBox1.SelectedValue
End If

として、無選択時には表示しないようにしているのですが
ListBoxの生成時にSelectedIndexChangedが走る時はSelectedIndexが-1ではなく0にあるので

Me.TextBox1.Text = ListBox1.SelectedValue

の部分でエラーになってしまいます

ListBox生成時にSelectedIndexを-1にする方法、又は他に仕分けられる項目がありましたら
教えていただけないでしょうか
よろしくお願いします

引用返信 編集キー/
■59105 / inTopicNo.2)  Re[1]: ListBox生成とSelectedIndexChanged
□投稿者/ hs (238回)-(2011/05/13(Fri) 23:25:29)
ListBox生成時に
SelectedIndexChangedが走らせないように、
AddHandlerとRemoveHandlerを入れてはどうでしょうか?



引用返信 編集キー/
■59106 / inTopicNo.3)  Re[1]: ListBox生成とSelectedIndexChanged
□投稿者/ やじゅ (1900回)-(2011/05/13(Fri) 23:56:24)
やじゅ さんの Web サイト
No59101 (さくたま さん) に返信
> ListBox生成時にSelectedIndexを-1にする方法、又は他に仕分けられる項目がありましたら
> 教えていただけないでしょうか
> よろしくお願いします

アクティブコントロール時のみセットするようにするとか。
If Me.ActiveControl.Name = DirectCast(sender, Control).Name Then
    If ListBox1.SelectedIndex <> -1 Then
        Me.TextBox1.Text = ListBox1.SelectedValue.ToString
    End If
End If

引用返信 編集キー/
■59119 / inTopicNo.4)  Re[1]: ListBox生成とSelectedIndexChanged
□投稿者/ くり太郎 (19回)-(2011/05/14(Sat) 13:52:59)
くり太郎 さんの Web サイト
No59101 (さくたま さん) に返信

ひょっとしてデータバインディングしてます?
データバインディングしている場合、-1 の状態って作れなかったような記憶があります。

引用返信 編集キー/
■59121 / inTopicNo.5)  Re[1]: ListBox生成とSelectedIndexChanged
□投稿者/ Azulean (746回)-(2011/05/15(Sun) 09:32:14)
No59101 (さくたま さん) に返信
> SelectedIndexChangedのプロパティでSelectedValueを使い値を呼び出す様にしようとしています

個人的には、SelectedValue プロパティの変化に応じたイベントならば、SelectedValueChanged イベントを使った方がよいような感じもしますが、何か引っかかる理由があって、SelectedIndexChanged イベントを使用されているのでしょうか?


>   If ListBox1.SelectedIndex <> -1 Then
>  Me.TextBox1.Text = ListBox1.SelectedValue
> End If

ガード条件として SelectedValue が Nothing かどうかでよいのじゃないかなぁと思いました。
(実験していません)
引用返信 編集キー/
■59131 / inTopicNo.6)  Re[2]: ListBox生成とSelectedIndexChanged
□投稿者/ さくたま (3回)-(2011/05/16(Mon) 17:27:32)
返信遅れてすみません。
たくさんの意見ありがとうございました。

最初はAzuleanの方法が一番簡単そうだと試してみたのですが、SelectedValue を Nothing にしてしまうと
SelectedValue が 0(1行目)のときに Nothing と捉えられてしまいうまくいきませんでした。

最終的にhsさんの方法で行い、うまくいきました。

助かりました、これからもよろしくお願いします。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -