feat: 完善个人设置及表格功能

This commit is contained in:
cyf
2026-08-31 18:03:47 +08:00
parent 769aa52241
commit c1d10f22f5
11 changed files with 1033 additions and 88 deletions
+171
View File
@@ -0,0 +1,171 @@
using System.Drawing;
using System.Windows.Forms;
namespace Lskj.Main
{
partial class FrmPersonalSetting
{
private System.ComponentModel.IContainer components;
private Panel pnlHeader, pnlNavigation, pnlContent, pnlAppearance, pnlFonts;
private Button navAppearance, navFonts, btnSave, btnCancel, btnReset;
private TextBox txtTopColor, txtLeftColor, txtLeftSelectColor;
private Panel pnlTopPreview, pnlLeftPreview, pnlLeftSelectPreview;
private Button btnTopColor, btnLeftColor, btnLeftSelectColor;
private NumericUpDown numTopFont, numLeftFont;
protected override void Dispose(bool disposing)
{
if (disposing && components != null) components.Dispose();
base.Dispose(disposing);
}
// Keep this method limited to straightforward assignments so the WinForms
// designer can parse it reliably.
private void InitializeComponent()
{
components = new System.ComponentModel.Container();
Text = "个性化";
StartPosition = FormStartPosition.CenterParent;
FormBorderStyle = FormBorderStyle.FixedSingle;
MaximizeBox = false;
MinimizeBox = false;
ClientSize = new Size(780, 582);
BackColor = Color.White;
Font = new Font("Microsoft YaHei", 9F);
pnlHeader = new Panel();
pnlNavigation = new Panel();
pnlContent = new Panel();
pnlAppearance = new Panel();
pnlFonts = new Panel();
pnlHeader.Dock = DockStyle.Top;
pnlHeader.Height = 36;
pnlHeader.BackColor = Color.FromArgb(7, 95, 166);
pnlNavigation.Dock = DockStyle.Left;
pnlNavigation.Width = 176;
pnlNavigation.BackColor = Color.FromArgb(247, 249, 252);
pnlNavigation.Padding = new Padding(8, 8, 8, 0);
pnlContent.Dock = DockStyle.Fill;
pnlContent.BackColor = Color.White;
pnlContent.Padding = new Padding(18, 0, 18, 0);
Controls.Add(pnlContent);
Controls.Add(pnlNavigation);
Controls.Add(pnlHeader);
}
// Build the remaining controls outside InitializeComponent. This is invoked
// by the form constructor for both runtime and Visual Studio design-time.
private void BuildDesignerControls()
{
Label title = new Label { Text = "● 个性化", ForeColor = Color.White, AutoSize = true, Location = new Point(12, 9), Font = new Font("Microsoft YaHei", 10F) };
Button close = new Button { Text = "×", FlatStyle = FlatStyle.Flat, ForeColor = Color.White, BackColor = Color.Transparent, Size = new Size(32, 30), Anchor = AnchorStyles.Top | AnchorStyles.Right, Location = new Point(740, 3) };
close.FlatAppearance.BorderSize = 0;
close.Click += delegate { Close(); };
pnlHeader.Controls.Add(title);
pnlHeader.Controls.Add(close);
navAppearance = MakeNavButton("外观", 8);
navFonts = MakeNavButton("字体与字号", 48);
navAppearance.Click += navAppearance_Click;
navFonts.Click += navFonts_Click;
pnlNavigation.Controls.Add(navFonts);
pnlNavigation.Controls.Add(navAppearance);
pnlAppearance = MakePage();
pnlFonts = MakePage();
pnlFonts.Visible = false;
pnlContent.Controls.Add(pnlFonts);
pnlContent.Controls.Add(pnlAppearance);
BuildAppearancePage();
BuildFontsPage();
Panel footer = new Panel { Dock = DockStyle.Bottom, Height = 48, BackColor = Color.White, BorderStyle = BorderStyle.FixedSingle };
btnReset = MakeFooterButton("恢复默认", 12);
btnCancel = MakeFooterButton("取消", 610);
btnSave = MakeFooterButton("保存", 690);
btnReset.Click += btnReset_Click;
btnCancel.Click += btnCancel_Click;
btnSave.Click += btnSave_Click;
footer.Controls.Add(btnReset);
footer.Controls.Add(btnCancel);
footer.Controls.Add(btnSave);
Controls.Add(footer);
ShowPage(pnlAppearance);
}
private Button MakeNavButton(string text, int top)
{
return new Button { Text = text, TextAlign = ContentAlignment.MiddleLeft, Padding = new Padding(14, 0, 0, 0), FlatStyle = FlatStyle.Flat, ForeColor = Color.FromArgb(50, 70, 95), BackColor = Color.Transparent, Size = new Size(160, 36), Location = new Point(8, top) };
}
private Button MakeFooterButton(string text, int left)
{
return new Button { Text = text, FlatStyle = FlatStyle.Flat, BackColor = Color.White, ForeColor = Color.FromArgb(65, 85, 110), Size = new Size(70, 30), Location = new Point(left, 8), Anchor = AnchorStyles.Right | AnchorStyles.Top };
}
private Panel MakePage() { return new Panel { Dock = DockStyle.Fill, BackColor = Color.White }; }
private Label MakeLabel(string text, int top)
{
return new Label { Text = text, AutoSize = true, Location = new Point(2, top + 7), ForeColor = Color.FromArgb(35, 48, 65), Font = new Font("Microsoft YaHei", 9F) };
}
private void AddRow(Panel page, Label label, System.Windows.Forms.Control editor, int top)
{
Panel row = new Panel { Height = 64, Width = 560, Location = new Point(0, top), Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right, BorderStyle = BorderStyle.FixedSingle, BackColor = Color.White };
label.Location = new Point(20, 22);
row.Controls.Add(label);
editor.Location = new Point(318, 16);
row.Controls.Add(editor);
page.Controls.Add(row);
row.BringToFront();
}
private void BuildAppearancePage()
{
Label heading = new Label { Text = "外观", Dock = DockStyle.Top, Height = 38, Padding = new Padding(2, 11, 0, 0), ForeColor = Color.FromArgb(45, 65, 90) };
pnlAppearance.Controls.Add(heading);
txtTopColor = MakeColorText(); pnlTopPreview = MakePreview(); btnTopColor = MakeChooseButton();
AddRow(pnlAppearance, MakeLabel("顶部菜单背景色", 0), MakeColorEditor(txtTopColor, pnlTopPreview, btnTopColor), 38);
btnTopColor.Click += btnTopColor_Click; txtTopColor.TextChanged += txtColor_TextChanged;
txtLeftColor = MakeColorText(); pnlLeftPreview = MakePreview(); btnLeftColor = MakeChooseButton();
AddRow(pnlAppearance, MakeLabel("左侧菜单背景色", 0), MakeColorEditor(txtLeftColor, pnlLeftPreview, btnLeftColor), 102);
btnLeftColor.Click += btnLeftColor_Click; txtLeftColor.TextChanged += txtColor_TextChanged;
txtLeftSelectColor = MakeColorText(); pnlLeftSelectPreview = MakePreview(); btnLeftSelectColor = MakeChooseButton();
AddRow(pnlAppearance, MakeLabel("左侧菜单选中背景色", 0), MakeColorEditor(txtLeftSelectColor, pnlLeftSelectPreview, btnLeftSelectColor), 166);
btnLeftSelectColor.Click += btnLeftSelectColor_Click; txtLeftSelectColor.TextChanged += txtColor_TextChanged;
}
private void BuildFontsPage()
{
Label heading = new Label { Text = "字体与字号", Dock = DockStyle.Top, Height = 38, Padding = new Padding(2, 11, 0, 0), ForeColor = Color.FromArgb(45, 65, 90) };
pnlFonts.Controls.Add(heading);
numTopFont = MakeNumber(); numLeftFont = MakeNumber();
AddRow(pnlFonts, MakeLabel("顶部菜单字号", 0), numTopFont, 38);
AddRow(pnlFonts, MakeLabel("左侧菜单字号", 0), numLeftFont, 102);
}
private TextBox MakeColorText() { return new TextBox { Width = 130, Height = 24, BorderStyle = BorderStyle.FixedSingle }; }
private Panel MakePreview() { return new Panel { Width = 24, Height = 22, BorderStyle = BorderStyle.FixedSingle }; }
private Button MakeChooseButton() { return new Button { Text = "选择", Width = 52, Height = 24, FlatStyle = FlatStyle.Flat }; }
private Panel MakeColorEditor(TextBox text, Panel preview, Button choose)
{
Panel p = new Panel { Width = 260, Height = 28 };
text.Location = new Point(0, 1); preview.Location = new Point(136, 1); choose.Location = new Point(166, 0);
p.Controls.Add(text); p.Controls.Add(preview); p.Controls.Add(choose); return p;
}
private NumericUpDown MakeNumber() { return new NumericUpDown { Width = 220, Minimum = 8, Maximum = 24, Value = 12, BorderStyle = BorderStyle.FixedSingle }; }
private void ShowPage(System.Windows.Forms.Control page)
{
if (pnlAppearance == null || pnlFonts == null) return;
pnlAppearance.Visible = page == pnlAppearance;
pnlFonts.Visible = page == pnlFonts;
if (navAppearance != null) navAppearance.BackColor = pnlAppearance.Visible ? Color.FromArgb(229, 239, 250) : Color.Transparent;
if (navFonts != null) navFonts.BackColor = pnlFonts.Visible ? Color.FromArgb(229, 239, 250) : Color.Transparent;
}
}
}