- PR -

C# Windows 二つListBox項目の追加、削除

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-20 17:21
引用:

未記入さんの書き込み (2006-02-20 17:12) より:

もしDBと結びつけずに、ListBox1の項目リストはどうすれば設定しますか?
またListBox1のValueMemberもどうすれば設定しますか?
教えていただけませんか?


とりあえず、DataSource を使わなければ良いと思われます。

コード:

    private void Form1_Load(object sender, System.EventArgs e) {
        System.Collections.ArrayList list = new System.Collections.ArrayList();

        list.Add(new System.Collections.DictionaryEntry(1, "AAA"));
        list.Add(new System.Collections.DictionaryEntry(2, "BBB"));
        list.Add(new System.Collections.DictionaryEntry(3, "CCC"));
        list.Add(new System.Collections.DictionaryEntry(4, "DDD"));

        this.listBox1.ValueMember   = "Key";
        this.listBox1.DisplayMember = "Value";
        // こうなっているであろう箇所を
        // this.listBox1.DataSource = list;
        // このように変える
        this.listBox1.Items.AddRange(list.ToArray());
    }


多分、こんな感じでしょう。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/02/20
投稿数: 10
投稿日時: 2006-02-20 17:25
非連結オブジェクトのリストでいいですけど、ListBox1のValueMemberはどうすれば設定しますか?
教えていただけませんか?

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-20 17:35
引用:

未記入さんの書き込み (2006-02-20 17:25) より:

非連結オブジェクトのリストでいいですけど、ListBox1のValueMemberはどうすれば設定しますか?
教えていただけませんか?


入れ違いで、教えさせていただきました。(*_ _)

DataSource に設定する代わりに ToArray メソッドで Object[] な配列にしてしまえば OK です。
ただし、AddRange メソッドの前に ValueMember と DisplayMember を指定する必要があります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/02/20
投稿数: 10
投稿日時: 2006-02-20 18:17
頂いた方法でソースを試しました。
ボタンを押すと、選択されたListBox1項目は正しく削除されましたけど、ListBox2に正しく追加されてないです。
private void btn_Add_Click(object sender, System.EventArgs e)
{
this.listBox2.Items.Add (this.listBox1.Items[this.listBox1.SelectedIndex]);
this.listBox1.Items.Remove(this.listBox1.Items[this.listBox1.SelectedIndex]);
}
ListBox2にSystem.Collections.DictionaryEntry項目として追加されました。選択されたListBox1項目のDisplayMeberとValueMeber追加されてないです。
原因を教えていただけませんか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-20 18:35
引用:

未記入さんの書き込み (2006-02-20 18:17) より:

頂いた方法でソースを試しました。
ボタンを押すと、選択されたListBox1項目は正しく削除されましたけど、ListBox2に正しく追加されてないです。
(snip)
ListBox2にSystem.Collections.DictionaryEntry項目として追加されました。
選択されたListBox1項目のDisplayMeberとValueMeber追加されてないです。
原因を教えていただけませんか?


ListBox2 は ListBox2 で DisplayMember, ValueMember の設定さえすればできますよ。
一応試してみましたが、問題なくできました。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/02/20
投稿数: 10
投稿日時: 2006-02-20 19:04
すみませんが、私はまだどうすればいいか良く分からないです。
ボタン押してから、イベントをどのように書けば良いでしょうか?
private void btn_Add_Click(object sender, System.EventArgs e)
{
}
教えていただけませんか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-20 19:09
引用:

未記入さんの書き込み (2006-02-20 19:04) より:

すみませんが、私はまだどうすればいいか良く分からないです。
ボタン押してから、イベントをどのように書けば良いでしょうか?


いえ、Click イベントはあのままでいけるはずですよ。

コード:

    if (this.listBox1.SelectedIndex >= 0) {
        this.listBox2.Items.Add(this.listBox1.SelectedItem);
        this.listBox1.Items.RemoveAt(this.listBox1.SelectedIndex);
    }


とした方が望ましいでしょうけど。

私が言っているのは、ListBox1 で対処した箇所と同じように ListBox2 も対処しましょう。
ということです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2006/02/20
投稿数: 10
投稿日時: 2006-02-20 19:31
頂いたソースを試しました。
でも、まだ旨くできませんでした。
現象:
ListBox2に選択されたListBox1項目のDisplayMemberではなくて、System.Collections.DictionaryEntryというメッゼジーを追加されました。
原因を教えていただけませんか?

スキルアップ/キャリアアップ(JOB@IT)