Visual Studio .NET 2002.NET 1.0Visual Studio .NET 2003.NET 1.1Windows Forms中级开发Visual StudioWindows.NETC#
DragExtender - 用于拖动功能的ExtenderProvider






3.65/5 (12投票s)
2004年10月28日
1分钟阅读

39388

812
一个用于拖拽功能的扩展提供程序。
引言
这是我编写的一段代码,用于简化创建无边框窗体。
背景
你是否使用过无边框窗体? 你需要自己编写移动事件处理程序。 如果你在该窗体中包含(例如)一个面板,你也需要为该面板编写移动事件处理程序。 因此,我编写了一个小的 IExtenderProvider
实现来提供此功能。 你可以通过一些小的调整,以其他方式使用这段代码,例如,在窗体上移动控件。
使用代码
我还没有将这段代码集成到窗体设计器中,使其易于使用。 然而,以当前的形式使用它非常简单。
将扩展程序作为private
变量添加到窗体中。
private DragExtender dragExtender1;
在构造函数中,在调用 InitializeComponent()
之后添加以下代码:
this.dragExtender1 = new DragExtender();
你还应该指定哪个组件应该是拖拽目标(这留下了很多实验空间)。
this.dragExtender1.Form = this;
剩下的唯一代码就是分配可拖拽的控件了。
// make the form draggable
this.dragExtender1.SetDraggable(this, true);
// make panel1 draggable
this.dragExtender1.SetDraggable(this.panel1, true);
DragExtender
然后会捕获该控件的 OnMouseDown
事件并处理拖拽代码。
private void control_MouseDown(object sender, MouseEventArgs e)
{
if (!DesignMode && m_form!=null)
{
Control control = sender as Control;
ReleaseCapture(control.Handle);
int nul =0;
SendMessage(m_form.Handle, WM_SYSCOMMAND, MOUSE_MOVE, ref nul);
}
}
关注点
我将在下一次更新中尝试集成 Windows Forms 设计器功能。
历史
- 版本 1.0,2004-10-28。