优化默认菜单颜色显示
添加主题切换按钮 优化图片显示计数
This commit is contained in:
parent
beb88e236d
commit
60db9fd0c2
110
MainForm.cs
110
MainForm.cs
@ -250,6 +250,9 @@ namespace QuickLauncher
|
||||
// 设置快捷方式面板颜色
|
||||
shortcutsPanel.BackColor = isDarkMode ? Color.FromArgb(32, 32, 32) : Color.FromArgb(250, 250, 250);
|
||||
|
||||
// 设置分类文字颜色
|
||||
categoryLabel.ForeColor = isDarkMode ? Color.FromArgb(255, 255, 255) : Color.FromArgb(0, 0, 0);
|
||||
|
||||
// 设置添加按钮颜色
|
||||
addButton.BackColor = accentColor;
|
||||
addButton.ForeColor = Color.White;
|
||||
@ -831,7 +834,7 @@ namespace QuickLauncher
|
||||
|
||||
// 设置分类标签样式
|
||||
categoryLabel.Font = new Font("Microsoft YaHei UI", 11);
|
||||
categoryLabel.ForeColor = isDarkMode ? Color.Black : Color.White;
|
||||
categoryLabel.ForeColor = isDarkMode ? Color.FromArgb(0, 0, 0) : Color.FromArgb(255, 255, 255);
|
||||
|
||||
// 创建左侧面板调整手柄
|
||||
CreateResizeHandle();
|
||||
@ -922,28 +925,40 @@ namespace QuickLauncher
|
||||
using (var dialog = new Form())
|
||||
{
|
||||
dialog.Text = "添加新分类";
|
||||
dialog.Size = new Size(350, 150);
|
||||
dialog.Size = new Size(350, 200);
|
||||
dialog.StartPosition = FormStartPosition.CenterParent;
|
||||
dialog.FormBorderStyle = FormBorderStyle.FixedDialog;
|
||||
dialog.MaximizeBox = false;
|
||||
dialog.MinimizeBox = false;
|
||||
dialog.BackColor = isDarkMode ? Color.FromArgb(32, 32, 32) : Color.FromArgb(243, 243, 243);
|
||||
dialog.BackColor = isDarkMode ? Color.FromArgb(45, 45, 45) : Color.FromArgb(240, 240, 240);
|
||||
dialog.ForeColor = isDarkMode ? Color.White : Color.Black;
|
||||
|
||||
var label = new Label() {
|
||||
// 应用Windows 11深色/浅色模式到标题栏
|
||||
if (Environment.OSVersion.Version.Build >= 22000)
|
||||
{
|
||||
int darkMode = isDarkMode ? 1 : 0;
|
||||
DwmSetWindowAttribute(dialog.Handle, DWMWA_USE_IMMERSIVE_DARK_MODE, ref darkMode, sizeof(int));
|
||||
}
|
||||
|
||||
var label = new Label()
|
||||
{
|
||||
Text = "分类名称:",
|
||||
Location = new Point(10, 20),
|
||||
ForeColor = isDarkMode ? Color.White : Color.Black
|
||||
ForeColor = isDarkMode ? Color.White : Color.Black,
|
||||
AutoSize = true
|
||||
};
|
||||
|
||||
var textBox = new TextBox() {
|
||||
var textBox = new TextBox()
|
||||
{
|
||||
Location = new Point(120, 17),
|
||||
Width = 180,
|
||||
BackColor = isDarkMode ? Color.FromArgb(45, 45, 45) : Color.White,
|
||||
ForeColor = isDarkMode ? Color.White : Color.Black
|
||||
BackColor = isDarkMode ? Color.FromArgb(60, 60, 60) : Color.White,
|
||||
ForeColor = isDarkMode ? Color.White : Color.Black,
|
||||
BorderStyle = BorderStyle.FixedSingle
|
||||
};
|
||||
|
||||
var button = new RoundedButton() {
|
||||
var button = new RoundedButton()
|
||||
{
|
||||
Text = "确定",
|
||||
DialogResult = DialogResult.OK,
|
||||
Location = new Point(110, 60),
|
||||
@ -957,6 +972,16 @@ namespace QuickLauncher
|
||||
dialog.Controls.AddRange(new Control[] { label, textBox, button });
|
||||
dialog.AcceptButton = button;
|
||||
|
||||
// 确保在显示对话框之前应用主题
|
||||
dialog.HandleCreated += (s, ev) =>
|
||||
{
|
||||
if (Environment.OSVersion.Version.Build >= 22000)
|
||||
{
|
||||
int darkMode = isDarkMode ? 1 : 0;
|
||||
DwmSetWindowAttribute(dialog.Handle, DWMWA_USE_IMMERSIVE_DARK_MODE, ref darkMode, sizeof(int));
|
||||
}
|
||||
};
|
||||
|
||||
if (dialog.ShowDialog() == DialogResult.OK && !string.IsNullOrWhiteSpace(textBox.Text))
|
||||
{
|
||||
string newCategory = textBox.Text.Trim();
|
||||
@ -967,8 +992,7 @@ namespace QuickLauncher
|
||||
RefreshCategoryList();
|
||||
|
||||
// 自动选择新创建的分类
|
||||
currentCategory = newCategory;
|
||||
ShowCategoryItems(currentCategory);
|
||||
SwitchCategory(newCategory);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1042,6 +1066,23 @@ namespace QuickLauncher
|
||||
btn.Click += (s, e) =>
|
||||
{
|
||||
currentCategory = category;
|
||||
foreach (Control panel in leftPanel.Controls)
|
||||
{
|
||||
if (panel is RoundedPanel && panel.Controls.Count > 0)
|
||||
{
|
||||
var button = panel.Controls[0] as RoundedButton;
|
||||
if (button != null)
|
||||
{
|
||||
string btnCategory = button.Tag as string;
|
||||
button.BackColor = btnCategory == category ?
|
||||
accentColor :
|
||||
(isDarkMode ? Color.FromArgb(60, 60, 60) : Color.FromArgb(230, 230, 230));
|
||||
button.ForeColor = btnCategory == category ?
|
||||
Color.White :
|
||||
(isDarkMode ? Color.FromArgb(240, 240, 240) : Color.FromArgb(20, 20, 20));
|
||||
}
|
||||
}
|
||||
}
|
||||
ShowCategoryItems(category);
|
||||
};
|
||||
|
||||
@ -1174,7 +1215,7 @@ namespace QuickLauncher
|
||||
}
|
||||
else
|
||||
{
|
||||
LaunchApplication(item.Path);
|
||||
LaunchApplication(item.Path); // 启动应用程序
|
||||
}
|
||||
};
|
||||
|
||||
@ -1286,6 +1327,14 @@ namespace QuickLauncher
|
||||
}
|
||||
};
|
||||
|
||||
var item = categories[currentCategory].FirstOrDefault(i => i.Path == imagePath);
|
||||
if (item != null)
|
||||
{
|
||||
item.UsageCount++;
|
||||
item.LastUsed = DateTime.Now;
|
||||
SaveData();
|
||||
}
|
||||
|
||||
previewForm.Controls.Add(pictureBox);
|
||||
previewForm.ShowDialog();
|
||||
}
|
||||
@ -1418,6 +1467,7 @@ namespace QuickLauncher
|
||||
}
|
||||
}
|
||||
|
||||
// 启动应用程序
|
||||
private void LaunchApplication(string path)
|
||||
{
|
||||
try
|
||||
@ -1483,6 +1533,17 @@ namespace QuickLauncher
|
||||
}
|
||||
|
||||
RefreshCategoryList();
|
||||
|
||||
// 如果有上次选择的分类,则选择它
|
||||
if (!string.IsNullOrEmpty(settings.LastSelectedCategory) && categories.ContainsKey(settings.LastSelectedCategory))
|
||||
{
|
||||
SwitchCategory(settings.LastSelectedCategory);
|
||||
}
|
||||
// 否则选择第一个分类
|
||||
else if (categories.Count > 0)
|
||||
{
|
||||
SwitchCategory(categories.Keys.First());
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -1497,8 +1558,33 @@ namespace QuickLauncher
|
||||
categories["默认分类"] = new List<ShortcutItem>();
|
||||
SaveData();
|
||||
RefreshCategoryList();
|
||||
SwitchCategory("默认分类");
|
||||
}
|
||||
}
|
||||
|
||||
private void SwitchCategory(string category)
|
||||
{
|
||||
currentCategory = category;
|
||||
RefreshCategoryList();
|
||||
ShowCategoryItems(category);
|
||||
SaveSettings(); // 保存当前选择的分类
|
||||
}
|
||||
|
||||
private void button1_Click(object sender, EventArgs e)
|
||||
{
|
||||
isDarkMode = !isDarkMode; // 切换主题状态
|
||||
ApplyTheme(isDarkMode);
|
||||
}
|
||||
|
||||
private void ApplyTheme(bool darkMode)
|
||||
{
|
||||
if (darkMode)
|
||||
{
|
||||
ChangeTheme(true);
|
||||
}
|
||||
else
|
||||
ChangeTheme(false);
|
||||
}
|
||||
}
|
||||
|
||||
public class ShortcutItem
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user