ZeroLauncher/controls/MemberControl.xaml.cs
2024-03-19 12:09:31 +08:00

117 lines
3.9 KiB
C#
Raw Permalink 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 System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media;
using Zerolauncher.dialog;
using Zerolauncher.Manager;
namespace Zerolauncher.controls
{
/// <summary>
/// MemberControl.xaml 的交互逻辑
/// </summary>
public partial class MemberControl : UserControl
{
public int memberId { get; set; }
private bool isMouseDown;
public MemberControl()
{
InitializeComponent();
isMouseDown = false;
// 鼠标按下事件
MouseDown += (s, e) =>
{
RenderTransform = new TranslateTransform(3, 3);
isMouseDown = true;
};
// 鼠标松开事件
MouseUp += (s, e) =>
{
if (!isMouseDown) return;
RenderTransform = new TranslateTransform(0, 0);
if (e.ChangedButton == MouseButton.Right) return;
if (!EngineManager.CreateGame(memberId)) MessageBox.Show("账号已启动!请勿重复启动", "提示");
};
// 鼠标离开事件
MouseLeave += (s, e) =>
{
if (Mouse.LeftButton == MouseButtonState.Pressed)
{
RenderTransform = new TranslateTransform(0, 0);
isMouseDown = false;
}
};
// 鼠标捕获丢失事件
LostMouseCapture += (s, e) =>
{
RenderTransform = new TranslateTransform(0, 0);
isMouseDown = false;
};
ContextMenu = CreateContextMenu();
}
private ContextMenu CreateContextMenu()
{
ContextMenu contextMenu = new ContextMenu();
MenuItem editItem = new MenuItem { Header = "编辑" };
editItem.Click += editItem_Click;
contextMenu.Items.Add(editItem);
MenuItem delItem = new MenuItem { Header = "删除" };
delItem.Click += delItem_Click;
contextMenu.Items.Add(delItem);
MenuItem changeTeamItem = new MenuItem { Header = "移动到" };
contextMenu.Items.Add(changeTeamItem);
changeTeamItem.MouseEnter += (sender, args) =>
{
// 清空ContextMenu的items
changeTeamItem.Items.Clear();
// 假设你有一个字符串数组
string[] items = TeamManager.GetAllTeamName();
// 遍历字符串数组为每个元素创建一个MenuItem
for (int i = 0; i < items.Length; i++)
{
MenuItem menuItem = new MenuItem { Header = items[i] };
menuItem.Tag = i;
menuItem.Click += (sender, args) =>
{
// 输出被点击的item的index
MenuItem menuItem = sender as MenuItem;
int i = (int)menuItem.Tag;
Trace.WriteLine("Clicked item index: " + i);
AccountManager.MoveAccount(memberId, i);
};
changeTeamItem.Items.Add(menuItem);
}
};
return contextMenu;
}
private void delItem_Click(object sender, RoutedEventArgs e)
{
MessageBoxResult result = MessageBox.Show($"即将删除账号{text.Content}", "提示", MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel);
if (result == MessageBoxResult.OK)
{
AccountManager.DeleteAccount(memberId);
}
}
private void editItem_Click(object sender, RoutedEventArgs e)
{
//Trace.WriteLine("edit member " + memberId.ToString());
EditMemberDialog.CreateDailog(memberId);
}
}
}