Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是通过Win表单中的Modal请求用户输入的最简单方法_C#_.net_Winforms - Fatal编程技术网

C# 什么';这是通过Win表单中的Modal请求用户输入的最简单方法

C# 什么';这是通过Win表单中的Modal请求用户输入的最简单方法,c#,.net,winforms,C#,.net,Winforms,实现允许输入和返回自定义值的模式(弹出式)MessageBox的最简单方法是什么。在我的例子中,一个字符串 也许我想得太多了,但我想我会问的。我计划创建一个新表单。添加一个标签、一个文本框、两个按钮。将文本框分配给属性,并从我的主表单调用该属性上的ShowDialog() 我是否仍能以这种方式访问属性,还是应该以某种方式返回值 这是一种体面的方式吗?除了将文本框作为属性公开之外,这听起来是一种体面的方式。您应该只需要公开TextBox.Text。关闭表单后,只要表单变量仍在主表单的作用域内,您仍

实现允许输入和返回自定义值的模式(弹出式)
MessageBox
的最简单方法是什么。在我的例子中,一个
字符串

也许我想得太多了,但我想我会问的。我计划创建一个新表单。添加一个
标签
、一个
文本框
、两个
按钮
。将
文本框
分配给
属性
,并从我的主
表单
调用该属性上的
ShowDialog()

我是否仍能以这种方式访问
属性
,还是应该以某种方式返回值


这是一种体面的方式吗?

除了将文本框作为属性公开之外,这听起来是一种体面的方式。您应该只需要公开TextBox.Text。

关闭表单后,只要表单变量仍在主表单的作用域内,您仍然可以访问表单的属性

你可以这样做:

    frmPrompt frm = new frmPrompt();

    if ( frm.ShowDialog() == DialogResult.OK )
    {
        string result = frm.SomeProperty
    }

是的,我确实这样做了,我制作了一个输入表格,里面完全包含了你所说的内容

让我们调用您的属性
InputValue

using (ModalInputForm inputForm = new ModalInputForm()) {
 if (inputForm.ShowDialog() == DialogResult.Ok) {
  _fieldToUse = inputForm.InputValue;
 }
}

不过,您可能需要寻找其他选项。如果可以避免,接口中的模态通常不是最佳解决方案。特别是要求输入单个值的模式对话框,闻起来更像是旧文本模式终端提示/输入对话框处理用户输入方式的残余。@Johannes Rossel:我同意,但我们并不总是设置自己的要求。;)因此,首先要将winforms转换为SQL。你有没有别的选择,我可能会被忽视?我不知道你的应用程序看起来怎么样;所以,不是。但通常这种模态输入对话框是一种有缺陷的交互模型的标志,可能需要更多的思考。Bu是的,如果有要求,可能没有太多的事情要做。这里需要using语句的可能副本来处理表单。是的,表单需要正确处理-将其包含在using语句中或使用frm.DISPLACE()手动处理。我真的认为这对所问的问题并不重要。你必须注意ShowDialog()的返回值。@nobugz这是非常有效的。编辑我的帖子。