Tag: modal dialog

WPF模式进度窗口

如果这个问题得到了很多次回答,我很抱歉,但我似乎无法找到适合我的答案。 我想创建一个模态窗口,在我的应用程序执行长时间运行的任务时显示各种进度消息。 这些任务在一个单独的线程上运行,我可以在进程的不同阶段更新进度窗口上的文本。 跨线程通信都很好地工作。 问题是我不能让窗口只在其他应用程序窗口(不是计算机上的每个应用程序)之上,保持在最顶层,阻止与父窗口的交互,并仍然允许工作继续。 这是我到目前为止所尝试的内容: 首先,我的启动窗口是一个自定义类,它扩展了Window类,并具有更新消息框的方法。 我在早期创建了一个新的splash类实例,并根据需要显示/隐藏它。 在最简单的情况下,我实例化窗口并在其上调用.Show() : //from inside my secondary thread this._splash.Dispatcher.Invoke(new Action(() => this._splash.Show()); //Do things //update splash text //Do more things //close the splash when done this._splash.Dispatcher.Invoke(new Action(() => this._splash.Hide()); 这会正确显示窗口并继续运行我的代码来处理初始化任务,但它允许我单击父窗口并将其带到前面。 接下来我尝试禁用主窗口并在以后重新启用: Application.Current.Dispatcher.Invoke(new Action(() => this.MainWindow.IsEnabled = false)); //show splash, do things, etc Application.Current.Dispatcher.Invoke(new Action(() => this.MainWindow.IsEnabled = true)); […]

在窗口中关闭一个带有自定义关闭按钮的kendoui窗口

