如何从对话框中捕获选定的值?

时间:2011-01-10 20:18:21

标签: c# winforms dialog

我创建了一个FontDialog.cs Windows窗体,我的用户可以在其中为文本选择颜色。我需要捕获用户在对话框中选择的内容:

alt text

以下是我如何调用对话框:

DialogsTestingGrounds.FontDialog dialog = new FontDialog();
dialog.ShowDialog();

如何捕获选定的值,我想我必须在FontDialog.cs表单末端为我想要传输的所有内容创建属性,对吧?

3 个答案:

答案 0 :(得分:3)

您想要做的是在FontDialog上公开使值可用的属性。然后,您可以使用dialog.PropertyName通过属性的名称引用它。

答案 1 :(得分:2)

没有必要,你可以使用,即dialog.Font来获取所选的字体, dialog.Color的颜色等等......

答案 2 :(得分:1)

Mitchel的回答可行,但您可能希望在同一行中加入其他几个项目。

  • 拥有公共财产(根据Mitchel的 回答)。
  • 拥有一个公共构造函数 形式与属性的类型 一个参数,所以你可以传入值 问题(这将允许您使用旧选择预填充对话框。)
  • 将您的通话环绕对话 检查对话结果,以便你 仅在用户更改值 想要。 (注意WPF中的处理方法不同)
  • 菲利斯对你也是对的 真的不需要创建新的 字体对话框,如果你唯一的事情 关心的是字体。有一个 在.Net中内置字体对话框 http://msdn.microsoft.com/en-us/library/system.windows.forms.fontdialog%28v=vs.71%29.aspx

因此,对话框类的内部可能看起来像这个伪代码。

    public Font SelectedFont { get; set; }
    public FontDialog()
    {
       //set your defaults here
    }

    public FontDialog (Font font)
    {
       SelectedFont = font;
       //dont forget to set the passed in font to your ui values here
    }

    private void acceptButton_Click(object sender, EventArgs e)
    {
        SelectedFont = //How ever you create your font object;
    }

然后调用你的函数(假设上面的acceptButton是表单AcceptButton)

DialogsTestingGrounds.FontDialog dialog = new FontDialog();
if(dialog.ShowDialog() == DialogResult.OK)
     //Do Something