antdui-demo/MainWindow.cs
2024-09-01 21:20:22 +08:00

259 lines
8.8 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using AntdUI;
using AntdUIDemo.Controls;
using AntdUIDemo.Models;
using AntdUIDemo.Utils;
using AntdUIDemo.Views;
using Microsoft.Win32;
using System;
using System.Configuration;
using System.Drawing;
using System.Windows.Forms;
namespace AntdUIDemo
{
public partial class MainWindow : AntdUI.Window
{
private UserControl control;
public MainWindow()
{
InitializeComponent();
//加载配置文件
LoadAppConfig();
//加载菜单
LoadMenu();
//绑定事件
BindEventHandler();
}
private void BindEventHandler()
{
buttonSZ.Click += ButtonSZ_Click;
button_color.Click += Button_color_Click;
menu.SelectChanged += Menu_SelectChanged;
//监听系统深浅色变化
SystemEvents.UserPreferenceChanged += SystemEvents_UserPreferenceChanged;
}
private void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
{
if (e.Category == UserPreferenceCategory.General)
{
ThemeHelper.SetColorMode(this, ThemeHelper.IsLightMode());
}
}
private void LoadAppConfig()
{
//加载色彩模式
var value = ConfigurationManager.AppSettings["ColorMode"];
if (value == "Auto")
{
ThemeHelper.SetColorMode(this, ThemeHelper.IsLightMode());
}
else
{
ThemeHelper.SetColorMode(this, value == "Light");
}
//加载动画
var animation = ConfigurationManager.AppSettings["Animation"];
AntdUI.Config.Animation = animation == "True";
//加载阴影
var shadow = ConfigurationManager.AppSettings["ShadowEnabled"];
AntdUI.Config.ShadowEnabled = shadow == "True";
//滚动条
var scrollbar = ConfigurationManager.AppSettings["ScrollBarHide"];
AntdUI.Config.ScrollBarHide = scrollbar == "True";
//窗口内弹出 Message/Notification
var popup = ConfigurationManager.AppSettings["ShowInWindow"];
AntdUI.Config.ShowInWindow = popup == "True";
//通知消息边界偏移量XYMessage/Notification
var messageOffset = ConfigurationManager.AppSettings["NoticeWindowOffsetXY"];
AntdUI.Config.NoticeWindowOffsetXY = Convert.ToInt32(messageOffset);
}
private void Button_color_Click(object sender, EventArgs e)
{
var value = ConfigurationManager.AppSettings["ColorMode"];
if (value == "Auto")
{
//反向设置
ThemeHelper.SetColorMode(this, !ThemeHelper.IsLightMode());
AppSetting.UpdateAppSetting("ColorMode", ThemeHelper.IsLightMode() ? "Dark" : "Light");
}
else
{
ThemeHelper.SetColorMode(this, value == "Dark");
AppSetting.UpdateAppSetting("ColorMode", value == "Dark" ? "Light" : "Dark");
}
}
private void ButtonSZ_Click(object sender, EventArgs e)
{
using (var form = new SystemSet(this))
{
//AutoDpi(form);
AntdUI.Modal.open(new AntdUI.Modal.Config(this, "系统设置", form, TType.Info)
{
CloseIcon = true,
BtnHeight = 0,
Keyboard = false,
MaskClosable = false,
});
}
}
private void LoadMenu()
{
menu.Items.Clear();
foreach (var rootItem in DataUtil.MenuItems)
{
var rootMenu = new AntdUI.MenuItem { Text = rootItem.Key };
foreach (var item in rootItem.Value)
{
var menuItem = new AntdUI.MenuItem
{
Text = item.Text,
IconSvg = item.IconSvg,
Tag = item.Tag,
};
rootMenu.Sub.Add(menuItem);
}
menu.Items.Add(rootMenu);
}
}
private void Menu_SelectChanged(object sender, MenuSelectEventArgs e)
{
var name = e.Value.Tag;
if (control != null)
{
if (control is FloatButtonDemo floatButtonDemo)
{
floatButtonDemo.CloseFloatButtonForm(); // 清理浮动按钮窗体
}
control?.Dispose();
control = null;
}
panel_content.Controls.Clear();
switch (name)
{
case "Button":
control = new ButtonDemo();
break;
case "FloatButton":
control = new FloatButtonDemo(this);
break;
case "FlowPanel":
control = new FlowPanelDemo(this);
break;
case "GridPanel":
control = new GridPanelDemo();
break;
case "Panel":
control = new PanelDemo();
break;
case "StackPanel":
control = new StackPanelDemo();
break;
case "Dropdown":
control = new DropDownDemo();
break;
case "Menu":
control = new MenuDemo();
break;
case "Pagination":
control = new PaginationDemo();
break;
case "Steps":
control = new StepsDemo();
break;
case "Checkbox":
control = new CheckBoxDemo();
break;
case "ColorPicker":
control = new ColorPickerDemo();
break;
case "DatePicker":
control = new DatePickerDemo();
break;
case "DatePickerRange":
control = new DatePickerRangeDemo();
break;
case "Input":
control = new InputDemo();
break;
case "InputNumber":
control = new InputNumberDemo();
break;
case "Radio":
control = new RadioDemo();
break;
case "Rate":
control = new RateDemo();
break;
case "Select":
control = new SelectDemo();
break;
case "SelectMultiple":
control = new SelectMultipleDemo();
break;
case "Slider":
control = new SliderDemo();
break;
case "Switch":
control = new SwitchDemo();
break;
case "TimePicker":
control = new TimePickerDemo();
break;
case "Avatar":
control = new AvatarDemo();
break;
case "Badge":
control = new BadgeDemo();
break;
case "Calendar":
control = new CalendarDemo(this);
break;
case "Carousel":
control = new CarouselDemo();
break;
case "Label":
control = new LabelDemo();
break;
case "Popover":
control = new PopoverDemo(this);
break;
case "Preview":
control = new PreviewDemo(this);
break;
case "Segmented":
control = new SegmentedDemo();
break;
case "Table":
control = new TableDemo(this);
break;
case "Tabs":
control = new TabsDemo(this);
break;
case "Tag":
control = new TagDemo();
break;
case "Timeline":
control = new TimelineDemo();
break;
case "Drawer":
control = new DrawerDemo(this);
break;
}
if (control != null)
{
AutoDpi(control);
panel_content.Controls.Add(control);
}
}
}
}