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

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

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

Re[9]: comboboxのselectindexについて


(過去ログ 147 を表示中)

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

■85865 / inTopicNo.1)  comboboxのselectindexについて
  
□投稿者/ あ (1回)-(2017/11/29(Wed) 20:16:00)

分類:[.NET 全般] 

2017/12/01(Fri) 20:02:02 編集(投稿者)
2017/11/30(Thu) 18:34:21 編集(投稿者)

Visual Studio 2017のVB開発を使っています。

https://msdn.microsoft.com/ja-jp/library/system.windows.forms.combobox.selectedindex(v=vs.110).aspx
ここにある

Private Sub findButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    Dim index As Integer
    index = comboBox1.FindString(textBox2.Text)
    comboBox1.SelectedIndex = index
com
End Sub

文字を検索する時、「あ」を検索後、コモンボックスに
あの文字を見つけて表示されるには如何したらできますか?

コンボボックスに
あという文字は、「あり」、「アイス」、「アメリカンドック」
などひらがなとカタカナも含めてコンボボックスに表示されたいんですが
教えてください。お願いします。

引用返信 編集キー/
■85918 / inTopicNo.2)  Re[1]: comboboxのselectindexについて
□投稿者/ エラー仮面 (2回)-(2017/12/01(Fri) 16:53:33)
> 文字を検索する時、「あ」を検索後、コモンボックスに
> あの文字を見つけて表示されるには如何したらできますか?

「コモンボックス」とは、コンボボックス(ComboBox)のことでしょうか?

「あの文字を見つけて...」とは、コンボボックスのプルダウンリストより
「あ」(または「ア」)を含む要素を表示したい、というふうに理解しましたが、
もしコンボボックスに条件を満たす要素が複数ある場合はどうしますか?

例えば、コンボボックスのプルダウンリスト自体を
「あ」(または「ア」)含む要素のみとしたい(フィルタリング)、とか?
引用返信 編集キー/
■85919 / inTopicNo.3)  Re[2]: comboboxのselectindexについて
□投稿者/ あ (3回)-(2017/12/01(Fri) 20:24:27)
No85918 (エラー仮面 さん) に返信
>>文字を検索する時、「あ」を検索後、コモンボックスに
>>あの文字を見つけて表示されるには如何したらできますか?
>
> 「コモンボックス」とは、コンボボックス(ComboBox)のことでしょうか?
コンボボックスです。失礼しました。

例えば
あで始まる文字をコンボボックスに表示(カタカナとひらがな含む)。

「あり」、「アイス」、「アメリカンドック」
この3つのみ表示させたいんです。

combobox1.items.clearであだけ上の3つ表示させ。

複数(あ以外)ある場合
With combobox1
.Items.add("あ)
.Items.add("アイス)
.Items.add("アメリカンドック")
.Items.add("イカ")
.Items.add("いす")
.Items.add("いえ")
end with

このようなアイテムがあるとします。

あで検索すると「い」の文字は消える、逆にいを検索すると「あ」の文字は消える
ソースコードをいろいろ検索しても見つからずにいます。

カタカナとひらかなも一緒に文字を表示させたいのですが、お願い申し上げます。


引用返信 編集キー/
■85921 / inTopicNo.4)  Re[3]: comboboxのselectindexについて
□投稿者/ 魔界の仮面弁士 (1490回)-(2017/12/01(Fri) 22:41:28)
No85919 (あ さん) に返信
> あで始まる文字をコンボボックスに表示(カタカナとひらがな含む)。
> 「あり」、「アイス」、「アメリカンドック」
> この3つのみ表示させたいんです。

ComboBox1 自身の中身を入れ替えてしまうと再検索の際に困るので、
「全データ」を管理するためのリストと
「絞込んだデータ」を表示するためのコンボボックスは
別管理にした方が良いと思いますよ。



Imports System.Globalization
Public Class Form1
  Private list As New List(Of String)()

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '元データをコレクション変数に保持しておく
    list.Clear()
    list.Add("あ")
    list.Add("アイス")
    list.Add("アメリカンドック")
    list.Add("イカ")
    list.Add("いす")
    list.Add("いえ")

    'それを ComboBox に表示
    ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
    ComboBox1.DataSource = list
  End Sub

  Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    'テキストを書き換えるたびに、
    'リストの内容を先頭一致でフィルタリング
    Dim ci = New CultureInfo("ja-jp").CompareInfo
    Dim opt As CompareOptions
    opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
    opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
    opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない

    Dim txt As String = TextBox1.Text
    ComboBox1.DataSource = list.Where(
      Function(s)
        Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
      End Function).ToArray()
  End Sub
End Class

引用返信 編集キー/
■85923 / inTopicNo.5)  Re[4]: comboboxのselectindexについて
□投稿者/ あ (4回)-(2017/12/02(Sat) 19:23:57)
No85921 (魔界の仮面弁士 さん) に返信
> ■No85919 (あ さん) に返信

