Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows窗体单击和拖动受到标签的阻碍_C#_Winforms - Fatal编程技术网

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); };
  }
}