- PR -

コンボボックスのテキストを削除

1
投稿者投稿内容
トロ
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-07-30 13:28
VB.NETでWindowsアプリケーションで開発をしています。

@コンボボックスはリストより選択されている状態
Aドロップダウンし、その状態のままDeleteボタン押下してテキストを消去
Bコマンドボタンでイベント発生
この時に、表面上コンボボックスのテキストは消えて見えるのですが
コンボボックス.Textで取得すると@の文字列が取れます。

なぜ、このような現象が起こるのかご存知の方がおられましたら
ご教授下さい。
トロ
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-07-30 13:44
書き忘れました。
コンボボックスはDataSourceにDataSetを
ValueMemberとDisplayMemberが設定されています。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-07-30 17:23
何か他のイベントでテキストの値を書き換えたりとかしていませんか?
こんなコードを書いてみたけれど、テキストを削除したら何も表示されませんでした。
コード:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim source As New DataTable("table")
        source.Columns.Add(New DataColumn("text"))
        source.Columns.Add(New DataColumn("value"))

        source.Rows.Add("あ", "a")
        source.Rows.Add("い", "i")
        source.Rows.Add("う", "u")
        source.Rows.Add("え", "e")

        ComboBox1.DataSource = source
        ComboBox1.DisplayMember = "text"
        ComboBox1.ValueMember = "value"
        ComboBox1.SelectedValue = "i"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show(ComboBox1.Text)
    End Sub


_________________
かるあ のメモスニペット
トロ
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-07-30 17:41
かるあさん返答ありがとうございます。

引用:

かるあさんの書き込み (2007-07-30 17:23) より:
何か他のイベントでテキストの値を書き換えたりとかしていませんか?
こんなコードを書いてみたけれど、テキストを削除したら何も表示されませんでした。
コード:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim source As New DataTable("table")
        source.Columns.Add(New DataColumn("text"))
        source.Columns.Add(New DataColumn("value"))

        source.Rows.Add("あ", "a")
        source.Rows.Add("い", "i")
        source.Rows.Add("う", "u")
        source.Rows.Add("え", "e")

        ComboBox1.DataSource = source
        ComboBox1.DisplayMember = "text"
        ComboBox1.ValueMember = "value"
        ComboBox1.SelectedValue = "i"
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        MessageBox.Show(ComboBox1.Text)
    End Sub





かるあさんのコードをコピペさせて頂いて検証したのですが、やはり再現します。

再現手順
@F4でプルダウンリストを表示
ADeleteキーでテキストを削除
Bプルダウンリストが表示された状態のままButton1をクリック
ここで、コンボボックスのテキストは空白なのに@のTextが返されます。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-07-31 00:05
引用:

トロさんの書き込み (2007-07-30 17:41) より:
^
再現手順
@F4でプルダウンリストを表示
ADeleteキーでテキストを削除
Bプルダウンリストが表示された状態のままButton1をクリック
ここで、コンボボックスのテキストは空白なのに@のTextが返されます。



うーん、うち(Vista)では再現しませんね。
OSと.NET Framework のバージョンはどうなりますか?

コードを試したのは新しくプロジェクトを作成して試しましたか?
切り分けにまずは最小構成で問題が発生するか確認する必要があります。
_________________
かるあ のメモスニペット
トロ
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-07-31 14:37
返信が遅くなりました申し訳ございません。

OSはWindows XP
.NET Framework は1.1です。

新しくプロジェクトを作成してテストしました。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2007-08-01 10:19
1.1 のコンボボックスだと確かに発生しますね。
2.0 では発生しないのでバグ...なのかなぁ
どうもキー操作でアイテムを変更したときに SelectedItem が変更されないのが問題っぽいですね。

とりあえず、 TextChanged のタイミングでコンボボックスを Focus してやると最新のテキストを認識しましたが、これはこれで何か問題がおきそうです。
_________________
かるあ のメモスニペット
トロ
常連さん
会議室デビュー日: 2006/05/31
投稿数: 31
投稿日時: 2007-08-01 13:20
バグですかぁ・・・。

TextChangedで試してみます。
ありがとうございました。
1

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