mirror of
https://github.com/zs-yg/kortapp-z.git
synced 2025-12-06 16:10:42 +08:00
Add files via upload
初始化
This commit is contained in:
158
MainForm.cs
Normal file
158
MainForm.cs
Normal file
@@ -0,0 +1,158 @@
|
||||
#nullable enable
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace AppStore
|
||||
{
|
||||
public class MainForm : Form
|
||||
{
|
||||
private Button btnApps = null!;
|
||||
private Button btnDownloads = null!;
|
||||
private Panel contentPanel = null!;
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
// 窗体基本设置
|
||||
this.Text = "应用商店";
|
||||
this.Size = new Size(800, 600);
|
||||
this.StartPosition = FormStartPosition.CenterScreen;
|
||||
this.Icon = new Icon("img/ico/icon.ico");
|
||||
|
||||
// 顶部按钮面板
|
||||
Panel buttonPanel = new Panel();
|
||||
buttonPanel.Dock = DockStyle.Top;
|
||||
buttonPanel.Height = 50;
|
||||
buttonPanel.BackColor = Color.LightGray;
|
||||
|
||||
// 软件下载按钮
|
||||
btnApps = new Button();
|
||||
btnApps.Text = "软件下载";
|
||||
btnApps.Size = new Size(100, 30);
|
||||
btnApps.Location = new Point(20, 10);
|
||||
btnApps.Font = new Font("Microsoft YaHei", 9);
|
||||
btnApps.Click += (s, e) => ShowAppsView();
|
||||
buttonPanel.Controls.Add(btnApps);
|
||||
|
||||
// 下载进度按钮
|
||||
btnDownloads = new Button();
|
||||
btnDownloads.Text = "下载进度";
|
||||
btnDownloads.Size = new Size(100, 30);
|
||||
btnDownloads.Location = new Point(140, 10);
|
||||
btnDownloads.Font = new Font("Microsoft YaHei", 9);
|
||||
btnDownloads.Click += (s, e) => ShowDownloadsView();
|
||||
buttonPanel.Controls.Add(btnDownloads);
|
||||
|
||||
this.Controls.Add(buttonPanel);
|
||||
|
||||
// 内容区域
|
||||
contentPanel = new Panel();
|
||||
contentPanel.Dock = DockStyle.Fill;
|
||||
contentPanel.Padding = new Padding(20);
|
||||
this.Controls.Add(contentPanel);
|
||||
|
||||
// 默认显示软件下载视图
|
||||
ShowAppsView();
|
||||
}
|
||||
|
||||
private void ShowAppsView()
|
||||
{
|
||||
contentPanel.Controls.Clear();
|
||||
|
||||
// 使用FlowLayoutPanel来组织应用卡片
|
||||
// 使用FlowLayoutPanel实现自动流式布局
|
||||
FlowLayoutPanel flowPanel = new FlowLayoutPanel();
|
||||
flowPanel.Dock = DockStyle.Fill;
|
||||
flowPanel.AutoScroll = true;
|
||||
flowPanel.Padding = new Padding(10, 30, 10, 10); // 增加顶部间距
|
||||
flowPanel.WrapContents = true;
|
||||
contentPanel.Controls.Add(flowPanel);
|
||||
|
||||
// 创建WindowsCleaner应用卡片
|
||||
AppCard windowsCleanerCard = new AppCard();
|
||||
windowsCleanerCard.AppName = "WindowsCleaner";
|
||||
windowsCleanerCard.DownloadUrl = "https://ghproxy.net/https://github.com/darkmatter2048/WindowsCleaner/releases/download/v5.0.8/windowscleaner_v5.0.8_amd64_x64_setup.exe";
|
||||
|
||||
try
|
||||
{
|
||||
// 加载应用图标
|
||||
windowsCleanerCard.AppIcon = Image.FromFile("img/png/WindowsCleaner.png");
|
||||
}
|
||||
catch
|
||||
{
|
||||
// 如果图标加载失败,使用默认图标
|
||||
windowsCleanerCard.AppIcon = SystemIcons.Application.ToBitmap();
|
||||
}
|
||||
|
||||
windowsCleanerCard.UpdateDisplay();
|
||||
// 添加卡片到流式布局
|
||||
flowPanel.Controls.Add(windowsCleanerCard);
|
||||
}
|
||||
|
||||
private FlowLayoutPanel downloadsFlowPanel = new FlowLayoutPanel();
|
||||
private List<DownloadItem> downloadItems = new List<DownloadItem>();
|
||||
|
||||
public MainForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
// 订阅下载管理器事件
|
||||
DownloadManager.Instance.DownloadAdded += OnDownloadAdded;
|
||||
DownloadManager.Instance.DownloadProgressChanged += OnDownloadProgressChanged;
|
||||
DownloadManager.Instance.DownloadCompleted += OnDownloadCompleted;
|
||||
}
|
||||
|
||||
private void ShowDownloadsView()
|
||||
{
|
||||
contentPanel.Controls.Clear();
|
||||
|
||||
// 使用FlowLayoutPanel组织下载项
|
||||
downloadsFlowPanel = new FlowLayoutPanel();
|
||||
downloadsFlowPanel.Dock = DockStyle.Fill;
|
||||
downloadsFlowPanel.AutoScroll = true;
|
||||
downloadsFlowPanel.Padding = new Padding(10, 30, 10, 10); // 增加顶部间距
|
||||
downloadsFlowPanel.FlowDirection = FlowDirection.TopDown;
|
||||
downloadsFlowPanel.WrapContents = false;
|
||||
contentPanel.Controls.Add(downloadsFlowPanel);
|
||||
|
||||
// 显示所有下载项
|
||||
foreach (var item in DownloadManager.Instance.DownloadItems)
|
||||
{
|
||||
downloadsFlowPanel.Controls.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDownloadAdded(DownloadItem item)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action<DownloadItem>(OnDownloadAdded), item);
|
||||
return;
|
||||
}
|
||||
|
||||
downloadItems.Add(item);
|
||||
downloadsFlowPanel?.Controls.Add(item);
|
||||
}
|
||||
|
||||
private void OnDownloadProgressChanged(DownloadItem item)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action<DownloadItem>(OnDownloadProgressChanged), item);
|
||||
return;
|
||||
}
|
||||
|
||||
item.UpdateDisplay();
|
||||
}
|
||||
|
||||
private void OnDownloadCompleted(DownloadItem item)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
Invoke(new Action<DownloadItem>(OnDownloadCompleted), item);
|
||||
return;
|
||||
}
|
||||
|
||||
item.UpdateDisplay();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user