我正在使用Kendo UI的窗口组件,它类似于任何modal dialog。 我有一个关闭按钮,如何在单击该按钮时关闭窗口(而不是单击标题栏中的默认“x”按钮) 我的窗口中的内容是从另一个视图加载的 @(Html.Kendo().Window() .Name(“window”) .Title(“Role”) .Content(“loading…”) .LoadContentFrom(“Create”, “RolesPermissions”, Model.Role) .Modal(true) .Width(550) .Height(300) .Draggable() .Visible(false) ) 在同一个观点中,我有 Cancel 这是我在主视图中的内容(调用窗口的视图) $(document).ready(function () { var window = $(“#window”).data(“kendoWindow”); $(“#open”).click(function (e) { window.center(); window.open(); }); $(“#close”).click(function(e) { window.close(); }); });

.Owner属性和ShowDialog(IWin32Window所有者)之间的区别?

我假设可以通过.Owner属性显式设置winform的所有者,或者通过在重载方法ShowDialog中传递所有者(IWin32Window所有者) 我无法理解为什么这些方法在使用MDI表单时表现出不同的行为。 我创建了一个MDIParent和一个MDIChild。 我还有一个简单的winform MyDialogBox,可以在加载时显示其所有者。 MessageBox.Show(“Dialog’s owner is ” + this.Owner.Name); 方法A – 在MDIChild的加载中我有以下代码,这导致MyDialogBox的所有者被设置为MDIChild MyDialogBox box = new MyDialogBox(); box.Owner = this; // Set owner as MDIChild box.ShowDialog(); 方法B – 或者,在MDIChild的加载方法中,我有以下代码,它导致MyDialogBox的所有者被设置为MDIParent MyDialogBox box = new MyDialogBox(); box.ShowDialog(this); // Pass MyMDIChild as owner 我也在这里阅读以下内容 只有MDI父窗体可以拥有另一个窗体,无论是MDI子窗口,模式对话框还是将父窗口设置为所有者参数的窗体。 如果是这样,方法A根本不起作用,不是吗? 我错过了什么? 为什么方法B没有将所有者设置为MDIChild?

WPF和棱镜视图叠加

我需要一些帮助,使用棱镜框架覆盖视图。它比这更复杂,所以让我解释一下。我也可能过度思考这个:D 我有shell(wpf窗口),我在模块中有2个视图(A和B – 两个用户控件)。 当shell加载时,它加载视图A.在视图A上我有一个按钮,用于“弹出”视图B以进行某些用户输入。 所以我自然会想到某种模态窗口/控件,甚至可能是一个弹出窗口。 然而我面对弹出窗口的问题是,当我移动shell时,弹出窗口仍然是固定的,它不会阻止视图A中的事件。我已经尝试禁用视图A来停止被触发的事件,我也尝试使用一个来获取视图B随shell移动。 只有canvas可以工作,但我现在需要一种方法来阻止它’。 无论如何,我可以用棱镜将视图覆盖在另一个视图的顶部吗? 或者其他人如何用prism和wpf创建模态弹出窗口? 任何建议或指示将不胜感激。

单击“提交”按钮时,我的ASPX文件中的第二个模态不会发布

我有一个ASPX文件,包含两个模态(myModal和addModal)和一个gridview,其中有按钮调用这些模式。 我在打开并单击其提交按钮时遇到第二个模式的问题,因为它不会触发PostBack。 它只是第二个问题。 如果我在ASPX文件中更改这些Modals的顺序,那么我再次遇到麻烦只有文件中的第二个。 当在同一个ASPX页面中有两个模态来触发PostBack时,还需要一些额外的东西吗? 这是ASPX和C#文件: C#文件: protected void Page_Load(object sender, EventArgs e) { try{ if (IsPostBack) { Control control = null; string controlName = Request.Params[“__EVENTTARGET”]; if (!String.IsNullOrEmpty(controlName)) { control = FindControl(controlName); GridViewRow gvRow1 = (GridViewRow)control.Parent.Parent; string controlID = control.ID.ToString(); } } if(!IsPostBack) { DataGrid_Load(DAL.reg(HeadText.Text, OrgText.Text), “reg”); ErrorText.Text = “NO POSTBACK”; } } catch{} } […]

在.NET中是否有相当于Mac OS X Document的模式表?

我的应用程序越来越多地要求让某些对话框的行为类似于Mac OS X Document模式表function,其中对话框只是父控件/对话框的模态,而不是整个应用程序(参见http:// en。 wikipedia.org/wiki/Window_dialog )。 当前的窗口ShowDialog()不足以满足我的应用程序的需要,因为我需要在应用程序中将对话框设置为模态到另一个对话框,但仍然允许用户访问应用程序的其他区域。 在C#.NET中是否有与Document modal Sheet相同的function? 或者甚至是某个人做过的密切实施,还是我自己尝试实现这个function? 我试着搜索Google和SO无济于事。 谢谢, 凯尔

回到上一个表格(c#)

我知道如何在模态模式下转到另一种forms,就像我在下面所做的那样: public partial class Form1 : Form { public Form1() { InitializeComponent(); } Form2 myNewForm = new Form2(); private void button1_Click(object sender, EventArgs e) { this.Hide(); myNewForm.ShowDialog(); } } 这是我的第二种forms,我该如何回到之前的表格? public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void Form2_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs […]

现有应用程序的重新非模态forms

我希望能够在现有的应用程序中显示非模态表单。 目前我可以这样做: myform.ShowDialog(handleToApp); 但是这将创建一个模式forms的应用程序和我正在寻找的东西不是模态的,所以当表单失去焦点时,它不会破坏控制流程并且纠缠用户不被关闭。 有谁知道如何或我是否可以做我正在寻找的东西?

在C#Winform上使用Show Dialog时非常奇怪的错误

我在VS Studio 2008 Express Edition中创建了2个表单,并在main program.cs文件中使用public static声明它们 我只是想用ShowDialog和Close在两个表单之间切换,但是当试图关闭第二个表单并再次使用showdialog打开第一个表单时,它表示当表单已经可见时我不能使用showDialog,而事实并非如此在显示第二个表格之前关闭它。 它让我在使用showdialog之前将form visible属性设置为false,所以我做到了 internal static void CloseSecondForm(FirstForm FirstForm) { FirstForm .Close(); SecondForm.Visible = false; SecondForm.ShowDialog(); } 但后来它说我不能使用ShowDialog,因为表格已经在对话模式中显示,我必须关闭它。 所以我做了它所要求的 internal static void CloseSecondForm(FirstForm FirstForm) { FirstForm .Close(); SecondForm.Visible = false; SecondForm.Close(); SecondForm.ShowDialog(); } 但它仍然假装已经使用ShowDialog打开了表单! 这是我的编程或Winform中的Bug吗? 更新:这是我在第5个答案中发布的整个代码(我想使用showdialog而不是show,因为我可能在后台有第3个表单,我不希望用户访问): [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 = new Form1(); Form2 = […]

如果进程要求用户输入,请以编程方式查找

我如何以编程方式(在C#中)确定,如果另外一个外部应用程序(本机,java,.NET或其他……)当前要求用户输入? 这可以在托管代码中完全完成吗? 我正在寻找的是: static Boolean IsWaitingForUserInput(String processName) { ??? } 通过要求用户输入我的意思是当应用程序要求用户输入一些数据或退出错误消息(modal dialog)并且不再能够执行其正常任务时。 正在等待用户绘制内容的绘图应用程序不在此处。 PS:经过编辑以反映底部的评论并使关注更加清晰,一些评论和答案可能与问题不完全一致。 在评估答案和评论时要考虑到这一点。