showdialog wpf 如何关闭_WPF用ShowDialog()弹出窗体时控制该窗体的显示位置,并传值回父窗体...

司徒胤
2023-12-01

原文:http://blog.csdn.net/kiss0622/article/details/5852153

方法一:

1.父窗口代码

Window1.xaml.cs

private void Button_Click(object sender, RoutedEventArgs e)

{

Window2 w2 = new Window2(this.Top, this.Left);//this.Top,this.Left 作用是将当前父窗体的位置传给子窗体

if (w2.ShowDialog()==true)

{

text1.Text = w2.name;

}

}

}

2.子窗口代码

Window2.xaml.cs

public string name;

public Window2(double x,double y)

{

InitializeComponent();

//启用‘Manual’属性后,可以手动设置窗体的显示位置

this.WindowStartupLocation = WindowStartupLocation.Manual;

this.Top = x;

this.Left = y;

//如需手动绑定事件,如下

this.but1.AddHandler(Button.ClickEvent,new RoutedEventHandler(OkButton_Click));

}

private void but1_Click(object sender, RoutedEventArgs e)

{

name = "hlr";

this.DialogResult = true;//必须设置,否则无法回传

}

如果使用MVVM,当前按钮有command事件,并且command中有判断条件,这里应该相应的做修改,示例如下:

选中DataGrid某行,才允许继续往下执行,即执行父窗口的if (w2.ShowDialog()==true){}内的代码,否则,没选中也执行

var item = this.DataGrid.SelectedItem;

if (item != null)

{

this.DialogResult = true;

}

方法二:使用事件(MVVM下)

场景:通过命令,调出查询窗口,将选中项数据传回

父窗口的VM

#region 信息检索命令

private RelayCommand _SearchCommand;

public RelayCommand SearchCommand

{

get

{

return _SearchCommand

?? (_SearchCommand = new RelayCommand(ExecuteSearchCommand));

}

}

///

/// 检索命令逻辑

///

///

private void ExecuteSearchCommand(object obj)//object obj

{

AddDialog v = new AddDialog();

v.Closed+=v_Closed;

v.ShowDialog();

}

private void v_Closed(object sender, EventArgs e)

{

var frm = (AddDialog)sender;

var item = (ModelAdd)frm.DataGrid.SelectedItem;

if (item != null)

{

var id = item.ID;

}

}

#endregion

存在的隐患:

只要窗口关闭,都会执行v_Closed

场景示例:选中DataGrid某行,点击确认按钮,确认事件中通过一定的判断规则,符合条件则执行v_Closed

可能隐患:用户选中DataGrid某行,但是点击了取消按钮,并无验证“确认事件”中的判断规则,执行v_Closed导致出错

解决:设置共有变量进行状态控制;在v_Closed中设置相应的判断(不推荐,如产生变更可能因忘记修改导致不同步,除非是特简单的条件);

ShowDialog()弹出的窗体,关闭后,主窗体会闪烁的BUG

如图,要实现下列等待界面时,等待界面是以ShowDialog弹出的,发现关闭后,主窗体会闪烁一下的BUG,搞半天没搞明白啥原因. 过了几天后,搜索了下发现,在fm.ShowDialog(),显示出来时 ...

解决IOS safari在input focus弹出输入法时不支持position fixed的问题

该文章为转载 我们在做移动web应用的时候,常常习惯于使用position:fixed把一个input框作为提问或者搜索框固定在页面底部.但在IOS的safari和webview中,对position ...

设置电脑中的某个程序不弹出UAC用户控制提示的方法

有用户发现在电脑开机后总是会弹出UAC用户账户控制窗口,这是因为电脑中的某个程序设置了开机启动,这样就会在开机后启动该程序时出现UAC提示.如果想要省略该提示,可以在电脑中设置该程序不弹出UAC用户控 ...

WPF WebBrowser屏蔽弹出alert ,confirm ,prompt ,showModalDialog() ,window.open()

