✨ VS分辨率设置
一、新建窗体 Form2
解决方案右键 → 添加 → Windows 窗体,命名 Form2
在 Form2 拖入对应控件,对应关系不变:
| 控件名称 | 控件类型 | 显示文字 |
|---|---|---|
| radioRes1 | RadioButton | 800×600 |
| radioRes2 | RadioButton | 1024×768 |
| radioRes3 | RadioButton | 1280×1024 |
| chkWindow | CheckBox | 窗口化运行 |
| chkSound | CheckBox | 游戏音乐 |
| chkMusic | CheckBox | 背景音乐 |
| txtAccount | TextBox | (空白,上方 Label 写:默认账号) |
| btnSave | Button | 保存设置 |
| btnClose | Button | 关闭 |
2、替换完整 Form2.cs 代码
using System;
using Microsoft.Win32;
using System.Windows.Forms;
namespace 替换成你自己项目的命名空间
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
LoadAllSetting(); // 打开窗体自动读取注册表配置
}
#region 读取注册表所有配置
private void LoadAllSetting()
{
RegistryKey reg = Registry.CurrentUser.OpenSubKey(@"Software\Webzen\MU\Config", false);
if (reg == null)
{
// 注册表无配置,初始化默认值
radioRes1.Checked = true;
chkSound.Checked = true;
chkMusic.Checked = true;
chkWindow.Checked = false;
txtAccount.Text = "";
return;
}
// 读取分辨率
int res = Convert.ToInt32(reg.GetValue("Resolution", 1));
switch (res)
{
case 1: radioRes1.Checked = true; break;
case 2: radioRes2.Checked = true; break;
case 3: radioRes3.Checked = true; break;
default: radioRes1.Checked = true; break;
}
// 音效、音乐、窗口模式
chkSound.Checked = Convert.ToInt32(reg.GetValue("SoundOnOff", 1)) == 1;
chkMusic.Checked = Convert.ToInt32(reg.GetValue("MusicOnOFF", 1)) == 1;
chkWindow.Checked = Convert.ToInt32(reg.GetValue("WindowMode", 0)) == 1;
// 账号
txtAccount.Text = reg.GetValue("ID", "").ToString();
reg.Close();
}
#endregion
#region 写入注册表通用方法
private void SaveReg(string keyName, object value)
{
try
{
RegistryKey reg = Registry.CurrentUser.CreateSubKey(@"Software\Webzen\MU\Config");
reg.SetValue(keyName, value);
reg.Close();
}
catch
{
}
}
#endregion
#region 分辨率单选事件(互斥)
private void radioRes1_CheckedChanged(object sender, EventArgs e)
{
if (radioRes1.Checked)
{
SaveReg("Resolution", 1);
radioRes2.Checked = false;
radioRes3.Checked = false;
}
}
private void radioRes2_CheckedChanged(object sender, EventArgs e)
{
if (radioRes2.Checked)
{
SaveReg("Resolution", 2);
radioRes1.Checked = false;
radioRes3.Checked = false;
}
}
private void radioRes3_CheckedChanged(object sender, EventArgs e)
{
if (radioRes3.Checked)
{
SaveReg("Resolution", 3);
radioRes1.Checked = false;
radioRes2.Checked = false;
}
}
#endregion
#region 勾选框事件
private void chkWindow_CheckedChanged(object sender, EventArgs e)
{
SaveReg("WindowMode", chkWindow.Checked ? 1 : 0);
}
private void chkSound_CheckedChanged(object sender, EventArgs e)
{
SaveReg("SoundOnOff", chkSound.Checked ? 1 : 0);
}
private void chkMusic_CheckedChanged(object sender, EventArgs e)
{
SaveReg("MusicOnOFF", chkMusic.Checked ? 1 : 0);
}
#endregion
// 保存按钮
private void btnSave_Click(object sender, EventArgs e)
{
SaveReg("ID", txtAccount.Text.Trim());
MessageBox.Show("配置保存成功");
this.Close();
}
// 关闭按钮
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
}
}
}三、绑定各个控件事件(必须绑定否则无效果)
打开 Form2 设计页面,选中控件,在闪电事件面板绑定:
radioRes1 → CheckedChanged → radioRes1_CheckedChanged
radioRes2 → CheckedChanged → radioRes2_CheckedChanged
radioRes3 → CheckedChanged → radioRes3_CheckedChanged
chkWindow → CheckedChanged → chkWindow_CheckedChanged
chkSound → CheckedChanged → chkSound_CheckedChanged
chkMusic → CheckedChanged → chkMusic_CheckedChanged
btnSave → Click → btnSave_Click
btnClose → Click → btnClose_Click
四、在主窗口 Form1 打开设置窗口 Form2
在主界面的「设置按钮」点击事件里写:
private void btnSetting_Click(object sender, EventArgs e)
{
Form2 frmSet = new Form2();
frmSet.StartPosition = FormStartPosition.CenterParent; //弹窗居中在主窗口
frmSet.ShowDialog(); //模态弹窗,必须关掉设置才能操作主界面
}
发布时间: