【发布时间】:2016-06-10 10:11:31
【问题描述】:
我有一个自定义用户控件,其中包含一个占据 80% 空间的图表元素。
当它被放置在表单中时,我可以单击图表未占用的区域,并且单击/mousedown/mouseup 事件起作用。但是,当我单击图表区域时,鼠标事件并未通过,因此未触发。
是否有一种全局方法可以在不为表单上的每个控件添加事件函数的情况下执行此操作?
void Drag_MouseDown(object sender, MouseEventArgs e)
{
activeControl = sender as UserControl;
previousLocation = e.Location;
Cursor = Cursors.SizeAll;
}
void Drag_MouseMove(object sender, MouseEventArgs e)
{
if (activeControl == null || activeControl != sender)
return;
var location = activeControl.Location;
location.Offset(e.Location.X - previousLocation.X, e.Location.Y - previousLocation.Y);
activeControl.Location = location;
}
void Drag_MouseUp(object sender, MouseEventArgs e)
{
activeControl = null;
Cursor = Cursors.Default;
}
这些目前必须手动设置为自定义用户控件和图表
【问题讨论】:
-
你能在这里分享代码吗?
-
我已经添加了上面的代码。我想知道是否在用户控件上的任何子控件上触发这些鼠标事件之一时调用这些函数,而不必手动设置它们。
-
你在哪里分配了这个事件?
-
我已将它们添加到设计管理器属性部分。我在 overides 上找到了一些项目,但似乎无法正常工作
-
我也尝试过使用受保护的覆盖 void OnClick(EventArgs e) { MessageBox.Show("Test");但同样,这只适用于图表之外
标签: c# visual-studio