- PR -

コンボボックスのカラムを複数表示したい・・・

1
投稿者投稿内容
未記入
会議室デビュー日: 2004/07/13
投稿数: 1
投稿日時: 2004-07-13 22:30
VS.NET(C#)で開発しているのですが、
Accessのコンボボックスのように複数のカラムを表示したい
(データセットのテーブルとリンクした!)
のですが、VS.NETでは行えないのでしょうか?
(当方初心者のため分かりませんでした)

ここの掲示板の方々ならやられた方もいるかもしれないと思い
書込みしました。
どなたかご教授お願いします。
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-07-14 01:39
未記入さん どうもです。

引用:

VS.NET(C#)で開発しているのですが、
Accessのコンボボックスのように複数のカラムを表示したい
(データセットのテーブルとリンクした!)
のですが、VS.NETでは行えないのでしょうか?
(当方初心者のため分かりませんでした)

ここの掲示板の方々ならやられた方もいるかもしれないと思い
書込みしました。
どなたかご教授お願いします。



私も同じことで悩んでおります。
Microsoft Forms2.0 ComboBoxを使用すると出来そうなのですが、
配布に関する制限や、サポート問題もありやらないほうがよさそうです。
他に良い方法は無いものでしょうか?
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-14 08:48
 ComboBoxのItemsプロパティですが、これのクラスはObjectCollectionです。つまり、Itemsプロパティに追加できるのはStringクラス(文字列)だけでなく、どんなクラスのものでも追加できるのです。
 しかし、画面上に表示されるのは文字。いったいどうなっているんでしょうね?
 その仕掛けが、すべてのクラスの基底クラスであるObjectクラスにあります。.NET Frameworkのすべてのクラスは、Objectクラスから派生しています。Objectクラスにあるメソッドは、すべて持っているのです(注意)。そこでObjectクラスをよく見ると、ToStringメソッドというものを持っています。これの説明を見ると...
引用:

このメソッドは、カルチャに基づいた文字列をユーザーが判読できる形で返します。たとえば、値がゼロの Double クラスのインスタンスの場合、 Double.ToString 実装は、現在の UI カルチャに基づいて、"0.00" または "0,00" を返します。

既定の実装は、 Object の型の完全限定名を返します。

実装時の注意: 型に対して有効な値を返すようにするため、派生クラスでこのメソッドをオーバーライドできます。たとえば Int32 などの基本データ型は、オブジェクトが表す値を文字列として返すために ToString を実装します。 ToString よりも文字列の書式を厳密に制御する必要がある派生クラスは、 IFormattable を実装する必要があります。この ToString メソッドでは、現在のスレッドの CurrentCulture プロパティが使用されます。


つまり、画面に表示されている文字は、Object.ToString()メソッドの戻り値である、ということです。

 ということは、このメソッドをオーバーライドして、複数のカラムに分かれているような文字列を返すようにすれば、目的のことは達成できる、というわけです。
gorisaku
ベテラン
会議室デビュー日: 2004/04/17
投稿数: 95
投稿日時: 2004-07-14 10:52
Jitta殿 お返事ありがとうございます。

引用:

 ComboBoxのItemsプロパティですが、これのクラスはObjectCollectionです。つまり、Itemsプロパティに追加できるのはStringクラス(文字列)だけでなく、どんなクラスのものでも追加できるのです。
 しかし、画面上に表示されるのは文字。いったいどうなっているんでしょうね?
 その仕掛けが、すべてのクラスの基底クラスであるObjectクラスにあります。.NET Frameworkのすべてのクラスは、Objectクラスから派生しています。Objectクラスにあるメソッドは、すべて持っているのです(注意)。そこでObjectクラスをよく見ると、ToStringメソッドというものを持っています。これの説明を見ると...
引用:

このメソッドは、カルチャに基づいた文字列をユーザーが判読できる形で返します。たとえば、値がゼロの Double クラスのインスタンスの場合、 Double.ToString 実装は、現在の UI カルチャに基づいて、"0.00" または "0,00" を返します。

既定の実装は、 Object の型の完全限定名を返します。

実装時の注意: 型に対して有効な値を返すようにするため、派生クラスでこのメソッドをオーバーライドできます。たとえば Int32 などの基本データ型は、オブジェクトが表す値を文字列として返すために ToString を実装します。 ToString よりも文字列の書式を厳密に制御する必要がある派生クラスは、 IFormattable を実装する必要があります。この ToString メソッドでは、現在のスレッドの CurrentCulture プロパティが使用されます。


つまり、画面に表示されている文字は、Object.ToString()メソッドの戻り値である、ということです。

 ということは、このメソッドをオーバーライドして、複数のカラムに分かれているような文字列を返すようにすれば、目的のことは達成できる、というわけです。



当方初心者であるため少し理解に苦しみました。
(勉強中なのでご容赦願います)
どの様にすれば実装可能かもう少し調べてみようと思いますが、
開発に対する時間がなくて...
簡単に実装できる方法などがありましたらお教えいただけたらと思います。
soluna
ベテラン
会議室デビュー日: 2004/06/15
投稿数: 59
投稿日時: 2004-07-14 11:17
[quote]
gorisakuさんの書き込み (2004-07-14 10:52) より:


当方初心者であるため少し理解に苦しみました。
(勉強中なのでご容赦願います)
どの様にすれば実装可能かもう少し調べてみようと思いますが、
開発に対する時間がなくて...
簡単に実装できる方法などがありましたらお教えいただけたらと思います。
[/quote]
実装は簡単です、アイテムのクラスに
[code]
public override string ToString ()
{
return [i]返したい文字列[/i]
}
[/code]
とすれば良いだけです

詳しくは
キーワードverride
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1041/csref/html/vclrfOverridePG.htm
をお読み下さい。

オブジェクト指向をまだ理解できていないならば、
この機会にちゃんと勉強してはどうですか?
非常に役に立つものですよ。
http://www.atmarkit.co.jp/fdotnet/basics/oop_index/index.html
1

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