首页 > 解决方案 > C# 使用 ShowDialog 方法显示另一个表单时保持表单可拖动

问题描述

我有三个项目(proj1、proj2、pro3)。proj1(winforms)是我集成其他项目的地方。proj2(在 wpf 中,我认为对这个问题并不重要)有一个类似于通知菜单的窗口,我希望它始终位于顶部并且可以拖动。proj3(也是wpf)有一些与所有者关系的窗口。

项目1:

public FormGeral()
{
    InitializeComponent();
    StartMenu();
}

private void StartMenu()
{
    var wpfwindow = new Proj2.WindowController(this.pProperties, true);
    ElementHost.EnableModelessKeyboardInterop(wpfwindow);
    wpfwindow.Closed += wpfwindow_Closed;
    this.Activate();
}

private void buttonX_Click(object sender, EventArgs e)
{
   var wpfwindow = new Proj3.WindowInvoices(this.pProperties);
   ElementHost.EnableModelessKeyboardInterop(wpfwindow);
   wpfwindow.Show();
   wpfwindow.Closed += wpfwindow_Closed;
 }

在 proj3 中,WindowInvoices 有一个这样的按钮:

private void ButtonAddInvoice_Click(object sender, RoutedEventArgs e)
        {
            WindowAddEditInvoice window = new WindowAddEditInvoice(this.PProperties, idModulo, null, true, null);
            window.Owner = this;
            window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;
            window.ShowDialog();
        }

当我第一次单击在 Proj3 上打开 WindowInvoices 时,Proj2 上的菜单运行良好,位于顶部且可拖动。但是当我在 Proj3 上打开 WindowAddEditInvoice 时,Proj2 上的菜单窗口不可拖动。注意使用 Show 或 ShowDialog 方法。

实现此行为的最佳方法是什么?

标签: c#wpfwinforms

解决方案


推荐阅读