0

css を使用した Web ページのように、ボタンのマウス入力イベントでパネルを表示したいのと同じように、マウスの入力またはホバーで div を表示できますが、これを行うことができません。私はこのように努力しています。

private void btn2_MouseEnter(object sender, EventArgs e)
    {
        Button btn = (Button)sender;
        btn.BackColor = System.Drawing.Color.MistyRose; //this is executed on mouse enter
        Point locationOnForm = btn.FindForm().PointToClient(
        btn.Parent.PointToScreen(btn.Location));
        Panel pnl = new Panel();
        Label lbl = new Label(); 
        lbl.Text = "anything";
        pnl.Controls.Add(lbl);
        pnl.Location = new Point(locationOnForm.X, locationOnForm.Y);
        pnl.Size = new Size(500, 500);
        pnl.BackColor = Color.SkyBlue;
        pnl.Visible = true;
        pnl.Show();
    }

これを解決する方法がわかりません。それを知りたい

1)これは正しいアプローチですか、それとも他の方法がありますか?

2) これで問題ない場合、私がここで行っている間違いは何ですか?

ありがとう。

4

2 に答える 2

1

マウスの入力時にパネルを作成しないでください。むしろ、パネルを作成してから、表示と非表示を切り替えるだけです。

private void button1_MouseEnter(object sender, EventArgs e)
{
    panel1.Show();
}
于 2013-04-08T13:25:27.370 に答える
0

フォームコントロールにパネルを追加する必要があります

Form1.Controls.Add(pnl);

<div>Web のようにパネルをボタンの上に置くことを計画している場合はBringToFront()、フォーム上のボタンやその他のコントロールの背後にパネルが表示されないように呼び出す必要があります。

pnl.BringToFront();

また、前の回答と同様に、パネルを既にフォームに配置しvisible、パネルの場所と同様に true または false に設定した方がよい場合があります。そうしないと、フォーム コントロールに複数のパネルを追加することになります。

パネルにプレーン テキストを表示するだけの場合は、Tooltip コントロールを使用する方が簡単な場合があります -

MSDN - ツールヒント コントロール

于 2013-04-08T13:30:11.877 に答える