1

私のプログラムにはピクチャボックスがあり、マウスをクリックするか、ContextMenuStrip を選択して、クリックした同じ場所に何かを表示させたいと思っています。

写真に見られるように、特定のクリックされた日付領域にある種のメモを追加したいと思います(おそらくユーザーコントロールを追加します)

どうすればいいですか?クリック座標 (x,y) を送信して、同じ座標に何かを表示するにはどうすればよいですか?

ありがとう !

代替テキスト

4

3 に答える 3

1

要件のサンプルコード。以下のコードでは、マウスクリックでボタンコントロールを追加しています。必要に応じてコードを変更できます。

    int xValue=0, yValue=0;
    private void Form1_MouseClick(object sender, MouseEventArgs e)
    {
        xValue = e.X;
        yValue = e.Y;
        Button btn = new Button();
        btn.Name = "Sample Button";
        this.Controls.Add(btn);
        btn.Location = new Point(xValue, yValue);
    }
于 2010-11-19T10:21:23.537 に答える
1

メニュー項目を提供し、x、y 座標をキャプチャして、項目がクリックされたときに準備できるようにするクラスを作成します。または、匿名デリゲートでこれらの座標をキャプチャできます。

このようなもの:

public Form1()
{
    InitializeComponent();
    MouseClick += new MouseEventHandler(Form1_MouseClick);
}

private void Form1_MouseClick (object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        ContextMenuStrip ctxMenu = new ContextMenuStrip();

        // following line creates an anonymous delegate
        // and captures the "e" MouseEventArgs from 
        // this method
        ctxMenu.Items.Add(new ToolStripMenuItem(
           "Insert info", null, (s, args) => InsertInfoPoint(e.Location)));

        ctxMenu.Show(this, e.Location);
    }
}

private void InsertInfoPoint(Point location)
{
    // insert actual "info point"
    Label lbl = new Label()
    {
        Text = "new label",
        BorderStyle = BorderStyle.FixedSingle,
        Left = location.X, Top = location.Y
    };
    this.Controls.Add(lbl);
}
于 2010-11-19T10:16:35.330 に答える
0

ツールチップを使用するか、mousemoveイベントを使用できます。このイベントは、マウスの現在のxy位置を提供し、その場所でtrue / falseを表示するか、ラベルを取得してテキストを設定し、マウスのxyに従ってxy位置を設定してコンテンツを表示できます。次に、mouseleaveイベントで、そのラベルを画面外に移動するか、非表示にします

于 2010-11-19T10:05:48.900 に答える