C# Windows窗体单击和拖动受到标签的阻碍
我有一张表格。我可以在窗体运行时通过单击它并将窗口拖动到某个位置来移动它 我将标签添加到此表单中,单击标签并拖动不会移动窗口C# Windows窗体单击和拖动受到标签的阻碍,c#,winforms,C#,Winforms,我有一张表格。我可以在窗体运行时通过单击它并将窗口拖动到某个位置来移动它 我将标签添加到此表单中,单击标签并拖动不会移动窗口 如何使它这样做?由于不能用绘制方法替换标签,请尝试在窗体的构造函数中为调用窗体的MouseMove方法的每个标签添加事件处理程序(我假设您有移动窗体的代码): public Form1(){ 初始化组件(); foreach(this.Controls.OfType()中的标签l){ l、 MouseMove+=(发送方,e)=>{Form1_MouseMove(l,e)
如何使它这样做?由于不能用绘制方法替换标签,请尝试在窗体的构造函数中为调用窗体的MouseMove方法的每个标签添加事件处理程序(我假设您有移动窗体的代码):
public Form1(){
初始化组件();
foreach(this.Controls.OfType()中的标签l){
l、 MouseMove+=(发送方,e)=>{Form1_MouseMove(l,e);};
}
}
在表单的OnPaint覆盖中绘制文本并删除标签。这会起作用,但对于我正在进行的工作来说是不可行的。我正在寻找一种方法让我保留标签。如果你需要帮助,你必须解释为什么这是不可行的。你有点精明。。。我想我的解释很清楚。如果要通过单击和拖动移动windows窗体,并且单击的位置有标签,则窗口将不会移动。我正在寻找标签如此重要的原因。我尝试使用PostMessage和Spy++复制单击和拖动时出现的消息,我没能让它工作。最后,我用了你想法的一半,将所有标签设置为Visible=false(这不会改变我表单的布局,并允许标签保持其样式和其他设置),然后从标签中获取所有样式信息,以便在OnPaint中绘制它们。@prw56您必须在问题中显示移动表单的代码。不需要PostMessage或将内容设置为不可见等。
public Form1() {
InitializeComponent();
foreach (Label l in this.Controls.OfType<Label>()) {
l.MouseMove += (sender, e) => { Form1_MouseMove(l, e); };
}
}