【问题标题】:new window appears under main window新窗口出现在主窗口下
【发布时间】:2013-09-06 09:04:26
【问题描述】:

我正在使用 WPF 编写应用程序。我想要这样的动作:当我在一个按钮上按下鼠标按钮时,会出现另一个窗口,当我在任何地方释放鼠标按钮时,这个窗口就会隐藏。到目前为止,这是我的代码:

XAML:

<Button Margin="0,0,0,0" Name="button_wykres" PreviewMouseUp="button_wykres_PreviewMouseUp" PreviewMouseDown="button_wykres_PreviewMouseDown">

C#:

private void button_wykres_PreviewMouseDown(object sender, MouseButtonEventArgs e)
    {

        omww.Top = this.Top+50;
        omww.Left = this.Left +180;
        omww.Show();
    }

    private void button_wykres_PreviewMouseUp(object sender, MouseButtonEventArgs e)
    {
        omww.Hide();
    }

问题是新窗口 (omww) 出现在主窗口下方,但我需要它在顶部。当我尝试其他事件时,即 button.Click 窗口显示在旧的上方,正如我想要的那样,这让我感到困惑。但是,Click 事件不能满足我的需求。如果有人帮助我,我将不胜感激。

【问题讨论】:

  • 检查ShowActivatedproperty。或者调用Activate 方法。或者不要使用 Preview 事件。下一个问题似乎是您显示 wndow 并立即将其隐藏。
  • 为什么需要两个窗口,根据您的问题,用户将无法在 window2 (omww) 上执行任何操作,因为一旦用户释放鼠标按钮,它就会消失?
  • @nit,正确,这就是我需要的。
  • @RicoW 使用Popup 来显示您在Window 中显示的内容?如果您有另一个Window 并将其激活/聚焦以使其位于前面,它很可能会立即在第一个窗口上触发PreviewMouseUp,因此您最终看到的只是闪烁。使用弹出窗口,您应该能够很好地满足您的要求。
  • @RicoW 如果您想坚持自己的想法,请尝试在您的PreviewMouseDown 事件中将omww.Topmost = true; 设置在omww.Show(); 之后

标签: c# wpf


【解决方案1】:

在我看来,您有两种可能的选择来让子 Window 出现在父 Window 之上。第一个是@Viv 在评论中提到的,即将子WindowTopMost 属性设置为true

omww.Topmost = true;

第二种选择是将子WindowOwner 属性设置为父Window(如果它们之间存在直接关系):

omww.Owner = this; // if called from the parent Window code behind

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    • 2012-11-19
    • 1970-01-01
    相关资源
    最近更新 更多