C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

コントロールの動的生成


(過去ログ 1 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■982 / inTopicNo.1)  コントロールの動的生成
  
□投稿者/ BOUBOU 一等兵(5回)-(2005/08/05(Fri) 18:11:37)

分類:[C#] 


分類:[C#] 

ボタンを押すたびにパネルなどのコントロールを,新たなINDEXとして
既存のINDEXの最大値+1として生成したいと思っています.

今のところ大きな要素数で宣言(要素数+1に対応できなくなるので問題ですが)
して.

Panel []P = new Panel[10000];
P[0] = new System.Windows.Forms.Panel();
this.Controls.Add(P[0]);
P[0].Location = new System.Drawing.Point(100,100);
P[0].Size = new System.Drawing.Size(100, 100);
P[0].BackColor = System.Drawing.Color.Pink;

というかんじでやっているのですが1つめも生成できません.

どなたかわかるかたお願いします.


0
引用返信 編集キー/
■983 / inTopicNo.2)  Re[1]: コントロールの動的生成
□投稿者/ いば 少尉(32回)-(2005/08/05(Fri) 19:42:26)

分類:[C#] 

ボタンを動的に作るコードを書いてみました。
見た目でわかりやすいのでボタンにしましたが(ラベルは透明なので)、
実際はButtonをLabelに置き換えて作ってみてください。

// クラスのメンバー変数としてボタンのY座標を定義
int y = 0;

// ボタンが押されたら、動的にボタンを作成する
private void button1_Click(object sender, System.EventArgs e)
{
  // ボタンObjectを作成
  Button myButton = new Button();

  // ボタン文字列を定義
  myButton.Text = "AAA";

  // ボタン位置を設定
  myButton.Location = new Point(0,y);

  // ボタンを追加
  this.Controls.Add( myButton );

  // ボタン位置の調整
  y = y + 24;
}

※インデントをつけるのに全角空白を使っていますのでご注意ください。


0
引用返信 編集キー/
■984 / inTopicNo.3)  Re[2]: コントロールの動的生成
□投稿者/ いば 少尉(33回)-(2005/08/05(Fri) 20:07:28)

分類:[C#] 

さっきのはボタンでわかりにくいかもしれないのでパネル版を載せます。
参考にしてみてください。

=== 以下ソース ===

// ------------------------------
// クラスのメンバー変数として宣言
// ------------------------------
// パネルのY座標
int y = 0;

// パネルを格納しておく動的リスト
// (動的に数が増えていく物はArrayListで管理するのが楽です)
ArrayList panels = new ArrayList();

// ------------------------------
// ボタン1が押された時の処理
// ------------------------------
private void button1_Click(object sender, System.EventArgs e)
{
  // パネルObjectを新規作成して位置/サイズ/色を設定
  Panel myPanel = new Panel();
  myPanel.Location = new Point(0,y);
  myPanel.Size = new Size(20,10);
  myPanel.BackColor = System.Drawing.Color.Red;

  // パネルをフォームのコントロールとして追加
  this.Controls.Add( myPanel );

  // パネル同士が重ならないよう、位置をすこしずらす
  y = y + 24;

  // パネルだけを集めた動的リストに今作ったパネルを追加
  panels.Add(myPanel);
}

// ------------------------------
// ボタン2が押された時の処理
// ------------------------------
private void button2_Click(object sender, System.EventArgs e)
{
  // (おまけ)全パネルの色を青に一括変更
  foreach ( Panel pnl in panels ) {
    pnl.BackColor = System.Drawing.Color.Blue;
  }
}


0
引用返信 編集キー/
■985 / inTopicNo.4)  Re[2]: コントロールの動的生成
□投稿者/ じゃんぬ 神(108回)-(2005/08/05(Fri) 20:07:39)
じゃんぬ さんの Web サイト

分類:[C#] 

こんにちは、じゃんぬ@管理人 です。

この辺りでも一例があります。
http://jeanne.wankuma.com/tips/control/02-arraycontrol.html

No983に返信(いばさんの記事)
> ※インデントをつけるのに全角空白を使っていますのでご注意ください。

「適当に改行して下さい」モードを使ってくださいね。

0
引用返信 編集キー/
■986 / inTopicNo.5)  Re[3]: コントロールの動的生成
□投稿者/ いば 少尉(34回)-(2005/08/05(Fri) 20:12:55)

分類:[C#] 

じゃんぬさん、こんばんは

 いつもお世話になっています。
 図表モード(適当に改行する)試してみました(楽です^−^)。

 今後はそれを使います。ありがとうございました。

0
引用返信 編集キー/
■1042 / inTopicNo.6)  Re[3]: コントロールの動的生成
□投稿者/ BOUBOU 一等兵(6回)-(2005/08/16(Tue) 11:16:53)

分類:[C#] 

お返事遅れてしまってもうしわけありません.
いばさん,じゃんぬさんありがとうございました.

結構簡単にできるものなのですね.

助かりました,感謝しております.

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -