You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

118 lines
3.0 KiB
C#

9 months ago
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Metro;
using POSV.Entity;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace POSV.WaiMai
{
public partial class WorkerSelectForm : BusinessForm
{
public WorkerSelectForm()
{
InitializeComponent();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (DesignMode) return;
Task.Factory.StartNew(() =>
{
this.Invoke(new Action(() =>
{
InitializeWorker();
}));
});
}
private void InitializeWorker()
{
List<Worker> lists = new List<Worker>();
using (var db = Global.Instance.OpenDataBase)
{
lists = db.Query<Worker>().ToList();
}
this.itemPanel.Items.Clear();
ItemContainer ic = new ItemContainer();
ic.MultiLine = true;
ic.ItemSpacing = 2;
ic.TitleStyle.Class = "MetroTileGroupTitle";
foreach (var entity in lists)
{
MetroTileItem item = new MetroTileItem();
item.TileStyle.PaddingLeft = item.TileStyle.PaddingRight = -2;
item.CheckBehavior = eMetroTileCheckBehavior.LeftMouseButtonClick;
item.Checked = false;
item.OptionGroup = "WORKER";
item.TileStyle.Font = Constant.BIG_FONT;
item.TileStyle.TextAlignment = eStyleTextAlignment.Center;
item.Text = entity.Name;
item.TileSize = new Size(100, 60);
item.TileColor = eMetroTileColor.Coffee;
item.TileStyle.TextColor = Color.White;
item.TileStyle.BorderColor = Color.Transparent;
item.TileStyle.BorderColor2 = Color.Transparent;
item.Tag = entity;
item.MouseDown += OnWorkerMouseDown;
ic.SubItems.Add(item);
}
this.itemPanel.Items.Add(ic);
this.itemPanel.Invalidate();
}
private void OnWorkerMouseDown(object sender, MouseEventArgs e)
{
MetroTileItem obj = sender as MetroTileItem;
var worker = obj.Tag as Worker;
OnSelectedWorker?.Invoke(worker);
OnCloseClick(sender, e);
}
public delegate void EventHandler(Worker worker);
public event EventHandler OnSelectedWorker;
private void OnCloseClick(object sender, EventArgs e)
{
if(this.Owner != null)
{
this.Owner.Close();
}
this.Close();
}
private void OnCancelTouchClick(object sender, Component.TouchEventArgs e)
{
this.OnCloseClick(sender, null);
}
}
}