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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.34500 の関連記事表示

<< 0 >>
■34500  Re[6]: パネルコントロールに配置したラベルのクリックイベントの取得
□投稿者/ tamaboyo -(2009/03/31(Tue) 13:04:53)
    よねKEN さん、ありがとうございます。

    > 変数iが宣言されていませんので、関連するソースコードを正確には抜き出せていないようです。
    > それと、各ラベルにTextプロパティを設定している箇所もありません。
    > 本当にこの通りのソースコードなんですか?
    > これだとラベルを視認できないので、Clickイベントが正しく動作するかどうかの確認自体ができないと思います。

    すみません。iの宣言が抜けていました。
    iは、
    関数の頭で
    int i = 0;
    で宣言しています。
    また、このラベルには文字列は表記しません。
    コピーの際に抜けてしまっているのですが、
    forの中で
    Lb[i].BackColor = Color.Gray;
    を記載しており、色つきのラベルを複数表示させるのが目的です。


    > (ちなみにAutoSizeプロパティをfalseに設定するコードもないようなので、
    > このままだとSizeプロパティの設定はあまり意味がありません。)

    このあと、SetBoundsを使用して、ラベル位置の補正を行っています。
    Textを表示しないのと、SetBoundsで指定し直しているので、AutoSizeの設定は必要ないかと思っていました。


    > このコードをどこから呼び出しているのか?フォーム上に配置しているコントロールの構成などの
    > 情報も合わせて、動作検証可能なソースコードを提示された方がよいと思います。

    フォームには、はじめパネルとボタンコントロールを配置しています。
    フォームを表示する際に、関数Contorol_Loadでラベルを作成し、パネルの上に表示しようとしています。
    パネルを載せているフォームは、他のフォーム(親)から呼び出しを行うため、関数Contorol_Loadは、
    親フォームでフォームの宣言をした後に呼ぶようにしています。
    Contorol_Loadを抜けた後、フォームはShowDialogで親フォームから表示しています。
    Contorol_Loadへはラベルの作成個数等の情報を引数で渡していますが、今はデバッグのため、引数は無視して、配列数は64で固定で動かしています。
    public void Contorol_Load(int nMax)
    {
    int i = 0;

    this.SuspendLayout();

    Lb = new System.Windows.Forms.Label[64];
    for (i = 0; i < Bit.Length; i++)
    {
    //インスタンス作成
    Lb[i] = new System.Windows.Forms.Label();
    //プロパティ設定
    Lb[i].Name = "Bit" + i.ToString();
    Lb[i].Size = new Size(29, 36);
    Lb[i].Location = new Point(i * 30, 10);
    Lb[i].Visible = true;
    Lb[i].BackColor = Color.Gray;
    //イベントハンドラに関連付け
    Lb[i].Click += new EventHandler(this.LB_Click);
    }

    //フォームにコントロールを追加
    Panel1.Controls.AddRange(Lb);
    }
記事No.34467 のレス /過去ログ60より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -