标签: dialogresult

如何创建一个带有"是","否"选项和DialogResult的消息框?

我想简单的是/否选择MessageBox,但我认为为此设计一个表单是无稽之谈.我以为我可以使用MessageBox,添加按钮等来实现这一目标.这很简单,但由于没有返回DialogResult,我该如何检索结果?

c# dialogresult winforms

334
推荐指数
9
解决办法
74万
查看次数

无法在WPF中设置DialogResult

我在调用窗口中使用ShowDialog()显示一个WPF窗口.窗口打开,按预期模态.但是,在我的确定和取消按钮的对话窗口中的单击事件中,我分别设置了this.DialogResult = true(或false),并且未设置该值.窗口按预期关闭,但DialogResult仍为null.

这是WPF中的错误吗?或者是否有原因无法设置DialogResult属性但不会抛出异常?该窗口未托管在浏览器中.

调用窗口中的代码:

Window2 win = new Window2();
bool? result = win.ShowDialog();
if (result.HasValue && result.Value) {
   //never gets here because result is always null
}
Run Code Online (Sandbox Code Playgroud)

对话框窗口中的代码:

this.DialogResult = true;
Run Code Online (Sandbox Code Playgroud)

c# wpf modal-dialog dialogresult

29
推荐指数
3
解决办法
6万
查看次数

正确使用DialogResult

在回答我最近的一个问题(这里)时,汉斯帕斯特说我应该设置DialogResult关闭我的表格而不是form.Close()我似乎无法找出原因?

如果我已经正确阅读,MSDN文档说明这样做只会隐藏表单而不是正确处理它我认为.Close()这样做?

从文档中提取.

当用户单击对话框的"关闭"按钮或设置DialogResult属性的值时,不会自动调用Close方法.相反,表单是隐藏的,可以再次显示,而无需创建对话框的新实例.由于此行为,您必须在应用程序不再需要表单时调用表单的Dispose方法.

另一方面,Microsoft创建了一个支持页面,其中说明了如何使用DialogResult属性,并在其"验证它工作"部分中声明单击这样将关闭表单.

所以我的问题是双重的,我应该继续使用Close或DialogResult; 并且对话框结果关闭或隐藏表单.从我下面的代码(一个带有两个按钮的简单表单),看起来它确实只是作为一个断点点this.Close()被隐藏...(this.Close()注释,表单仍然消失,只是不确定是否隐藏)

    public Form1()
    {
        InitializeComponent();
        button1.Click += (s, e) =>
            {
                 //I edited my question to include using
                using(Form1 form = new Form1())
                {
                    form.ShowDialog();
                }

            };
        button2.Click += (s, e) => 
            {
                this.DialogResult = DialogResult.OK;
                this.Close();
            };
    }
Run Code Online (Sandbox Code Playgroud)

c# dialogresult winforms

27
推荐指数
2
解决办法
7万
查看次数

为什么DialogResult在WPF中是一个可以为空的bool?

任何人都可以想到一个很好的解释,因为对话的结果是WPF中可以为空的bool吗?这一直困扰着我.在WinForms中它是一个枚举类型,这对我来说更有意义.

.net wpf api-design dialogresult

18
推荐指数
2
解决办法
8290
查看次数


是否可以为表单重载ShowDialog方法并返回不同的结果?

