コンボボックスを連動させるには – プログラミング – Home

コンボボックスを連動させるには
 
通知
すべてクリア

[解決済] コンボボックスを連動させるには


今井
 今井
(@今井)
ゲスト
結合: 24年前
投稿: 8
Topic starter  

コンボボックスで自分で文字を入れた時とリストより選んだ際に
ほかのコンボボックスの表示も変えるといったプログラムを作成しています。

EditchangeとSelchangeに連動処理を入れているのですが
一度目にリストより選んだ際にイベントが入ってきてくれません。
(2度選ぶと入ってくる)
一度選んだだけでイベントが入ってくるようにするにはどうすればいいのでしょうか?


引用未解決
トピックタグ
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

私の環境では、1度目に来ますけど。

起動後、▼であらかじめ設定してあるデータから1項目を選ぶと
ChogeDlg::OnSelchangeCombo1()内に飛んできました。

(コンボのスタイルはドロップダウンにして確認しました。)


返信引用
今井
 今井
(@今井)
ゲスト
結合: 24年前
投稿: 8
Topic starter  

説明が足りなくて申し訳ありません。
確かに入ってくるのですが、まだコンボボックスのテキスト部分が
変更されていない状態で入ってきてしまうために、
うまい具合に連動ができなかったようです。
テキスト変更後に取得できるイベント等ありましたらお教えください。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

OnEditupdateCombo1()
とか

OnEditchangeCombo1()
ではまずいのでしょうか?

HELPを読まれましたか?


返信引用
今井
 今井
(@今井)
ゲスト
結合: 24年前
投稿: 8
Topic starter  

ヘルプも読みましたし、質問する前にOnEditupdateもOnEditchangeもやってみましたが
どうもリストより選択した際には入ってこないようです。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

どういうことをやったら、うまくいかないのか、何をしたいのか
良く理解できないのですけど。ゴメンナサイ。

もう少し詳しく教えてもらえますか?


返信引用
今井
 今井
(@今井)
ゲスト
結合: 24年前
投稿: 8
Topic starter  

説明が足りなくて申し訳ありません。

たとえばコンボボックスにAとBというリストがあったとします。
今Aが表示されていて、Bをリストより選択した際に

OnSelchangeイベントが入ってきて、
イベント内でGetWindowTextより、コンボボックスのテキストを取得すると
Bが入ってくるわけではなく、Aが入ってきてしまうので困っているわけです。
私の考えではBをリストより選んだ際にテキストの内容が変更される前に
OnselChangeイベントが入ってきてしまうのでうまくいってないんだと思います。

以上回避する方法があれば教えてください。


返信引用
Bun
 Bun
(@Bun)
ゲスト
結合: 24年前
投稿: 761
 

> OnSelchangeイベントが入ってきて、
> イベント内でGetWindowTextより、コンボボックスのテキストを取得すると
> Bが入ってくるわけではなく、Aが入ってきてしまうので困っているわけです。

本当ですね。知らなかった。

void Choge::OnSelchangeCombo1()
{
 CString ss;

 CComboBox* pComboBox = (CComboBox*)GetDlgItem(IDC_COMBO1); // IDC_COMBO1 はコンボのID

 int n = pComboBox->GetCurSel(); // 0から始まる選択したリストの番号を取得
 pComboBox->GetLBText(n, ss);   // その番号の文字列を得る

}

こんなことをやってみたらssに選択したリストの文字列を取得できました。(^_^)


返信引用
今井
 今井
(@今井)
ゲスト
結合: 24年前
投稿: 8
Topic starter  

セルのインデックスでやる方法ですね。
考えもしませんでした。
Bunさんのやり方でやったらできました。
ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました