2009-07-08 2 views
2

私はタイマーを使っていくつかのファイルの最終的な内容をチェックする非常に簡単な長方形のWinFormを持っています。正常に動作します。WinFormにいくつかのコントロールをプログラムで追加することはできますか?

ここで、確認するファイルのリストは動的です。私は定期的にチェックするデータベースの値に依存します。それはまた大丈夫です。

私がしたいのは、私のwinform上のビジュアルです。各ファイルについて、赤い円が表示されます。ファイルがチェックされているときは、その円を緑色で表示します。一度終了すると、もう一度赤くなる。

  1. このサークルの行をプログラムで表示するにはどうすればよいですか?私はフォームの幅を知っています。覚えておいて、デザイナーにドラッグ&ドロップすれば、どれだけ表示するか分かりません。私はこれを動的に行うことができる必要があります:)
  2. この円を赤から緑に、後で緑から赤に切り替えるにはどうすればよいですか?
  3. サークルとは何ですか?カスタム画像(例:png)をMSPaintで作成し、埋め込みリソースとしてプロジェクトに追加しますか?

乾杯!

答えて

9
  1. 、親コンテナ(例えば、フォーム)のControlsコレクションに追加し、そのプロパティを設定し、各制御オブジェクトを作成します。 (a)追加した最後のコントロールに基づいて、新しいコントロールの座標を手動で調整するか、または(b)FlowLayoutPanelの中に入れます。
  2. 必要に応じて、コントロールの関連するプロパティ値を変更するだけで済みます(サークルの実装方法によって異なります)。
  3. 提案する画像リソースを使用するか、Graphicsオブジェクトを使用して自分で描画することができます。
+0

FlowLayoutPanel?驚くばかり!そのトリックをした。私はそれらを表すために、それぞれのファイルにLabelとPictureBoxを手動で追加しました。私はPictureBox.Imageの値をトグルして、各ファイルをいつどのようにチェックするのかに応じていました。邪悪!ありがとう! –

1

はいコントロール(新規)を作成してフォームに追加するだけです。ここではlinkを見てください。

あなたの残りの質問はかなり開いています - あなたが望むことを行うための多くの方法があります。

  • は、動的に各項目のコントロールのビットマップを入れ替え
  • ユーザーコントロールを作成
  • (実際には各項目が本当にコントロールである、それはユーザーの入力を受け入れる必要がない)各項目の(GDI +を経由して)円を描きます
  • ファイルのリストが、とにかくデータベースに保持されていると言うので、私は希望などの代わりに
0

をプログレスバーコントロールを使用しますデザインモードでフォームにdatagridviewを追加します。このdgvは、ファイルをデータソースとして使用するテーブルを使用して、動的に行を作成します。私はまた、ファイルが読み込まれているかどうかのブール値/ビットを保持するために、dgvまたはテーブル自体にカラムを追加します。これはdgvの列として表示されます。そこから読んでいるときに読んでいるファイルのdgv行を取得し、ブール型列のイメージを好みのイメージエディタで作成する緑色または赤色の円に変更します。

1

は、カスタムコントロールを実装し、このような何かを:

SuspendLayout(); 

MyCircleControl circle = new MyCircleControl(); 

// Set properties 
circle.Location = new Point(0,0); 
circle.Color = Color.Red; 

Controls.Add(circle); 

ResumeLayout(false); 

これは、設計者が何をしているのか、実際にあります。 Designer.csファイルを見てください。

1

このような場合は、追加するコントロールのすべてのプロパティを持つ「モデル」コントロールを作成します。例えば、サイズやその他のプロパティが既に設定されている赤い点など。次に、それを見えなくするか、見えないように設定します。次に、コントロールを動的に作成する必要がある場合は、そのモデルコントロールをクローンしてその位置を設定し、必要に応じて表示させてからフォームコントロールコレクションに追加します。

関連する問題