- 締切済み
DataColumnでリストボックスフォームを作るには?
New DataColumn("チェックボックス", True.GetType)) とやると、チェックボックスが生成されます。 New DataColumn("テキスト", "".GetType)) とやると、Captionが生成されるのですが、 DataColumnでリストBOXを生成するにはどのようにすればいいのでしょうか? なお、リストボックスの中身は、以下と過程し、後に値を取得するときに、0~3で取得できるようになっていると助かります。 Dim ListBoxes() ListBoxes(0) = "あ" ListBoxes(1) = "い" ListBoxes(2) = "う" ListBoxes(3) = "え" よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
>UltraWinGrid ・・・・ これって、拡張コントロールで、標準のデータグリッドではないですよね・・・ こういう情報は、最初に言っていただけないと、答えようがありません。 普通の.NETでは同梱されていない「別途購入して利用するコントロール」です。 私はこの商品を持っていないので、仕様もわかりませんし正確な事は言えません。 しかし公開してくださったコードから、「DataGridTextBoxColumn」クラスについて、使用方法が違っていることはわかります。 「DataGridTextBoxColumn」はデータグリッドを構成するクラスの一つです。 データセットに対し設定するものではありません。 >New DataColumn("チェックボックス", True.GetType)) >New DataColumn("テキスト", "".GetType)) これでチェックボックスや、テキストボックスになるのは、UltraWinGridの仕様であって、UltraWinGridなるものがDataGridTextBoxColumnを利用していなければ、DOBONさんのサンプルは利用できません。 しかしクラスを別途作成しなくても、様々なドロップダウン形式を標準で兼ね備えているようですね。 http://www.grapecity.com/japan/netadvantage2004/lineup/win/grid/wingrid.htm ※「列のスタイル」を参照 であれば、、、単純に、、、 UltraWinGridは「グレープシティ」さんの製品ですが、インストールCDに、サンプルが同梱されているはずです。 それをご覧になった方が確実です。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
>DS.Tables(0).Columns.Add(ts) 以外はそのまま 私がわかっている、あなたのソースは New DataColumn("チェックボックス", True.GetType)) New DataColumn("テキスト", "".GetType)) という部分だけで、他のソース部は全くわかりません。 >DS.Tables(0).Columns.Add(ts) がどのタイミングで、どのような呼び出し方法で行われているのかも全くわかりません。 クラス自体はDOBONさんのページの流用なのでしょうが、呼び出し元の流れがわからないと、何も言えません。 質問者さんが「困っている部分だけ」公開していても、エラー内容は「それまでのプロセスに原因」があるために起こっている問題です。 「カレーを作ろうとしたのですが、おいしくありません。さてどうしたらよいでしょう。」 と言われても、なぜおいしくないのか答えられないのと一緒です。 「おいしいカレー粉」の情報を提供しても、それを利用して、おいしくならないのは、「カレー粉以外の問題」です。 中に入れている具や、調理方法に問題があるとしか考えられません。 で、おいしいカレーを作るようになるためには二つの方法があります。 方法1.どのように作ったかの詳細を公開し、問題点を修正する。 方法2.現在の造りをまずは放棄し、レシピ(サンプル)通りに作って、王道の作り方をマスタし、それからオリジナル要素を含めたカレーを作る。 私は方法1による解決のために、プロセスの公開を求めているのですが、、、 何らかの理由により、公開が困難であれば、方法2をお勧めするしかありません。 前後関係のソースの公開か、 質問者さんの問題点は一度置いておいて、DOBONさんのページのサンプルを動かしてみてはいかがですか?
お礼
↑の続きです。 ' 'UserDA ' Me.UserDA.SelectCommand = Me.OdbcSelectCommand4 (省略) #End Region ' Gridデータの初期化 Private Sub InitGridData() Dim DS As New DataSet Try Me.DA.Fill(DS) Catch ex As Exception MsgBox("データ不整合") Return End Try ' Comboxを追加しようとする Dim ts As New DataGridTableStyle ts.MappingName = "DataTable1" Dim comboSorce As New DataTable("ComboBox") With comboSorce .Columns.Add("DisplayMember", GetType(String)) .Columns.Add("ValueMember", GetType(Integer)) .Rows.Add(New Object() {"Comboあ", 1}) .Rows.Add(New Object() {"Comboい", 2}) .Rows.Add(New Object() {"Comboう", 3}) End With Dim cbc As New Dobon.Samples.Forms.DataGridComboBoxColumn( _ comboSorce.DefaultView, "DisplayMember", "ValueMember") cbc.MappingName = "BB" cbc.HeaderText = "BB" ' これでチェックボックスになる 'DS.Tables(0).Columns.Add(New DataColumn("BB", True.GetType)) ' これでテキストになる 'DS.Tables(0).Columns.Add(New DataColumn("BB", True.GetType)) ts.GridColumnStyles.Add(cbc) ' この行でエラー DS.Tables(0).Columns.Add(ts) End Sub End Class
補足
方法1のほうを選択したいのですが、提示可能な範囲が、下記が限界です。 当方、VS2003を初めていじっていますので(VB4以降全く経験なし)細かい所がわからない部分があります。 また、方法2の方法では、現状で動いている部分を余計に破壊しかねないという可能性があるので、ほぼ無理だと思われます。 なお、DOBONさんのサンプル自体は動作させています。 また、UltraGridで構築されているのですが、マニュアルも何もなく、Webで検索しても何も情報がないに近い状態です。(ヘルプすらないので困っています) ----- Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinGrid Imports Infragistics.Win.UltraWinToolbars Imports System Imports System.Data Imports System.Windows.Forms Imports System.Drawing Namespace Dobon.Samples.Forms (サンプルそのまま) End Namespace Public Class test #Region " Windows フォーム デザイナで生成されたコード " Friend WithEvents DA As System.Data.Odbc.OdbcDataAdapter Friend WithEvents Grid As Infragistics.Win.UltraWinGrid.UltraGrid <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Dim Appearance1 As Infragistics.Win.Appearance = New Infragistics.Win.Appearance Dim UltraGridBand1 As Infragistics.Win.UltraWinGrid.UltraGridBand = New Infragistics.Win.UltraWinGrid.UltraGridBand("Band 0", -1) Dim UltraGridColumn1 As Infragistics.Win.UltraWinGrid.UltraGridColumn = New Infragistics.Win.UltraWinGrid.UltraGridColumn("AAA") Dim UltraGridColumn2 As Infragistics.Win.UltraWinGrid.UltraGridColumn = New Infragistics.Win.UltraWinGrid.UltraGridColumn("BBB") (似たようなものなので省略) Dim configurationAppSettings As System.Configuration.AppSettingsReader = New System.Configuration.AppSettingsReader Me.Grid = New Infragistics.Win.UltraWinGrid.UltraGrid ' 'Grid ' Me.Grid.Cursor = System.Windows.Forms.Cursors.Hand Appearance1.FontData.SizeInPoints = 11.0! Me.Grid.DisplayLayout.Appearance = Appearance1 UltraGridColumn1.Header.VisiblePosition = 0 UltraGridColumn1.Width = 42 UltraGridColumn2.Header.VisiblePosition = 1 UltraGridColumn2.Width = 104 (似たようなものなので省略 UltraGridColumn17まで) UltraGridBand1.Columns.AddRange(New Object() {UltraGridColumn1, UltraGridColumn2, UltraGridColumn3, UltraGridColumn4, UltraGridColumn5, UltraGridColumn6, UltraGridColumn7, UltraGridColumn8, UltraGridColumn9, UltraGridColumn10, UltraGridColumn11, UltraGridColumn12, UltraGridColumn13, UltraGridColumn14, UltraGridColumn15, UltraGridColumn16, UltraGridColumn17}) (これ以降省略) Me.DA = New System.Data.Odbc.OdbcDataAdapter
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
>>ts.GridColumnStyles.Add(cbc) >>DS.Tables(0).Columns.Add(ts) >この時点で、DS.Tables(0).Columns.Add(ts)の行で、以下のエラーメッセージが出てしまいます。 と言われても、「使い方が違うのでしょう」としか言いようがありません。 >Dobon氏のサンプルコードを反映させようとしたら・・・ と言うのであれば、どのように反映させたかを教えてください。
補足
DS.Tables(0).Columns.Add(ts) 以外はそのままコピー&ペーストで反映させています。
- 1050 円(@1050YEN)
- ベストアンサー率69% (477/687)
http://okwave.jp/kotaeru.php3?q=2201113 ここのスレと、参照しているURLをご覧ください。
補足
Dobon氏のサンプルコードを反映させようとしたら・・・ >ts.GridColumnStyles.Add(cbc) >DS.Tables(0).Columns.Add(ts) この時点で、DS.Tables(0).Columns.Add(ts)の行で、以下のエラーメッセージが出てしまいます。 どうすればいいでしょうか? これらの引数で呼び出される、アクセス可能な 'Add' がないため、オーバーロードの解決に失敗しました : 'Public Overridable Function Add(columnName As String) As System.Data.DataColumn': 型 'System.Windows.Forms.DataGridTableStyle' の値を 'String' に変換できません。 'Public Sub Add(column As System.Data.DataColumn)': 型 'System.Windows.Forms.DataGridTableStyle' の値を 'System.Data.DataColumn' に変換できません。 ちなみに・・・ DataColumn("チェックボックス", True.GetType)) を DataColumn("チェックボックス", "".GetType)) のようにすると、何も考えずにチェックボックスからテキストになってくれます。
お礼
解決できず、別のアプローチでの実装となりましたので、締め切りにします。 ありがとうございます。