Ответ Митчела сработает, но вы, возможно, захотите включить пару других элементов в одну и ту же строку.
- Иметь публичную собственность (согласно ответу Митчела).
- Иметь публичнуюконструктор в форме с типом свойства в качестве аргумента, так что вы можете передать значение, о котором идет речь (это позволит вам предварительно заполнить диалоговое окно старым выделением).
- Окружите ваш вызов диалоговым окном с помощьюпроверьте для dialogresult, так что вы можете изменить значение только тогда, когда пользователь хочет.(обратите внимание, что процесс в 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