2012-01-19 6 views
0

グリッドのような形でWindowsフォームに1000個のラベルを描画し、各ラベルが10個のグリッド形成で一意に識別されていると仮定します(例:S001、S002、... S999)。いくつかのラベルの周りに矩形を描き、矩形内のラベルだけを選択することは可能でしょうか。それから私は、例えば、それらのラベルの色を変更することができます。ウィンドウのフォーム上に複数のラベルを選択する

あなたは私が達成しようとしていることを尋ねるかもしれません。私は四角形を描いて駐車場のような車のベイを表現し、いくつかのベイを選択して色を変えて予約していると言うことができます。また、ラベル名をデータベースに保存して、ベイが占有されているかどうか、占有されている場合は、mousehoverイベントを使用して、ポップアップまたはツールテキストを介して車両情報を表示します。

これはできますか?

+0

実行時にフォーム上に四角形を描き、その四角形の内側にあるすべてのラベルを検出しますか? –

+0

はいDavide、ユーザーは予約するベイ(ラベル)の特定のブロックを選択して将来の計画を立てることができます – Privesh

+0

これはあなたが探している答えではないかもしれませんが、これらのラベル(またはそのようなWindowsコントロール)のすべてには、自分が行っている処理が、自分が行っていることに対して無関係かもしれないということを覚えておいてください。彼らはメッセージを処理するたびに少しCPUを盗みます。もちろん、コントロールを使用するのは簡単な方法ですが、効率的ではありません。 Bob PowellのGDI関連ソリューションのためのGoogleと彼の答えから多くを学ぶでしょう。もう一度言いましたが、これはあなたの答えではないかもしれませんが、アプリケーション全体を改善するかもしれません。 – silverspoon

答えて

0

はい、可能です。 WPFではこれをはるかに簡単に達成できました。 Color={Binding LotColor}

Windowsフォームでは、ラベルコントロールをすべて反復する方法もありますし、その名前は撮影されたものです(四角形を描く)枠線とフォント色のプロパティがそれぞれ調整されます。

0

すべてのLabelオブジェクトを管理する独自のクラスを作成できます。 public List<Label> GetLabelsInRectangle(Rectangle rectangle)のようなメソッドを使用して、再描画するすべてのオブジェクトのリストを提供できます。内部的には、2次元のLabelオブジェクトの配列を使用することができます。

+0

それはできます、ため息。私はC#で良いと思うが、私は一度に1ステップを推測する – Privesh