gpt4 book ai didi

c# - 捕捉/粘性 WPF 窗口

转载 作者:可可西里 更新时间:2023-11-01 03:10:42 24 4
gpt4 key购买 nike

我正在寻找向现有 WPF 应用程序添加捕捉/粘性窗口功能(类似 winamp)的解决方案。和被问到的一样here ,只是我需要它用于 WPF。

它不一定要有停靠功能,只要有可能就可以捕捉到同一应用程序内其他窗口的边框和屏幕边缘(包括任务栏)。最好是开源解决方案。

谢谢

最佳答案

这是您实际要求的解决方案:

假设我们有 2 个名为 MainWindow Window2 的 Xaml 窗口:

MainWindow:

 Window2 windows2;

public void RealodPos()
{
if (windows2 == null) { windows2 = new Window2(this); this.Top = 300; }

windows2.Top = this.Top;
windows2.Left = this.Width + this.Left - 15;
windows2.Show();

}

private void Window_Activated(object sender, EventArgs e)
{
RealodPos();
}

private void SizeChenged(object sender, SizeChangedEventArgs e)
{
RealodPos();
}

private void LocationChange(object sender, EventArgs e)
{
RealodPos();
}

Window2:

   public partial class Window2 : Window
{

MainWindow Firstwin;
public Window2(MainWindow FirstWindow)
{
InitializeComponent();
Firstwin = FirstWindow;
}
void RealodPos()
{
this.Top = Firstwin.Top;
this.Left = Firstwin.Width + Firstwin.Left - 15;
}

private void Window_Activated(object sender, EventArgs e)
{
RealodPos();
}

private void Window_LocationChanged(object sender, EventArgs e)
{
RealodPos();
}

private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
RealodPos();
}
}

Result:

我作为软件工程师的建议:

提示 1:我不知道您将在何处使用它,但最好将其转换为可重用的组件,而不是仅使用 2 个窗口进行硬编码。

提示 2:转换

public Window2(MainWindow FirstWindow)

MainWindow 参数到 Window 类共振峰,以具有更灵活的指针,以便在其他应用程序中重用它。

这是我为支持 WPF 的开发人员建议的解决方案:

您可以在 XAML 上制作您自己的自定义窗口,并使用 UserControls 代替您需要的其他窗口,而不是以这种方式执行此操作。

感谢阅读,如果您还需要其他任何东西或者您是否需要代码作为项目文件,请问我。

关于c# - 捕捉/粘性 WPF 窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1028024/

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