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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.74348 の関連記事表示

<< 0 >>
■74348  ComboBoxのDisplayMember入れ替え処理
□投稿者/ モモ -(2014/12/19(Fri) 11:32:05)

    分類:[.NET 全般] 

    言語切替の処理を作成しており、日本語名列と英語名列の両方を保持したDataTableをバインドしています。
    ComboBoxのDisplayMemberを入れ替えることにより実現しているのですが、
    DisplayMemberを設定し直した直後にTextプロパティを参照してみると前の言語列のままになっています。
    Textプロパティに変更後の言語列の内容(対象コンボボックスの選択SelectedIndexはそのままで)を反映する方法はありますか?
親記事 /過去ログ125より / 関連記事表示
削除チェック/

■74349  Re[1]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ shu -(2014/12/19(Fri) 12:43:55)
    No74348 (モモ さん) に返信
    
    以下のコードでどうでしょう?
    
    Public Class Form1
    
        Private tbl As DataTable
    
        Public Sub New()
            ' この呼び出しはデザイナーで必要です。
            InitializeComponent()
    
            ' InitializeComponent() 呼び出しの後で初期化を追加します。
            tbl = New DataTable
            With tbl.Columns
                .Add("val")
                .Add("col1")
                .Add("col2")
            End With
            tbl.Rows.Add("01", "abc", "あいう")
            tbl.Rows.Add("02", "cde", "かきく")
            tbl.Rows.Add("03", "fgh", "さしす")
            ComboBox1.ValueMember = "val"
            ComboBox1.DisplayMember = "col1"
            ComboBox1.DataSource = tbl
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            ComboBox1.DisplayMember = "col1"
            Label1.Text = ComboBox1.Text
        End Sub
    
        Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
            ComboBox1.DisplayMember = "col2"
            Label1.Text = ComboBox1.Text
        End Sub
    End Class
    
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74350  Re[2]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ モモ -(2014/12/19(Fri) 13:11:42)
    お返事ありがとうございます。
    私の質問の仕方が悪かったようで申し訳ありません。

    ComboBox1.DisplayMember = "col1"
    Label1.Text = ComboBox1.Text
    のように別のコントロールのテキストを更新するのではなく、
    ComboBox1.Text自体のことです。

    ComboBox1.DisplayMember = "col1"(日本語モード)としているのに
    なぜかComboBox1.Textは英語モードのままなんです。

    ComboBox1.DisplayMemberを入れ替えた後にRefreshメソッド等を発行してもダメでした。

    何かよい方法はありますでしょうか?
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74351  Re[3]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ ニーチェ -(2014/12/19(Fri) 13:32:44)
    確認ですが、
    ComboBox1.Textの中身ではなくって
    コンボボックスの表示のことですか?
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74352  Re[3]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ shu -(2014/12/19(Fri) 13:45:09)
    No74350 (モモ さん) に返信

    > ComboBox1.DisplayMember = "col1"
    > Label1.Text = ComboBox1.Text
    > のように別のコントロールのテキストを更新するのではなく、
    > ComboBox1.Text自体のことです。
    >
    代入しているのがComboBox1.Textなので意図にはあっているかと思います。

    再現ソース提示願います。
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74353  Re[4]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ モモ -(2014/12/19(Fri) 13:55:55)
    ComboBox1.Textの中身です。

    再現ソースというほどのものではありませんが、

    日本語の場合
     cmbName.DisplayMember = "NameJ"; // 日本語名列 例「山田 太郎」
    英語の場合
     cmbName.DisplayMember = "NameE"; // 英語名列 例「Taro Yamada」

    例えば日本語モードでDisplayMemberを英語名列に切り替えると
    cmbName.DisplayMemberは"NameE"に変更されるが、
    cmbName.Textは「山田 太郎」のまま残っています。
    DisplayMemberを入れ替えるとTextも自動的に切り替わると思っていました。
    何かよい方法がありましたら教えてください。
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74354  Re[5]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ shu -(2014/12/19(Fri) 14:45:52)
    No74353 (モモ さん) に返信
    > ComboBox1.Textの中身です。
    >
    > 再現ソースというほどのものではありませんが、
    > 「
    > 日本語の場合
    >  cmbName.DisplayMember = "NameJ"; // 日本語名列 例「山田 太郎」
    > 英語の場合
    >  cmbName.DisplayMember = "NameE"; // 英語名列 例「Taro Yamada」
    > 」
    これだと私の提示したコードと変わらないので再現性がないですね。
    私の提示したコードではモモさんの言われている現象は確認出来ないので
    違いをさがしてみて下さい。
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74355  Re[6]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ ニーチェ -(2014/12/19(Fri) 14:55:59)
    ・言語とバージョンは?
     (No74353を見るとC#のように思いますが、それがなければVBだと思っていました。)
    ・DropDownStyleは何を使っていますか?
    ・コンボボックスのTextプロパティの中身を具体的にどのように確認しましたか?
     (No74349のshuさんのサンプルはまさにTextプロパティの内容を参照しているので、
     同じことをすれば貴方の環境でも再現するはずですが?)
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74356  Re[7]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ モモ -(2014/12/19(Fri) 16:02:45)
    いろいろとすみません。
    2012 c#です。
    DropDownStyleはDropDownListです。
    コンボボックスのTextプロパティの中身は処理不正で判明しましたし、デバッグして確認もしました。
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74364  Re[8]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ ニーチェ -(2014/12/19(Fri) 17:49:05)
    > コンボボックスのTextプロパティの中身は処理不正で判明しましたし、デバッグして確認もしました。

    VS2012が手元にないのでお役に立てないかもしれませんが、もう一つ確認です。

    「処理不正」とありますが、具体的にはどういったことですか?
    ・Textプロパティを参照して処理を行ったら変な動きをして、よく見たらこれが日本語のままだったということなのか、
     (この場合、具体的にはTextプロパティの値をどのように利用していますか?(Stringの変数に入れるとか))
    ・それとも例外が発生したということなのか。
    (例外発生でDisplayMember自体が書き変わっていない、ということも考えられるので、念のための確認です)
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/

■74365  Re[1]: ComboBoxのDisplayMember入れ替え処理
□投稿者/ ヴァン -(2014/12/19(Fri) 18:28:04)
    No74348 (モモ さん) に返信

    こんにちは。

    1.SelectedIndex を別変数に保存。
    2.DataSource をクリア。
    3.DisplayMember を書き換え
    4.DataSource を設定。
    5.SelectedIndex を別変数から復帰。

    という具合ではどうでしょうか?
記事No.74348 のレス /過去ログ125より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -