0

System.Windows.FormsではなくSystem.Windows.Controlsを使用する2つのウィンドウの基本システムがあり、そのうちの1つはFontDialogを作成するため、System.Windows.Formsを含める必要がありました。フォントダイアログ。他のウィンドウには、他のウィンドウのFontDialogで選択されたフォント/サイズ/スタイルを使用するRichTextBoxがあります。

これは、FontDialogを作成するウィンドウのクラスです。

public partial class Window1 : Window
{
    public FontDialog font;

    public Window1(String name)
    {
        InitializeComponent();
        this.textBox1.Text = name;
    }

    private void button2_Click(object sender, RoutedEventArgs e)
    {
        font = new FontDialog();
        font.ShowDialog();
    }
}

そして、ここでWindow1を呼び出し、そのフォントを使用してみます。

private void button2_Click(object sender, RoutedEventArgs e)
{
    Window1 a = new Window1(this.name);
    a.ShowDialog();

    var cvt = new FontConverter();
    string s = cvt.ConvertToString(a.font.Font);

    Console.Out.WriteLine("Value is: " + s);

    System.Windows.Media.FontFamily g = (System.Windows.Media.FontFamily) cvt.ConvertFromString(s);

    if (g != null)
    {
         this.textBox2.FontFamily = g;
    }
}

FontDialogで選択されたものを正確に出力しますが、「this.textBox2.FontFamily=g;」の行でクラッシュします。

Value is: Microsoft Sans Serif; 8,25pt
'_.NetworkingGT_Incrementer.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\WindowsBase.resources\v4.0_4.0.0.0_pt-BR_31bf3856ad364e35\WindowsBase.resources.dll'
A first chance exception of type 'System.ArgumentException' occurred in WindowsBase.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll
'_.NetworkingGT_Incrementer.vshost.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Xaml.resources\v4.0_4.0.0.0_pt-BR_b77a5c561934e089\System.Xaml.resources.dll'
A first chance exception of type 'System.Xaml.XamlObjectWriterException' occurred in System.Xaml.dll
A first chance exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll

An unhandled exception of type 'System.Windows.Markup.XamlParseException' occurred in PresentationFramework.dll
4

1 に答える 1

0

解決済み:

var cvt = new FontConverter();

string s = cvt.ConvertToString(a.font.Font);

Console.Out.WriteLine("Value is: " + s);

System.Windows.Media.FontFamily g = new System.Windows.Media.FontFamily(s);

Console.Out.WriteLine("Value is: " + g.ToString());

this.textBox2.FontFamily = g;

両方の出力は等しいです。

于 2013-02-01T05:21:37.837 に答える