很多朋友在设置好打印纸张,再次启动软件后打印设置又恢复为默认值。希望能把默认设置改为修改后的,再次启动软件后还能保持上次的纸张设置,在这里我给出了完整的解决方案,如果有朋友能有更好的解决方案希望不吝赐教。下面是代码:
/// <summary>
/// 读取指定名称的注册表的值
/// </summary>
/// <param name="name">注册表值</param>
/// <returns></returns>
private string GetRegistData(string name)
{
string registData;
RegistryKey hkml = Registry.LocalMachine;
RegistryKey software = hkml.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.OpenSubKey("打印设置", true);
registData = aimdir.GetValue(name).ToString();
return registData;
}
/// <summary>
/// 注册表中写数据
/// </summary>
/// <param name="name">注册表</param>
/// <param name="tovalue">值</param>
private void WTRegedit(string name, string tovalue)
{
RegistryKey hklm = Registry.LocalMachine;
RegistryKey software = hklm.OpenSubKey("SOFTWARE", true);
RegistryKey aimdir = software.CreateSubKey("打印设置");
aimdir.SetValue(name, tovalue);
}
/// <summary>
/// 打印设置,在打印前调用此函数即可
/// </summary>
/// <param name="bShowPrintSet">是否显示打印设置</param>
private void PrintSettingsEx(bool bShowPrintSet = false)
{
string strTemp =GetRegistData("默认纸张"); //这句是获取上次记录的纸张值
if (strTemp != null)
{
try
{
int iRawKind = Convert.ToInt32(strTemp);
foreach (PaperSize ps in printDocument.PrinterSettings.PaperSizes)
{
if (ps.RawKind == iRawKind)
{
printDocument.DefaultPageSettings.PaperSize = ps;
break;
}
}
}
catch (Exception ex)
{ }
}
if (bShowPrintSet && DialogResult.OK == printDialog.ShowDialog())
{
WTRegedit("默认纸张", printDocument.DefaultPageSettings.PaperSize.RawKind.ToString()); //这句是保存纸张值,以便下次打印时恢复,此处保存在注册表
}
}