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

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

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

Re[4]: コンボボックスの表示方法


(過去ログ 173 を表示中)

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

■99440 / inTopicNo.1)  コンボボックスの表示方法
  
□投稿者/ TA (1回)-(2022/04/12(Tue) 14:35:14)

分類:[.NET 全般] 

開発環境
VB.Net2013


cboBoxに00、30を規定値で設定をしていますが、
データベースよりデータ取得時、00、30以外のデータがあり、
00、30以外のデータをコンボボックスに表示したいのですが、
表示されなず空白になります。

デバックで確認した所、コンボボックスにはデータの設定(例のデータだと"01")はされています。

コンボボックスのプロパティでDropDownStyleにDropDownの設定をしていますが、
他に何か設定する必要はありますでしょうか。



Dim intTmp As Short

'規定値で設定
With Me.cboBox
.Items.Clear()
.Items.Add("")
For intTmp = 0 To 30 Step 30
.Items.Add(VB6.Format(intTmp, "00"))
Next intTmp
.SelectedIndex = 0
End With


Dim datTemp As Date ''日時表示用の作業変数

datTemp = 日付データ(例:#4/12/2022 2:01:00 PM#)

Me.cboBox.Text = VB6.Format(datTemp, "nn") ''分 例"01"の設定が行われる


大変お手数ですが、ご教授願えませんでしょうか。

引用返信 編集キー/
■99441 / inTopicNo.2)  Re[1]: コンボボックスの表示方法
□投稿者/ WebSurfer (2462回)-(2022/04/12(Tue) 15:04:56)
No99440 (TA さん) に返信

コンボボックスとは何でしょう?

WinForms, WPF いずれにも ComboBox コントロールはありますし、サードパーティ製まで
含めるともっとあるかも。
引用返信 編集キー/
■99442 / inTopicNo.3)  Re[2]: コンボボックスの表示方法
□投稿者/ TA (2回)-(2022/04/12(Tue) 15:14:11)
No99441 (WebSurfer さん) に返信
> ■No99440 (TA さん) に返信
>
> コンボボックスとは何でしょう?
>
> WinForms, WPF いずれにも ComboBox コントロールはありますし、サードパーティ製まで
> 含めるともっとあるかも。



回答、ありがとうございます。
コンボボックスは
System.Windows.Forms.ComboBox
の事です。

引用返信 編集キー/
■99443 / inTopicNo.4)  Re[1]: コンボボックスの表示方法
□投稿者/ 魔界の仮面弁士 (3313回)-(2022/04/12(Tue) 15:14:50)
No99440 (TA さん) に返信
> デバックで確認した所、
デバックではなく
デバッグですよ。

bug (バグ) を取り除くので debug (デバッグ)。


> cboBoxに00、30を規定値で設定をしていますが、
規定値 (specified value) ではなく
既定値 (default value) かな。


> デバックで確認した所、コンボボックスにはデータの設定(例のデータだと"01")はされています。
ドロップダウンリストのアイテムに "01" が存在する状態でしょうか。
それともリストには無く、テキスト部にのみ "01" がある状態でしょうか。



> コンボボックスのプロパティでDropDownStyleにDropDownの設定をしていますが、
DropDownList ではなく、DropDown なのですね。

DropDown の場合は、テキストとリストは独立しており、
テキスト部の内容がリストにある内容と同一であったとしても
SelectedIndex が -1 になりえる点にご注意を。


> データベースよりデータ取得時、00、30以外のデータがあり、
> 00、30以外のデータをコンボボックスに表示したいのですが、
登録されているアイテムは、すべて String 型のデータなのですね?

一見すると
 .Items.Add(30) と
 .Items.Add(30.0) と
 .Items.Add("30") は、
いずれも見た目では同じですが、型が異なるがために
処理する上で差異が生じることがあります。



> Me.cboBox.Text = VB6.Format(datTemp, "nn") ''分 例"01"の設定が行われる

やりたいことは、次のうちどれでしょうか。

