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

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

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

リストボックスの文字をリストに上書きする方法

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

■94465 / inTopicNo.1)  リストボックスの文字をリストに上書きする方法
  
□投稿者/ エイ (1回)-(2020/04/13(Mon) 20:01:46)

分類:[.NET 全般] 

初めまして。

VBの事でお聞きします。

リストボックスの文字をリストに上書きさせたいです。

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        ComboBox1.Items.Add("リンゴ")
        ComboBox1.Items.Add("トマト")
        ComboBox1.Items.Add("キュウリ")
    End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If ComboBox1.SelectedIndex = 0 Then
            If Not ListBox1.Items.Contains(ComboBox1.Text.Trim()) Then
                ListBox1.Items.Add(ComboBox1.Text.Trim)
            End If
        End If
        If ComboBox1.SelectedIndex = 1 Then
            If Not ListBox1.Items.Contains(ComboBox1.Text.Trim()) Then
                ListBox1.Items.Add(ComboBox1.Text.Trim)
            End If
        End If
        If ComboBox1.SelectedIndex = 2 Then
            If Not ListBox1.Items.Contains(ComboBox1.Text.Trim()) Then
                ListBox1.Items.Add(ComboBox1.Text.Trim)
            End If
        End If
    End Sub

 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        ListBox1.Items.Clear()
    End Sub


重複させないようにしています。
            If Not ListBox1.Items.Contains(ComboBox1.Text.Trim()) Then
                ListBox1.Items.Add(ComboBox1.Text.Trim)

リストに文字を上書きするには一度ListBox1.Items.Clear()してからじゃないと出来ないんでしょうか?
リンゴがリストに入っている時、「1番目にリンゴをトマト」に上書きさせるにはどうしたらよろしいでしょうか?
初心者ですがよろしくお願いします。

引用返信 編集キー/
■94466 / inTopicNo.2)  Re[1]: リストボックスの文字をリストに上書きする方法
□投稿者/ Hongliang (995回)-(2020/04/13(Mon) 20:12:41)
仕様がどうにもふわっとしているのですが…。

> リストに文字を上書きするには一度ListBox1.Items.Clear()してからじゃないと出来ないんでしょうか?
> リンゴがリストに入っている時、「1番目にリンゴをトマト」に上書きさせるにはどうしたらよろしいでしょうか?

ListBox.Itemsのドキュメントは以下になります。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.items?view=netframework-4.8
これを見ると、ItemsはListBox.ObjectCollection型であるのが分かるのでそのドキュメントを見ると
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.objectcollection?view=netframework-4.8
RemoveやInsertといったメソッドが存在しているのが分かります。

重複なしにリンゴをどこかに入れたいなら、
・まずリンゴをコレクションから除去する
・次に望みの位置にリンゴをコレクションに挿入する
という操作で実現できるでしょう。
引用返信 編集キー/
■94467 / inTopicNo.3)  Re[1]: リストボックスの文字をリストに上書きする方法
□投稿者/ 魔界の仮面弁士 (2683回)-(2020/04/13(Mon) 20:20:36)
No94465 (エイ さん) に返信
> リストボックスの文字をリストに上書きさせたいです。
リストボックスですか?
コンボボックスですか?

どちらも ListControl の派生クラスなので、親戚ではあるのですけれどね。
(DropDown プロパティを Simple にした ComboBox の高さを広げると、ListBox に近いスタイルになります)



>「1番目にリンゴをトマト」に上書きさせるにはどうしたらよろしいでしょうか?

【アイテムの内容を書き換えたい】という意味なら、Items プロパティに代入すれば OK 。
※ListBox でも ComboBox でも同様です。

If ListBox1.Items.Count > 0 Then
 If ListBox1.GetItemText(ListBox1.Items(0)) = "リンゴ" Then
  ListBox1.Items(0) = "トマト"
 End If
End If

今回のケースでは、
 If ListBox1.GetItemText(ListBox1.Items(0)) = "リンゴ" Then
の代わりに
 If CStr(ListBox1.Items(0)) = "リンゴ" Then
と書くこともできます。
(GetItemText メソッドは通常、DisplayMember プロパティと組み合わせて使います)



あるいは、【選択状態の変更】という意味、たとえば
1 番目の「リンゴ」が選択されていたものを、
2 番目の「トマト」が選択されていた状態にしたいなら、SelectedIndex プロパティです。
こちらも、ListBox でも ComboBox でも同様です。

If ListBox1.SelectedIndex = 0 Then
 ListBox1.SelectedIndex = 1
End If


なお、ListBox の SelectionMode プロパティを複数選択可能モードにしていた場合は、
SelectedIndex プロパティの代わりに GetSelected / SetSelected メソッドを使うことになります。
引用返信 編集キー/
■94478 / inTopicNo.4)  Re[2]: リストボックスの文字をリストに上書きする方法
□投稿者/ エイ (2回)-(2020/04/14(Tue) 19:54:05)
No94466 (Hongliang さん) に返信
> 仕様がどうにもふわっとしているのですが…。
>
>>リストに文字を上書きするには一度ListBox1.Items.Clear()してからじゃないと出来ないんでしょうか?
>>リンゴがリストに入っている時、「1番目にリンゴをトマト」に上書きさせるにはどうしたらよろしいでしょうか?
>
> ListBox.Itemsのドキュメントは以下になります。
> https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.items?view=netframework-4.8
> これを見ると、ItemsはListBox.ObjectCollection型であるのが分かるのでそのドキュメントを見ると
> https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.listbox.objectcollection?view=netframework-4.8
> RemoveやInsertといったメソッドが存在しているのが分かります。
>
> 重複なしにリンゴをどこかに入れたいなら、
> ・まずリンゴをコレクションから除去する
> ・次に望みの位置にリンゴをコレクションに挿入する
> という操作で実現できるでしょう。
魔界の仮面弁士さん、Hongliangさん
回答ありがとうございました。

解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