2016-06-22 10 views
0

私はWindowsフォームを使用しています。C#別のフォームコントロールをグループ化するにはどうすればいいですか?

私は一つのフレームを持っています。このフレームでは、いくつかのコントロールをまとめました。ある行のコントロールが一緒に属している(それらはオブジェクトを形成する)。全体的に私は同じコントロールを使って5つの行を持っています。

例:。:名前、姓、年齢、収入、など(一列に) 私は今、一緒に「バインド」、それらをする方法を知っておく必要があるだろうDropdownlists、チェックボックス、NumicUpDownなど

があります。イベントのカウントも同じです。現時点では、私はすべての異なるコントロールのイベントを作成し、その後、コントロール名の最後に数字でそれらを分配するので、むしろ迷惑になります。そしてそれからObjectを生成します。

は、私がどのようにイベントの数十をしないために持っており、1行ですべてが一緒に属していることを示しているのですか?フォーム上で一緒にをグループ化するための

+2

独自のグリッドコントロールを作成しないでください。 DataGridViewが気に入らない場合は、買い物をしてください。 –

答えて

0

(フレームではない) - 1枚のパネルにそれらのすべてを置きます。

それらのすべてに同じであってもハンドラを使用するには - 単に同じものに加入。 (デザイナーを使用して、イベントを選択し、ドロップダウンから選択します。コードからこれを行うには、YourControl2.EventName += YourControl1.EventNameを実行します)。これは、すべてのタイプのコントロールおよびすべてのイベントで可能ではないことに注意してください。イベントが同じ署名を持つ場合にのみ可能です。

+0

もし私があまりにも非特異的だったのであれば申し訳ありませんが、それはまさに私がやりたいことではありませんでした。それで、私は "行"と1つの行の異なるコントロール間で違う必要があります。または、私はどこか間違っていますか?... – EsoMoa

+0

@EsoMoaあなたが何を正確に言っているのか分かりません。これを一つずつ受けてみましょう。「行間」の違いはどういう意味ですか? – ispiro

0

簡単にUserControlを作成できます。プロジェクトまたはプロジェクトのフォルダを右クリックし、UserControlを選択します。フォームの場合と同様に、デザイナーでコントロールを追加することができます。

プロジェクトをコンパイルしたら、あなたのユーザーコントロールは、ツールボックスの上部に表示されます、あなたは、フォーム上にドラッグアンドドロップすることができます。このよう

は、1行を表すユーザーコントロールを作成し、フォームに行ごとに、そのうちの1枚を追加します。追加のプロパティ、メソッド、およびイベントをユーザーコントロールクラスに追加することもできます。それらは自動的にプロパティウィンドウに表示されます。


しかし、あなたの場合には、DataRepeater Control for Windows Formsが適切であろう。これはVisual Basic Power Packsの一部ですが、C#プロジェクトでも同様に動作します。

+0

ありがとう、独自のUserControlの考えのために、それについて考えなかった。しかし、私が上で説明したのと同じ問題はありませんか? UserControlごとに1つのイベントを追加して、このイベントの中で、別のコントロールの間で気を配らなければなりません。ちょうどそれは "クリーナー"と同じことではありませんか? – EsoMoa

+0

いくつかのデータバインディングメカニズムを使用するグリッドコントロールを使用する方がクリーンです。グリッドの列を構成するプロパティを含むクラスを作成します。このクラスのオブジェクトのリストをグリッドにバインドし、イベントでは 'grid.SelectedItem'、' grid.FocusedItem'またはグリッドが提供しているもので現在のアイテムを取得します。良いグリッドコントロールでは、ドロップダウンやチェックボックスなどを使うことができます。 –

+0

データリピータには同じ目的のための 'CurrentItem'プロパティがあります。 –

関連する問題