(1) ComboBox のリスト部に "01" というデータが既にあることは分かっており、それが選択された状態にしたい。
(2) ComboBox のリスト部に "01" があれば選択し、無ければ何も選択されていない状態にしたい。
(3) ComboBox のリスト部に "01" があれば選択し、無ければテキスト部に "01" が記載された状態にしたい。
(4) ComboBox のリスト部に "01" が無ければ追加し、かつ "01" が選択された状態にしたい。


Public Class Form1
  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    ComboBox1.Items.AddRange(New Object() {"", "00", "01"})
    ComboBox2.Items.AddRange(New Object() {"", "00"})
    ComboBox3.Items.AddRange(New Object() {"", "00"})
    ComboBox4.Items.AddRange(New Object() {"", "00"})
    ComboBox5.Items.AddRange(New Object() {"", "00", "01", "02"})
  End Sub

  Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    ComboBox1.SelectedItem = "01"
    ComboBox2.SelectedItem = "01"
    Dim idx = ComboBox3.FindStringExact("01")
    ComboBox3.SelectedIndex = If(idx >= 0, idx, ComboBox3.Items.Add("01"))
    ComboBox4.Text = "01"
    ComboBox5.Text = "01"
  End Sub
End Class
引用返信 編集キー/
■99444 / inTopicNo.5)  Re[2]: コンボボックスの表示方法
□投稿者/ TA (4回)-(2022/04/12(Tue) 15:31:01)
No99443 (魔界の仮面弁士 さん) に返信
> ■No99440 (TA さん) に返信
>> デバックで確認した所、
> デバックではなく
> デバッグですよ。
>
> bug (バグ) を取り除くので debug (デバッグ)。
>
>
>> cboBoxに00、30を規定値で設定をしていますが、
> 規定値 (specified value) ではなく
> 既定値 (default value) かな。
>
>
>> デバックで確認した所、コンボボックスにはデータの設定(例のデータだと"01")はされています。
> ドロップダウンリストのアイテムに "01" が存在する状態でしょうか。
> それともリストには無く、テキスト部にのみ "01" がある状態でしょうか。
>
>
>
>> コンボボックスのプロパティでDropDownStyleにDropDownの設定をしていますが、
> DropDownList ではなく、DropDown なのですね。
>
> DropDown の場合は、テキストとリストは独立しており、
> テキスト部の内容がリストにある内容と同一であったとしても
> SelectedIndex が -1 になりえる点にご注意を。
>
>
>> データベースよりデータ取得時、00、30以外のデータがあり、
>> 00、30以外のデータをコンボボックスに表示したいのですが、
> 登録されているアイテムは、すべて String 型のデータなのですね?
>
> 一見すると
>  .Items.Add(30) と
>  .Items.Add(30.0) と
>  .Items.Add("30") は、
> いずれも見た目では同じですが、型が異なるがために
> 処理する上で差異が生じることがあります。
>
>
>
>>Me.cboBox.Text = VB6.Format(datTemp, "nn") ''分 例"01"の設定が行われる
>
> やりたいことは、次のうちどれでしょうか。
>
> (1) ComboBox のリスト部に "01" というデータが既にあることは分かっており、それが選択された状態にしたい。
> (2) ComboBox のリスト部に "01" があれば選択し、無ければ何も選択されていない状態にしたい。
> (3) ComboBox のリスト部に "01" があれば選択し、無ければテキスト部に "01" が記載された状態にしたい。
> (4) ComboBox のリスト部に "01" が無ければ追加し、かつ "01" が選択された状態にしたい。
>
>
> Public Class Form1
>   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
>     ComboBox1.Items.AddRange(New Object() {"", "00", "01"})
>     ComboBox2.Items.AddRange(New Object() {"", "00"})
>     ComboBox3.Items.AddRange(New Object() {"", "00"})
>     ComboBox4.Items.AddRange(New Object() {"", "00"})
>     ComboBox5.Items.AddRange(New Object() {"", "00", "01", "02"})
>   End Sub
>
>   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
>     ComboBox1.SelectedItem = "01"
>     ComboBox2.SelectedItem = "01"
>     Dim idx = ComboBox3.FindStringExact("01")
>     ComboBox3.SelectedIndex = If(idx >= 0, idx, ComboBox3.Items.Add("01"))
>     ComboBox4.Text = "01"
>     ComboBox5.Text = "01"
>   End Sub
> End Class

回答、ありがとうございます。
色々間違えていて申し訳ありません。

>> デバックで確認した所、コンボボックスにはデータの設定(例のデータだと"01")はされています。
> ドロップダウンリストのアイテムに "01" が存在する状態でしょうか。
> それともリストには無く、テキスト部にのみ "01" がある状態でしょうか。

リストには無く、テキスト部にのみ "01" がある状態です。



>>Me.cboBox.Text = VB6.Format(datTemp, "nn") ''分 例"01"の設定が行われる
>
> やりたいことは、次のうちどれでしょうか。
>
> (1) ComboBox のリスト部に "01" というデータが既にあることは分かっており、それが選択された状態にしたい。
> (2) ComboBox のリスト部に "01" があれば選択し、無ければ何も選択されていない状態にしたい。
> (3) ComboBox のリスト部に "01" があれば選択し、無ければテキスト部に "01" が記載された状態にしたい。
> (4) ComboBox のリスト部に "01" が無ければ追加し、かつ "01" が選択された状態にしたい。

(3) ComboBox のリスト部に "01" があれば選択し、無ければテキスト部に "01" が記載された状態にしたい。
が出来る様にしたいです。


以上、よろしくお願いいたします。


引用返信 編集キー/
■99445 / inTopicNo.6)  Re[3]: コンボボックスの表示方法
□投稿者/ 魔界の仮面弁士 (3314回)-(2022/04/12(Tue) 16:08:29)
No99444 (TA さん) に返信
> (3) ComboBox のリスト部に "01" があれば選択し、無ければテキスト部に "01" が記載された状態にしたい。

Text 優先で、.SelectedIndex を用いない運用になりますね。
であれば、先ほどの ComboBox4 や ComboBox5 がそれにあたります。

それとも、先の例を試した時にも、
>> 表示されなず空白になります。
の状況になってしまうのでしょうか?


もし上記で動作するのであれば、最初に御自身で書かれていた
 cboBox.Text = "01" ''分 例"01"の設定が行われる
だけで済むことになるはず。
引用返信 編集キー/
■99446 / inTopicNo.7)  Re[3]: コンボボックスの表示方法
□投稿者/ TA (5回)-(2022/04/12(Tue) 16:11:50)
>   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
>     ComboBox1.SelectedItem = "01"
>     ComboBox2.SelectedItem = "01"
>     Dim idx = ComboBox3.FindStringExact("01")
>     ComboBox3.SelectedIndex = If(idx >= 0, idx, ComboBox3.Items.Add("01"))
>     ComboBox4.Text = "01"
>     ComboBox5.Text = "01"
>   End Sub

試してみました。
行いたいことが、
> (3) のリスト部に "01" があれば選択し、無ければテキスト部に "01" が記載された状態にしたい。
ですので、ComboBox2、ComboBox3、ComboBox4が対象だと思います。

ComboBox2、ComboBox4はComboBoxに空白が表示されました。
ComboBox3はComboBoxに"01"が表示されましたが、
ComboBoxのListに"01"が追加されてしまいました。

ComboBoxに"01"を表示し、Listに"01"を追加しない方法はありますでしょうか。


引用返信 編集キー/
■99447 / inTopicNo.8)  Re[4]: コンボボックスの表示方法
□投稿者/ 魔界の仮面弁士 (3315回)-(2022/04/12(Tue) 16:29:51)
No99446 (TA さん) に返信
> ComboBox2、ComboBox4はComboBoxに空白が表示されました。

あれ? 手元の環境ではこうなりましたが…。

ComboBox1 → "01" 表示、SelectedIndex は 2
ComboBox2 → 空テキスト、SelectedIndex は -1
ComboBox3 → "01" 表示、SelectedIndex は 2
ComboBox4 → "01" 表示、SelectedIndex は -1
ComboBox5 → "01" 表示、SelectedIndex は 2


もしも DropDownList モードにしているのであれば、2 と 4 が空白になりますが
今回の要件は DropDown モードなのですよね?

>> コンボボックスのプロパティでDropDownStyleにDropDownの設定をしていますが、
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -