- PR -

コンボボックスに見出し(タイトル)を表示したい

1
投稿者投稿内容
らもう
会議室デビュー日: 2006/06/13
投稿数: 3
投稿日時: 2006-06-13 22:17
はじめまして。宜しくお願いします。

VB.NET2003で開発しています。

過去のスレッドを拝見させて頂いて
複数列のコンボボックスは作成できたのですが
このコンボボックスに見出しを付けることは可能でしょうか?
(Accessみたいな感じで。。。)

具体的には現状
001 |担当A
002 |担当B
003 |担当C
と表示されるところを

コード |名前
001 |担当A
002 |担当B
003 |担当C
の様に表示したいのです。


どなたかご教授願います。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-06-13 22:45
今どのように行っているのかある程度のコードを見せてください。
Windowsアプリケーションですか?Webアプリケーションですか?
_________________
囚人のジレンマな日々
らもう
会議室デビュー日: 2006/06/13
投稿数: 3
投稿日時: 2006-06-13 23:35
Windowsアプリケーションです。

System.Windows.Forms.ComboBoxを継承したEditComboを作りました。

追加プロパティ
ColumnCount --列数
ColumnWidth --列幅


列データを保持用
Public Class ItemList

Public strData As String()

Public Sub New(ByVal strData As String())
Me.strData = strData
End Sub

Public Overrides Function ToString() As String
Return Me.strData(0)
End Function
End Class

後はDrawItemをオーバーライドしてドロップリストに描画しています。


これをフォームに配置しEditComboのプロパティを
ColumnCount=2
ColumnWidth=100,100
DrowMode=OwnerDrawFixed
DropDoenWidth=200
にし

実行時に
Me.EditCombo1.Items.Add(New EditCombo.EditCombo.ItemList(New String() {"001", "担当A"}))
Me.EditCombo1.Items.Add(New EditCombo.EditCombo.ItemList(New String() {"002", "担当B"}))


Me.EditCombo1.Items.Add(New EditCombo.EditCombo.ItemList(New String() {"010", "担当J"}))
の様にしています。


ドロップリストの1行目をスクロールしない様に出来れば、実現できるのではと考えております。

宜しくお願いします。
(読みづらいコードをづらづらと書いてしまったので修正させて頂きました。
これでもわかりづらいと思いますがご容赦願います)

[ メッセージ編集済み 編集者: らもう 編集日時 2006-06-14 19:30 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-06-14 21:01
引用:

囚人さんの書き込み (2006-06-13 22:45) より:

Windowsアプリケーションですか?Webアプリケーションですか?


ComboBox は Windows Form にしかありません。
Web Form なら、DropdownList になります。

VS7.1 までは、Windows Form も Web Form も DataGrid だったのですが、
VS8.0 で Windows Form は DataGridView、
Web Form では GridView になりました。

密かに「楽になった」と喜んでおります(笑)
らもう
会議室デビュー日: 2006/06/13
投稿数: 3
投稿日時: 2006-06-20 17:35
解決ではないのですが、FormDesigner4.0を使うことになりました。

FormDesigner4.0の拡張コンボボックスで実現はできるのですが、
Validatingイベントが2回実行されたり、e.Cancelが利かない現象がでます。

FormDesignerコンボ→System.Windows.Forms.TextBoxをクリック
コンボのValidatingでe.Cancel=TrueしているのにフォーカスはTextBoxへ。。。
(拡張テキストボックスを使ってないこと自体×なのか?)

使い方が間違っているのかもしれないので、もう少し調べてみます。
1

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