WPF WebBrowser屏蔽弹出alert ,confirm ,prompt ,showModalDialog() ,window.open()添加Microsoft.mshtml.dll,然后写 ...

win7如何设置某个软件不弹出用户账户控制

手动修改注册表: 在 HKEY_CURRENT_USERS\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers 键下面 ...

Ipad弹出UIAlertControllerStyleActionSheet时发生崩溃

pad弹出UIAlertControllerStyleActionSheet时,在iphone上运行正常,但在ipad上崩溃,解决代码如下: UIAlertController *alertVc = ...

在子页面使用layer弹出层时只显示遮罩层,不显示弹出框问题

最近子页面使用layer弹出层时只显示遮罩层,不显示弹出框,这个问题搞了很久,最后才发现,在子页面上使用弹出框时,如果只使用layer.alert()或者layer.open()时,会默认在当前页面弹 ...

JQuery弹出菜单时禁止页面(body)滚动

最近在做手机端的弹出菜单,但是菜单弹出来后滑动手机屏幕的话页面滚动总是会将菜单滑上去,体验非常不好,所以查了一下弹出菜单时禁止页面滚动的方法,整理如下: 方法一:弹出菜单时给body和html添加一个 ...

MUI - 解决弹出输入法时页面高度变小导致底部上浮的问题

解决弹出输入法时页面高度变小导致底部上浮的问题 在有输入框的页面,当输入法弹出的时候,底部元素上浮遮盖了输入框,影响页面美观及功能.查找了一下,页面变窄是不可避免的.即使是设置绝对固定也是不可以的.因 ...

随机推荐

javascript运动系列第三篇——曲线运动

× 目录 [1]圆周运动[2]三维圆周 [3]钟摆运动 [4]抛物线[5]流体运动 前面的话 上一篇介绍了变速运动,但只实现了直线运动.如果元素的left和top同时运动,并遵循不同的曲线公式,则会进 ...

iOS开发——面试总结(一)

面试总结(一) 通过网络搜寻和自己总结经历找了一些IOS面试经常被问道的问题: 1.搞清楚touch事件的传递(事件的响应链) 事件的响应(responder chain) 只有继承了UIRespon ...

校友信息管理系统&SNS互动平台之用户需求及概要设计

前言.提纲及说明: 请移步:(博客园地址:http://www.cnblogs.com/s6cn/p/3516876.html) ...

windows驱动开发推荐书籍

[作者] 猪头三 个人网站 :http://www.x86asm.com/ [序言] 很多人都对驱动开发有兴趣,但往往找不到正确的学习方式.当然这跟驱动开发的本土化资料少有关系.大多学的驱动开发资料都 ...

修改vue element Transfer 穿梭框里内容区的宽度

python 垃圾回收

# 垃圾回收 # 小整数对象池 # a = 100# python对小整数的定义是[-5,257],这些证书对象是提前创建好的,不会被垃圾回收,再一个python的程序中,所有位于这个范围内的正式使用 ...

基于ELK的简单数据分析

原文链接: http://www.open-open.com/lib/view/open1455673846058.html 环境 CentOS 6.5 64位 JDK 1.8.0_20 Elasti ...

Beta阶段贡献分配规则

作业要求[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2382] 在新成员加入后,我们经过讨论,决定沿用alpha阶段贡献分分配规则. ...

机器人控制tcp通信参数调优

机器人使用WiFi通信,实现指令下传,状态上传.而WiFi信道平时带宽较稳定,但会在某些时候突然中断,造成ping的延时较高,但可以马上恢复.如果一直ping,则一般情况下ping值很小,但长时间(数 ...

3,Python常用库之三:Matplotlib

一.Matplotlib基础知识 Matplotlib中的基本图表包括的元素 x轴和y轴 axis水平和垂直的轴线 x轴和y轴刻度 tick刻度标示坐标轴的分隔,包括最小刻度和最大刻度 x轴和y轴刻度 ...

 类似资料: