ListBoxの操作について。

解決


超初心者  2009-01-10 14:12:58  No: 141245  IP: 192.*.*.*

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

編集 削除
ちぇしゃ  2009-01-10 18:55:24  No: 141246  IP: 192.*.*.*

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

編集 削除
超初心者  2009-01-10 19:14:20  No: 141247  IP: 192.*.*.*

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

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

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

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

編集 削除
特攻隊長まるるう  2009-01-13 18:09:56  No: 141248  IP: 192.*.*.*

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

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

編集 削除
超初心者  2009-01-14 23:18:38  No: 141249  IP: 192.*.*.*

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

まず、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 10:41:41  No: 141250  IP: 192.*.*.*

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

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

編集 削除
超初心者  2009-01-15 20:52:22  No: 141251  IP: 192.*.*.*

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

'データ連結を行なう
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 10:19:46  No: 141252  IP: 192.*.*.*

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

として表示ができ、

Me.ListBox2.DataSource = Nothing

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

>Me.ListBox2.Items.Clear()

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

編集 削除
超初心者  2009-01-16 23:00:39  No: 141253  IP: 192.*.*.*

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

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 10:51:11  No: 141254  IP: 192.*.*.*

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

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

編集 削除
超初心者  2009-01-18 01:47:07  No: 141255  IP: 192.*.*.*

特攻隊長まるるう様
落ち着いてエラー発生場所を確認してみたところ、
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 01:48:32  No: 141256  IP: 192.*.*.*

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

編集 削除