ListBoxの操作について。

解決


超初心者  2009-01-10 23:12:58  No: 141245

BV.netでアプリケーションを組んでみたいのですが、ListBox内を元の状態(真っ白)にするには、どう記述すればよいでしょうか?VB4ですと、List1.ListClearって書けば、よかったと思います。
MSDNで探してもわかりませんでした。


ちぇしゃ  2009-01-11 03:55:24  No: 141246

ListBox.Items.Clearで。
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.listbox.objectcollection.clear(VS.80).aspx


超初心者  2009-01-11 04:14:20  No: 141247

ちぇしゃさんありがとうございました。
早速

Me.ListBox2.Items.Clear()
を記述してみましたが、

データソース プロパティを設定したときに Items コレクションを変更することはできません。とのエラーが返ってきます。
データソースをはずすとか、何か処理が必要なのでしょうか?

データソースをはずすには、どうすればいいのでしょうか?
申し訳ありません。


特攻隊長まるるう  2009-01-14 03:09:56  No: 141248

> データソース プロパティを設定したときに Items コレクションを変更することはできません。とのエラーが返ってきます。
データソースとして利用しているオブジェクトの Clear メソッドなら使えるのでは?

> データソースをはずすには、どうすればいいのでしょうか?
Nothing を設定します。


超初心者  2009-01-15 08:18:38  No: 141249

特攻隊長まるるう様、お返事ありがとうございます。
早速、下記のように記述してみました。

まず、ListBox2にデータソースをセットする。
Dim dv As DataView = New DataView(oDataSet.Tables("dmaster"))
dv.Sort = "dname"
Me.ListBox2.DataSource = dv

ボタンでListBox2の表示を真っ白にするために、下記のように記述してみました。
Me.ListBox2.DataSource = Nothing
Me.ListBox2.Items.Clear()

あるいは、
Me.ListBox2.DataBindings.Clear()
Me.ListBox2.Items.Clear()
と記述してましたが、どちらとも、エラーが返ってきます。

>データソースとして利用しているオブジェクトの Clear メソッドなら使え
>るのでは?

とのお返事をいただきましたが、どのように記述すればよいかわかりません。本当に、初心者で申し訳ありません。
どうか、教えてください。
よろしくお願い申し上げます。


まずは  2009-01-15 19:41:41  No: 141250

>どちらとも、エラーが返ってきます。

そのエラーの内容について考えてみましたか?
少し考えてみれば何かしら進展するはずなんですけどね。


超初心者  2009-01-16 05:52:22  No: 141251

まずはさん、お返事ありがとうございます。
エラーの内容ですが、

'データ連結を行なう
Dim dv As DataView = New DataView(oDataSet.Tables("dmaster"))
dv.Sort = "dname"
Me.ListBox2.DataSource = dv

次に、ボタンで、ListBox2の表示を真っ白にするために、

Me.ListBox2.Items.Clear()
と記述して、ボタンをクリックしたときに、
ListBox2の内容も消えず、

「データソース プロパティを設定したときに Items コレクションを変更することはできません。」
とのエラーが返ってきたので、

Me.ListBox2.DataSource = Nothing
Me.ListBox2.Items.Clear()
と記述したところ、

Dim dv As DataView = New DataView(oDataSet.Tables("dmaster"))
のところで、
「値を Null にすることはできません。 パラメータ名: dataSource」
とのエラーが発生しましたので、

Me.ListBox2.DataBindings.Clear()
Me.ListBox2.Items.Clear()
と記述してみたのですが、
Me.ListBox2.Items.Clear()
のところで、
「データソース プロパティを設定したときに Items コレクションを変更することはできません。」
とのエラーが返ってきます。

何を、どうすればよいか、わからなくなってしまいました。
どうか、何をどう書けばよいか、教えてください。
申し訳ありません。
お願いします。


めが〜ね  2009-01-16 19:19:46  No: 141252

Me.ListBox2.DataSource = oDataSet.Tables("dmaster")
Me.ListBox2.DisplayMember = ○○(表示させる項目)
Me.ListBox2.ValueMember = △△(表示させている項目に対応するコードなど。なければ特に必要なし)

として表示ができ、

Me.ListBox2.DataSource = Nothing

でクリアできるのではないでしょうか?

>Me.ListBox2.Items.Clear()

は必要ないかと思われます。


超初心者  2009-01-17 08:00:39  No: 141253

めが〜ねさん、お返事ありがとうございます。

Me.ListBox2.DataSource = oDataSet.Tables("dmaster")
Me.ListBox2.DisplayMember = dname
Me.ListBox2.ValueMember = dcode

Me.ListBox2.DataSource = Nothing
で、デバックを実行してみたのですが、
やはり、
Dim dv As DataView = New DataView(oDataSet.Tables("dmaster"))
のところで、
「値を Null にすることはできません。 パラメータ名: dataSource」
とのエラーが発生しましす。

データバインドしたListBox2を真っ白にクリアするのは不可能なのでしょうか?


特攻隊長まるるう  2009-01-17 19:51:11  No: 141254

> Dim dv As DataView = New DataView(oDataSet.Tables("dmaster"))
> のところで、
> 「値を Null にすることはできません。 パラメータ名: dataSource」
> とのエラーが発生しましす。
ボクの回答内容と関係ないエラーです。

データが表示されている状態で、
Me.ListBox2.DataSource = Nothing
だけ実行してください。


超初心者  2009-01-18 10:47:07  No: 141255

特攻隊長まるるう様
落ち着いてエラー発生場所を確認してみたところ、
ListBox2_SlectedIndexChanged()
でした。
If文で振り分けたところ、エラーが回避されました。

Private Sub ListBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox2.SelectedIndexChanged

Me.Label4.Text = CStr(Me.ListBox2.SelectedValue)
Me.Label5.Text = Me.ListBox2.GetItemText(Me.ListBox2.SelectedItem)

If butan2flg = 1 Then
    Dim cm As CurrencyManager = Me.ListBox2.BindingContext(Me.ListBox2.DataSource)
    Dim dr As DataRow = CType(cm.Current, DataRowView).Row
    Label6.Text = dr("dyaka")
Else
End If
    TextBox2.Select()
End Sub

自分が情けなく感じます。
ありがとうございました。


超初心者  2009-01-18 10:48:32  No: 141256

解決マーク付け忘れでした。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加