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

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

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

Re[1]: コンボボックスが連動してしまう。(VB.NET)


(過去ログ 132 を表示中)

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

■78166 / inTopicNo.1)  コンボボックスが連動してしまう。(VB.NET)
  
□投稿者/ omi-z (1回)-(2015/12/18(Fri) 13:40:17)

分類:[.NET 全般] 

visual studio 2008のwindowsフォームで開発をしています。初心者です。

複数あるコンボボックスがん連動してしまう不具合がでたので質問させていただきます。

どういう状況かを説明します。
tablelayoutで&#9363;列60行ある表を作っております。12列のうち4列にはコンボボックスが入っています。
各列のコンボボックスのデータは列ごとにデータベースの異なるマスターからデータをひっぱてきてそれをデータソースに指定しています。
同じ列のコンボボックスに入るデータはすべて同じものです。

こういう状況なのですが、これでどこかの行のコンボボックスの値をマウスで選択すると、なぜか同じ列の全行のコンボボックスが連動してしまい、選んだコンボボックスの値と同じ値が同じ列の全行のコンボボックスに表示されてしまいます。コンボボックスは一つ一つ違う値にしたいのですが、一つ選ぶと同じ列の全行のコンボボックスが連動して同じ値が表示されるため、それができません。

この現象はなぜの起こるのでしょうか?また解決する方法はありますでしょうか?


引用返信 編集キー/
■78168 / inTopicNo.2)  Re[1]: コンボボックスが連動してしまう。(VB.NET)
□投稿者/ shu (792回)-(2015/12/18(Fri) 13:59:11)
No78166 (omi-z さん) に返信

連動してしまうコンボボックスのDataSourceが同じものになっていませんか?
引用返信 編集キー/
■78169 / inTopicNo.3)  Re[1]: コンボボックスが連動してしまう。(VB.NET)
□投稿者/ WebSurfer (744回)-(2015/12/18(Fri) 14:25:49)
No78166 (omi-z さん) に返信

> この現象はなぜの起こるのでしょうか?また解決する方法はありますでしょうか?

tablelayout って何だか分かりませんし、ComboBox のデータソースをどのよう
に設定したのかも不明ですので、原因は分かりませんしもちろんその解決策も
分かりません。

少なくとも自分には今提供されている情報では回答不能ですので、とりあえず
DataGridView と SQL Server DB を使った例を紹介しておきます。

DataGridView に ComboBox を表示
http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx

これがやりたいことと違う場合はどう違うのか教えてもらえるともう少し話が
通じやすくなるのではないかと思います。

引用返信 編集キー/
■78177 / inTopicNo.4)  Re[2]: コンボボックスが連動してしまう。(VB.NET)
□投稿者/ omi-z (2回)-(2015/12/18(Fri) 20:36:00)
No78168 (shu さん) に返信
>
> 連動してしまうコンボボックスのDataSourceが同じものになっていませんか?

はい。連動してしまうコンボボックスのDataSourceは同じものです。
Datasourceが同じではいけないのですか?

DataSourceを指定するのではなくて、Idと項目名の両方をもち、ToStringメソッドをオーバーライドしたクラスを作り、ComBox.Item.Add()を使い、コンボボックスにそのクラスをいれることにより、連動はしなくなりましたので自己解決しました。

ついでに質問なのですが、現在画面の表示が非常に遅いです。いろいろやっているので、一つ一つの要素が遅い原因でしょうとは思います。その上で聞きたいのですが、その画面では、TabControlの一つのタブの中に、TableLayoutPanelを入れてます。TableLayoutPanelにはラベルを120個、コンボボックスを240個、テキストボックスを360個いれています。こういったTableLayoutPanelの表示はだいぶ遅くなりますか?
引用返信 編集キー/
■78186 / inTopicNo.5)  Re[3]: コンボボックスが連動してしまう。(VB.NET)
□投稿者/ 魔界の仮面弁士 (613回)-(2015/12/20(Sun) 19:12:41)
No78177 (omi-z さん) に返信
> はい。連動してしまうコンボボックスのDataSourceは同じものです。
> Datasourceが同じではいけないのですか?

連動させたくないのであれば、Copy を渡すようにすれば OK です。
元データを複製したくない場合は、直接 DataSource に渡すのではなく、
BindingSource 等を経由させたバインドに変えることで対応できます。


> ついでに質問なのですが、現在画面の表示が非常に遅いです。
TabControl の場合、レイアウトは若干遅くなりますが、初回のページ表示までは
コントロールのロードが後回しにされますので、それ自体はさほど問題になりません。

ただし、TableLayoutPanel は圧倒的に遅くなります。
Form に直接張るのではなく、TabeLayoutPanel 内に TabeLayoutPanel を
入れ子にするなどすると、目に見えて遅くなります。

それでも、コントロール数が10個程度ならたいしたことはないですが、
数百にもなると、さすがに厳しいと思います。

DataGridView 等では代用できないのでしょうか?
DataGridView の場合、実際のコントロールは「アクティブなセル」にしか存在せず、
その他のセルは描画だけで、実際のコントロールリソースを持たないため、
レンダリングは高速です。
(使い方を間違えれば、DataGridView も遅くなりますが…)
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -