liyaobang 9f7c6206ca 提交rbac
提交设置右键错位的bug
2025-04-08 15:15:02 +08:00

164 lines
4.7 KiB
C#

using DH.RBAC.Common;
using DH.RBAC.Utility.Other;
using Sunny.UI;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DH.RBAC.Page.Sys.Permission
{
public partial class IconForm : UIForm
{
public IconForm()
{
InitializeComponent();
}
#region
private void btnClose_Click(object sender, EventArgs e)
{
FormHelper.subForm = null;
this.Close();
}
private Point mPoint;
private void titlePanel_MouseDown(object sender, MouseEventArgs e)
{
mPoint = new Point(e.X, e.Y);
}
private void titlePanel_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);
}
}
private void btnClose_MouseEnter(object sender, EventArgs e)
{
btnClose.BackColor = Color.FromArgb(231, 231, 231);
}
private void btnClose_MouseLeave(object sender, EventArgs e)
{
btnClose.BackColor = Color.Transparent;
}
#endregion
/// <summary>
/// 画面加载,读取用户信息,显示在界面上
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void IconForm_Load(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
timer1.Start();
}
/// <summary>
/// 确定按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnConfirm_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.OK;
}
private readonly ConcurrentQueue<Label> FontAwesomeV4Labels = new ConcurrentQueue<Label>();
/// <summary>
/// 后台加载Label
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
foreach (KeyValuePair<string, int> keyValue in IconDict.MyIconDict)
{
FontAwesomeV4Labels.Enqueue(CreateLabel(keyValue.Key, keyValue.Value));
}
}
/// <summary>
/// 创建Label
/// </summary>
/// <param name="name"></param>
/// <param name="icon"></param>
/// <returns></returns>
private Label CreateLabel(string name, int icon)
{
Label lbl = new Label
{
Name = name,
AutoSize = false,
Size = new Size(45, 45),
ForeColor = UIColor.Blue,
Image = FontImageHelper.CreateImage(icon, 40, UIFontColor.Primary),
ImageAlign = ContentAlignment.MiddleCenter,
TextAlign = ContentAlignment.MiddleLeft,
Margin = new Padding(2),
Tag = icon
};
lbl.MouseDown += lbl_MouseDown;
return lbl;
}
public string IconName { get; set; }
public int SymbolIndex { get; set; }
private Label lastLabel;
/// <summary>
/// Label点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void lbl_MouseDown(object sender, EventArgs e)
{
if (sender is Label lbl)
{
IconName = lbl.Name;
SymbolIndex = (int)lbl.Tag;
if (lastLabel != null)
{
lastLabel.Image = FontImageHelper.CreateImage((int)lastLabel.Tag, 40, UIFontColor.Primary);
}
lastLabel = lbl;
lastLabel.Image = FontImageHelper.CreateImage((int)lastLabel.Tag, 40, UIColor.Blue);
}
}
/// <summary>
/// 定时器从队列中加载到界面上
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
while (!FontAwesomeV4Labels.IsEmpty)
{
if (FontAwesomeV4Labels.TryDequeue(out Label lbl))
{
flowLayoutPanel1.Controls.Add(lbl);
}
}
timer1.Start();
}
}
}