我的程序有一个图片框,我希望,只需点击鼠标,或者在ContextMenuStrip选项上,就可以在点击的同一位置显示一些内容。
如图所示,我想在特定点击日期区域添加某种注释(可能添加用户控件)我该怎么做?我如何发送点击坐标(x,y)并使这些坐标出现?
谢谢!
答案 0 :(得分: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);
}
答案 1 :(得分: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);
}
答案 2 :(得分:0)
您可以使用工具提示或使用mousemove事件。此事件将为您提供鼠标的当前xy位置,然后您可以通过该位置的可见真/假显示您的内容,或者获取标签并设置其文本,然后根据鼠标的xy设置其xy位置。然后在mouseleave事件上将该标签移动到屏幕外或隐藏