開発環境:
Microsoft Visual Studio .NET 2002
Windows 2000 SP2
プロジェクトの新規作成にてC#プロジェクトのWindowsアプリケーションを選択。
Formは最初に作成されたFormが1つだけです。
目的:
フォントの情報をレジストリに保存し、次回起動時に復元したい。
不明点:
レジストリに作成されたキー情報を見ると下記のように登録されています。
[Font: Name=MS 明朝, Size=15.75, Units=3, GdiCharSet=128,
GdiVerticalFont=False]
これを読み出したときにFontクラスへ変換する方法がわかりません。
現在、処理は下記のようにしています。
private void RegistSetting( bool IsGetValue )
{
Microsoft.Win32.RegistryKey RegRoot, RegKey;
RegRoot = Microsoft.Win32.Registry.CurrentUser;
RegKey = RegRoot.CreateSubKey( Software\\Test\\TestPro1 );
if( IsGetValue )
{ //読み込み
strFont = (string)RegKey.GetValue( Font, lblTime.Font );
lblTime.Font = //どうやって変換するのか
}
else
{ //書き込み(ToString()メソッドが呼ばれている)
RegKey.SetValue( Font, lblTime.Font );
}
RegKey.Close();
RegRoot.Close();
}
System.Convertクラスを見つけましたが用途が異なるようです。
また、XmlConvertクラスなる物を見つけましたがこれもSystem.Convertと同じ
ような用途のようです。
よろしくお願いします。
自己レスです。
System.Drawing.FontConverterクラスを使用することで解決しました。
private void RegistSetting( bool IsGetValue )
{
Microsoft.Win32.RegistryKey RegRoot, RegKey;
System.Drawing.FontConverter FontCnv;
RegRoot = Microsoft.Win32.Registry.CurrentUser;
RegKey = RegRoot.CreateSubKey( Software\\T&TSoft\\Clock );
FontCnv = new System.Drawing.FontConverter();
if( IsGetValue )
{
string strFont;
strFont = (string)RegKey.GetValue( Font, (object)
FontCnv.ConvertToString( lblTime.Font ) );
lblTime.Font = (System.Drawing.Font)FontCnv.ConvertFromString(
strFont );
}
else
{
RegKey.SetValue( Font, (object)FontCnv.ConvertToString(
lblTime.Font ) );
}
RegKey.Close();
RegRoot.Close();
}