2016-05-24 27 views
1

ラベル、コンボボックス、テキストボックスを含むDataGridView内のセルを表すオブジェクトを作成し、これらのセルで異なる値でセルを埋めたいとします。DataGridViewに複数の異なるコントロールを追加する

私はカスタムセルを作成する方法を理解していますが、私が見たすべての記事やチュートリアルは、セルごとに1つのコントロールタイプしかなく、非常に混乱しています。

私はこれを読んで - だから、オブジェクトのこの種を作るためにどのような方法がある

.. DataGridView Control (Windows Forms)

しかし、単にそれを把握カント?

+0

これらのコントロールを1つのセルにまとめたいですか?彼らは同じ値を表示/編集していますか? –

+0

たとえば、ラベルには名前が表示され、コンボボックスには選択する名前のリストが表示され、テキストボックスには電話番号が表示されます。ユーザーがコンボボックスから名前を選択するたびに、彼が選んだ名前(もちろんデータベースから)に応じてラベルとテキストボックスが変わります。はい、1つのセルにすべて –

+0

あなたの要求が正確であるかどうかは不明です。しかし、 'Label'、' TextBox'、 'ComboBox'を' DataGridView'に表示する必要がある場合は、カスタムの列型を作成する必要はありません。読み込み専用 'DataGridViewTextBoxColumn'をラベルとして使用し、' DataGridViewTextBoxColumn'をテキストボックスとして、 'DataGridViewComboBoxColumn'をコンボボックスとして使用できます。 –

答えて

1

あなたが必要なコントロールでユーザーコントロールを作成し、私はあなたがあなたの細胞は、名前と電話番号を表示したい正しく理解していればDGVセル

+0

haha​​シンプルで華麗です。私はそれについて考えることはありませんでしたありがとう! –

+0

^^問題はありません - スタック上でそれを行う方法の例がたくさんあります、幸運! – ChenChi

1

の内側にそれを置くことを試みることができます。すべてのセルは単一の値を持つことができるため、名前と電話機を単一のオブジェクト(連絡先など)にラップする必要があり、バインドされたデータソースプロパティはそのタイプである必要があります。

セルに表示するには、実際に3つのコントロールをすべて表示する必要はありません。編集モードでないときは、2つのラベルが必要です(名前は1つ、電話は1つ)。編集モードでは、コンボボックスとラベル(または電話機を編集可能にする場合はテキストボックス)が必要ですが、それは難しいかもしれません。

カスタムDataGridViewCell、カスタムDataGridViewColumn、およびカスタム編集コントロールを作成するとします。

カスタムDataGridViewCellの子として2つのラベルを追加することもできますが、単にペイントをオーバーライドしてセルのサーフェスに直接名前と電話を描画する方がはるかに優れています。

カスタム編集コントロールは、IDataGridViewEditingControlインターフェイスを実装する任意のコントロールです。したがって、コンボボックスとラベル(またはテキストボックス)を含む複合コントロールにすることができます。コンポジットコントロールは、Contactオブジェクトを単一の単位として編集する必要があります。

また、カスタムDataGridViewColumnは、編集コントロールのドロップダウン部分のデータソースを提供します。

https://msdn.microsoft.com/en-us/library/7fb61s43(v=vs.110).aspxはカスタムセルと列を作成する方法を説明しています。

https://msdn.microsoft.com/en-us/library/7tas5c80(v=vs.110).aspxは、カスタム編集コントロールを作成する方法とカスタムセルからインスタンス化する方法について説明しています。

+0

お返事ありがとうございます、それは非常に有用です! –

関連する問題