编辑:这个方法实际上很好,我问它后来找到了解决方案.我在重载的ShowDialog()方法中添加了正确的调用(它不是一个过载,甚至是重写,但它的工作原理是一样的.我的新问题是底部的问题.

我有一个表单,您可以在其中单击三个按钮之一.我已经为返回的结果定义了一个枚举.我想打电话:

MyFormResults res = MyForm.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

我可以使用以下代码添加一个新的ShowDialog方法:

public new MyFormResults ShowDialog()
{
    //Show modal dialog
    base.ShowDialog(); //This works and somehow I missed this

    return  myResult; //Form level variable (read on)
}
Run Code Online (Sandbox Code Playgroud)

单击按钮时,我为结果设置了一个表单级变量:

MyFormResults myResult;

private void btn1_click(object sender, EventArgs e)
{
    myResult = MyFormsResults.Result1;
    this.DialogResult = DialogResult.OK; //Do I need this for the original ShowDialog() call?
    this.Close(); //Should I close the dialog here or in my new ShowDialog() function?
}

//Same as above for the other results
Run Code Online (Sandbox Code Playgroud)

我唯一缺少的是显示对话框(模态)的代码,然后返回我的结果.没有base.ShowDialog()功能,我该怎么做? …

c# overloading modal-dialog dialogresult

11
推荐指数
2
解决办法
2万
查看次数

不能使用DialogResult

我试图用DialogResult来检查MessageboxYesNoCancel.我正在使用以下代码,我没有看到任何问题:

DialogResult dlgResult = MessageBox.Show(
   "Save changes before closing?", 
   "Warning", 
   MessageBoxButton.YesNoCancel, 
   MessageBoxImage.Question);
Run Code Online (Sandbox Code Playgroud)

Visual Studio引发了我的错误说法

'System.Windows.Window.DialogResult'是'属性'但是像'类型'一样使用

c# wpf dialogresult

9
推荐指数
1
解决办法
1万
查看次数

DialogResult没有关闭表单?

我有一个表单Form1,我将其显示Form2为模态表单.从Form2我做各种编辑和删除不同的值集合,应该Form1在关闭后反映出来Form2.所以我做的就是RePopulateControls_in_Form1()关闭之后Form2.由于RePopulateControls_in_Form1()是一个漫长的过程,我只想在发生一些修改(编辑,添加,删除)Form2而不是Form2刚刚打开和关闭时执行该方法.

所以这就是我尝试做的事情Form1:

        Form2 f = new Form2();
        if (f.ShowDialog(this) == DialogResult.Something)
            RePopulateControls_in_Form1()
Run Code Online (Sandbox Code Playgroud)

然后在Form2中,

    private void bntEdit()
    {
        //If Edit?
        this.DialogResult = DialogResult.Something;
    }
    private void bntAdd()
    {
        //If Add?
        this.DialogResult = DialogResult.Something;
    }
    private void bntDelete()
    {
        //If Delete?
        this.DialogResult = DialogResult.Something;
    }
Run Code Online (Sandbox Code Playgroud)

但我的问题是.Something.如果它不是.None,Form2只需关闭.Form2除非用户关闭它,否则我不想简单地关闭它.

如果我这样做:

    //in Form1
    private void Form1_Click() …
Run Code Online (Sandbox Code Playgroud)

c# modal-dialog dialogresult winforms

6
推荐指数
1
解决办法
9539
查看次数

为什么ShowDialog总是返回DialogResult.Cancel?

我有一个自定义对话框winform.在它上面我有一个标签,文本框和2个按钮(确定和取消).它还声明并定义了用于传递不同参数列表的重载执行方法.

Dialog Winform的调用方式如下:

var theDialog := new InputMsgBox;

if theInputB.Execute('Awesome StackOverflow','Enter Text?',s,var s) = DialogResult.OK then
begin
  Invalidate;
  SetText(s);
end;
Run Code Online (Sandbox Code Playgroud)

Dialog Winform执行定义如下:

method InputMsgBox.Execute(Title, theMessage, defaultanswer:string;var thevalue:string): DialogResult;
begin
    result := DialogResult.Cancel;

    Requesttext.Text:=themessage;
    Requesttext.Enabled:=true;
    Requesttext.Visible:=true;
    InputTextBox.Text:=defaultanswer;
    InputTextBox.Enabled:=true;
    InputTextBox.Visible:=true;

    CancelBtn.Enabled:=true;
    CancelBtn.Visible:=true;
    Okbtn.Enabled:=true;
    Okbtn.Visible:=true;

    self.ShowDialog;
    Result := self.DialogResult;
    thevalue:=InputTextBox.Text;
end;
Run Code Online (Sandbox Code Playgroud)

当execute方法返回给调用者时,即使单击OKBtn,它也总是返回DialogResult.Cancel.

按钮的对话框相应地设置.

我在Dialog winform上设置了AcceptButton和CancelButton.

我无法弄清楚为什么showdialog方法总是返回DialogResult.Cancel.

更新完成一些测试后,我发现通过调用showdialog = DialogResult.Ok显示我的其他自定义对话框窗口工作正常.所以,我检查了它们两个以查看它们的属性设置是否存在一些差异,并且绝对没有区别.我不明白.提前致谢,

.net dialog return-value delphi-prism dialogresult

6
推荐指数
2
解决办法
5802
查看次数

在VB6中是否有类似DialogResult的对话框?

我有一个带有按钮的VB6表单,文本为"继续"和"取消".我想检查点击了哪一个.在C#中,每个表单都有一个对话框结果,我可以在退出表单之前根据单击的按钮进行设置.我在VB6中没有看到这一点.

是否有对话结果?如果不是,检查对话结果的最佳做法是什么?

vb6 dialogresult winforms

5
推荐指数
1
解决办法
4515
查看次数