gpt4 book ai didi

c# - 使 WPF 窗口可拖动,无论单击什么元素

转载 作者:IT王子 更新时间:2023-10-29 03:35:40 29 4
gpt4 key购买 nike

我的问题有两个,我希望 WPF 提供更简单的解决方案,而不是 WinForms 的标准解决方案(Christophe Geers 在我做出此澄清之前提供) .

首先,有没有办法在不捕获和处理鼠标单击+拖动事件的情况下使 Window 可拖动?我的意思是窗口可以通过标题栏拖动,但是如果我将一个窗口设置为没有窗口并且仍然希望能够拖动它,有没有办法以某种方式将事件重新定向到处理标题栏拖动的任何内容?

其次,有没有办法将事件处理程序应用于窗口中的所有元素?同样,无论用户单击+拖动哪个元素,都使窗口可拖动。显然无需手动将处理程序添加到每个元素。只在某个地方做一次?

最佳答案

当然,应用Window

的以下 MouseDown 事件
private void Window_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.ChangedButton == MouseButton.Left)
this.DragMove();
}

这将允许用户在单击/拖动任何控件时拖动窗口,除了吃掉 MouseDown 事件的控件 (e.Handled = true)

您可以使用 PreviewMouseDown 而不是 MouseDown,但是拖动事件占用了 Click 事件,因此您的窗口停止响应鼠标左键点击事件。如果您真的希望能够从任何控件中单击和拖动窗体,您可以使用 PreviewMouseDown,启动一个计时器来开始拖动操作,如果 MouseUp 事件在 X 毫秒内触发。

关于c# - 使 WPF 窗口可拖动,无论单击什么元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7417739/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com