> Imports System.Globalization
> Public Class Form1
>   Private list As New List(Of String)()
>
>   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
>     '元データをコレクション変数に保持しておく
>     list.Clear()
>     list.Add("あ")
>     list.Add("アイス")
>     list.Add("アメリカンドック")
>     list.Add("イカ")
>     list.Add("いす")
>     list.Add("いえ")
>
>     'それを ComboBox に表示
>     ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
>     ComboBox1.DataSource = list
>   End Sub
>
>   Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
>     'テキストを書き換えるたびに、
>     'リストの内容を先頭一致でフィルタリング
>     Dim ci = New CultureInfo("ja-jp").CompareInfo
>     Dim opt As CompareOptions
>     opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
>     opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
>     opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない
>
>     Dim txt As String = TextBox1.Text
>     ComboBox1.DataSource = list.Where(
>       Function(s)
>         Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
>       End Function).ToArray()
>   End Sub
> End Class
>

本当にありがとうございました
無事出来ました。感謝い出します。

解決済み
引用返信 編集キー/
■85965 / inTopicNo.6)  Re[5]: comboboxのselectindexについて
□投稿者/ あ (5回)-(2017/12/05(Tue) 21:30:09)
2017/12/05(Tue) 23:27:50 編集(投稿者)
No85923 (あ さん) に返信
> ■No85921 (魔界の仮面弁士 さん) に返信
>>■No85919 (あ さん) に返信
補足として申し上げます。

新しいform2からlist.add("")に書いてform1にコンボボックス表示させたいと思いついたのですが。

form1の
Imports System.Globalization
Public Class Form2
  Private list As New List(Of String)()
    Private Sub raion_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Close()

        With Form1.ComboBox1
            list.Add("あり")
            list.Add("アメリカンドック")
'form1に表示させる
 Form1.ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
            Form1.ComboBox1.DataSource = list
end with

この場合は出来ます。
しかし、文字を検索すると消えてしまいました。

'form2
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
        'テキストを書き換えるたびに、
        'リストの内容を先頭一致でフィルタリング
        Dim ci = New CultureInfo("ja-jp").CompareInfo
        Dim opt As CompareOptions
        opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
        opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
        opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない
        Dim txt As String = Form1.TextBox2.Text
        Form1.ComboBox1.DataSource = list.Where(
Function(s)
    Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
End Function).ToArray()

    End Sub
'form1で検索する
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        'テキストを書き換えるたびに、
        'リストの内容を先頭一致でフィルタリング
        Dim ci = New CultureInfo("ja-jp").CompareInfo
        Dim opt As CompareOptions
        opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
        opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
        opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない

        Dim txt As String = a00.TextBox1.Text
        ComboBox1.DataSource = list.Where(
Function(s)
    Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
End Function).ToArray()
    End Sub

試したんですがform1で検索すると消えてしまいました。

何卒宜しくお願い致します。

引用返信 編集キー/
■85969 / inTopicNo.7)  Re[6]: comboboxのselectindexについて
□投稿者/ furu (142回)-(2017/12/06(Wed) 11:50:35)
No85965 (あ さん) に返信
> 2017/12/05(Tue) 23:27:50 編集(投稿者)
> 試したんですがform1で検索すると消えてしまいました。

TextBox1.TextChangedはForm1.TextBox2.Textで検索
TextBox2.TextChangedはa00.TextBox1.Textで検索

???
引用返信 編集キー/
■85975 / inTopicNo.8)  Re[7]: comboboxのselectindexについて
□投稿者/ あ (6回)-(2017/12/06(Wed) 18:54:49)
No85969 (furu さん) に返信
> ■No85965 (あ さん) に返信
>>2017/12/05(Tue) 23:27:50 編集(投稿者)
 
> TextBox1.TextChangedはForm1.TextBox2.Textで検索
> TextBox2.TextChangedはa00.TextBox1.Textで検索

'form1からform2に別form2でButton1をクリックするとform1にコンボボックスが表示される

Imports System.Globalization
Public Class Form1
    Private list As New List(Of String)()
    Dim a00 As New form2
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load


    End Sub

    Private Sub form2_Click(sender As Object, e As EventArgs) Handles form2.Click
'form2が開く
        a00.ShowDialog()
    End Sub
’form1で文字を検索可能にしたいんです。
Private Sub TextBox2_TextChanged(sender As Object, e As EventArgs) Handles TextBox2.TextChanged
        'テキストを書き換えるたびに、
        'リストの内容を先頭一致でフィルタリング
        Dim ci = New CultureInfo("ja-jp").CompareInfo
        Dim opt As CompareOptions
        opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
        opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
        opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない

        Dim txt As String = TextBox2.Text
        ComboBox1.DataSource = list.Where(
Function(s)
    Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
End Function).ToArray()
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim index As Integer
        index = ComboBox1.FindString(TextBox2.Text)
        ComboBox1.SelectedIndex = index

    End Sub
End Class
form1はここまで。

From2のコード

Imports System.Globalization
Public Class From2
    Private list As New List(Of String)()

    Private Sub form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Me.Close()
 list.Add("あ")
    list.Add("アイス")
    list.Add("アメリカンドック")
    list.Add("イカ")
    list.Add("いす")
    list.Add("いえ")

    'form1に表示
    ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
    ComboBox1.DataSource = list
  End Sub

end class

form2からButton1をクリックするとコンボボックスに表示されますが
文字を検索するとコンボボックスに表示から消えてしまいます。

どうしたらできますか?教えてくださいお願い申し上げます。

引用返信 編集キー/
■85977 / inTopicNo.9)  Re[8]: comboboxのselectindexについて
□投稿者/ furu (144回)-(2017/12/06(Wed) 19:29:41)
2017/12/06(Wed) 19:30:42 編集(投稿者)
2017/12/06(Wed) 19:30:23 編集(投稿者)
2017/12/06(Wed) 19:30:14 編集(投稿者)

No85975 (あ さん) に返信

Form1のlistは空のままなので
ComboBox1.DataSource = list.Where(…)で
コンボボックスが空になるのは当然です。

Form1のlistとForm2のlistを混同してませんか?
引用返信 編集キー/
■85979 / inTopicNo.10)  Re[9]: comboboxのselectindexについて
□投稿者/ あ (7回)-(2017/12/06(Wed) 19:56:50)
2017/12/06(Wed) 20:56:40 編集(投稿者)
No85977 (furu さん) に返信
> 2017/12/06(Wed) 19:30:42 編集(投稿者)
> 2017/12/06(Wed) 19:30:23 編集(投稿者)
> 2017/12/06(Wed) 19:30:14 編集(投稿者)
>
> ■No85975 (あ さん) に返信
>
> Form1のlistは空のままなので
> ComboBox1.DataSource = list.Where(…)で
> コンボボックスが空になるのは当然です。
>
> Form1のlistとForm2のlistを混同してませんか?
混同していました、すいませんでした。

ユーザーコントロールを使ったところ出来ました。
ご迷惑をおかけしました。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -