mirror of
https://gitee.com/AntdUI/AntdUI.git
synced 2026-04-04 04:30:41 +08:00
💎 Transfer 穿梭框
This commit is contained in:
152
example/Demo/Controls/Transfer.Designer.cs
generated
152
example/Demo/Controls/Transfer.Designer.cs
generated
@@ -49,118 +49,142 @@ namespace Demo.Controls
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
header1 = new AntdUI.PageHeader();
|
||||
panel1 = new AntdUI.Panel();
|
||||
transfer1 = new AntdUI.Transfer();
|
||||
panel2 = new AntdUI.Panel();
|
||||
btn_reload = new AntdUI.Button();
|
||||
label_target = new AntdUI.Label();
|
||||
label_source = new AntdUI.Label();
|
||||
label1 = new AntdUI.Label();
|
||||
switch_oneWay = new AntdUI.Switch();
|
||||
btn_reload = new AntdUI.Button();
|
||||
label1 = new AntdUI.Label();
|
||||
transfer1 = new AntdUI.Transfer();
|
||||
panel1.SuspendLayout();
|
||||
panel2.SuspendLayout();
|
||||
SuspendLayout();
|
||||
//
|
||||
// header1
|
||||
//
|
||||
header1.Description = "双栏穿梭选择框,用于在两个区域之间移动元素。";
|
||||
header1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
header1.Font = new Font("Microsoft YaHei UI", 12F);
|
||||
header1.LocalizationDescription = "Transfer.Description";
|
||||
header1.LocalizationText = "Transfer.Text";
|
||||
header1.Location = new Point(0, 0);
|
||||
header1.Name = "header1";
|
||||
header1.Padding = new System.Windows.Forms.Padding(0, 0, 0, 10);
|
||||
header1.Size = new Size(800, 74);
|
||||
header1.TabIndex = 0;
|
||||
header1.Text = "Transfer 穿梭框";
|
||||
header1.UseTitleFont = true;
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
panel1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
||||
panel1.Controls.Add(transfer1);
|
||||
panel1.Location = new Point(20, 100);
|
||||
panel1.Controls.Add(label_target);
|
||||
panel1.Controls.Add(label_source);
|
||||
panel1.Controls.Add(switch_oneWay);
|
||||
panel1.Controls.Add(btn_reload);
|
||||
panel1.Controls.Add(label1);
|
||||
panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||
panel1.Location = new Point(0, 74);
|
||||
panel1.Name = "panel1";
|
||||
panel1.Size = new Size(760, 380);
|
||||
panel1.TabIndex = 0;
|
||||
panel1.Radius = 0;
|
||||
panel1.Size = new Size(800, 36);
|
||||
panel1.TabIndex = 1;
|
||||
//
|
||||
// transfer1
|
||||
// label_target
|
||||
//
|
||||
transfer1.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
||||
transfer1.Location = new Point(20, 50);
|
||||
transfer1.MinimumSize = new Size(300, 200);
|
||||
transfer1.Name = "transfer1";
|
||||
transfer1.Size = new Size(720, 310);
|
||||
transfer1.TabIndex = 0;
|
||||
label_target.AutoSizeMode = AntdUI.TAutoSize.Width;
|
||||
label_target.BackColor = Color.Transparent;
|
||||
label_target.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
label_target.LocalizationText = "Transfer.TargetT";
|
||||
label_target.Location = new Point(614, 0);
|
||||
label_target.Name = "label_target";
|
||||
label_target.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
label_target.Size = new Size(63, 36);
|
||||
label_target.TabIndex = 5;
|
||||
label_target.Text = "目标列表: ";
|
||||
label_target.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// panel2
|
||||
// label_source
|
||||
//
|
||||
panel2.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right;
|
||||
panel2.Controls.Add(btn_reload);
|
||||
panel2.Controls.Add(label_target);
|
||||
panel2.Controls.Add(label_source);
|
||||
panel2.Controls.Add(label1);
|
||||
panel2.Controls.Add(switch_oneWay);
|
||||
panel2.Location = new Point(20, 20);
|
||||
panel2.Name = "panel2";
|
||||
panel2.Size = new Size(760, 70);
|
||||
panel2.TabIndex = 1;
|
||||
label_source.AutoSizeMode = AntdUI.TAutoSize.Width;
|
||||
label_source.BackColor = Color.Transparent;
|
||||
label_source.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
label_source.LocalizationText = "Transfer.SourceT";
|
||||
label_source.Location = new Point(677, 0);
|
||||
label_source.Name = "label_source";
|
||||
label_source.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
label_source.Size = new Size(51, 36);
|
||||
label_source.TabIndex = 4;
|
||||
label_source.Text = "源列表: ";
|
||||
label_source.TextAlign = ContentAlignment.MiddleRight;
|
||||
//
|
||||
// switch_oneWay
|
||||
//
|
||||
switch_oneWay.BackColor = Color.Transparent;
|
||||
switch_oneWay.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
switch_oneWay.Location = new Point(59, 0);
|
||||
switch_oneWay.Name = "switch_oneWay";
|
||||
switch_oneWay.Padding = new System.Windows.Forms.Padding(0, 4, 0, 4);
|
||||
switch_oneWay.Size = new Size(40, 36);
|
||||
switch_oneWay.TabIndex = 0;
|
||||
//
|
||||
// btn_reload
|
||||
//
|
||||
btn_reload.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
|
||||
btn_reload.AutoSizeMode = AntdUI.TAutoSize.Width;
|
||||
btn_reload.BorderWidth = 1F;
|
||||
btn_reload.Location = new Point(650, 30);
|
||||
btn_reload.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
btn_reload.LocalizationText = "Transfer.Reload";
|
||||
btn_reload.Location = new Point(728, 0);
|
||||
btn_reload.Name = "btn_reload";
|
||||
btn_reload.Size = new Size(90, 30);
|
||||
btn_reload.Size = new Size(72, 36);
|
||||
btn_reload.TabIndex = 6;
|
||||
btn_reload.Text = "重新加载";
|
||||
btn_reload.Click += btn_reload_Click;
|
||||
//
|
||||
// label_target
|
||||
//
|
||||
label_target.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
|
||||
label_target.Location = new Point(520, 30);
|
||||
label_target.Name = "label_target";
|
||||
label_target.Size = new Size(120, 30);
|
||||
label_target.TabIndex = 5;
|
||||
label_target.Text = "目标列表: 0项";
|
||||
label_target.TextAlign = ContentAlignment.TopRight;
|
||||
//
|
||||
// label_source
|
||||
//
|
||||
label_source.Anchor = System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right;
|
||||
label_source.Location = new Point(400, 30);
|
||||
label_source.Name = "label_source";
|
||||
label_source.Size = new Size(120, 30);
|
||||
label_source.TabIndex = 4;
|
||||
label_source.Text = "源列表: 10项";
|
||||
label_source.TextAlign = ContentAlignment.TopRight;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
label1.Location = new Point(20, 30);
|
||||
label1.AutoSizeMode = AntdUI.TAutoSize.Width;
|
||||
label1.BackColor = Color.Transparent;
|
||||
label1.Dock = System.Windows.Forms.DockStyle.Left;
|
||||
label1.LocalizationText = "Transfer.One";
|
||||
label1.Location = new Point(0, 0);
|
||||
label1.Name = "label1";
|
||||
label1.Size = new Size(80, 30);
|
||||
label1.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
label1.Size = new Size(59, 36);
|
||||
label1.TabIndex = 1;
|
||||
label1.Text = "单向模式:";
|
||||
//
|
||||
// switch_oneWay
|
||||
// transfer1
|
||||
//
|
||||
switch_oneWay.Location = new Point(100, 30);
|
||||
switch_oneWay.Name = "switch_oneWay";
|
||||
switch_oneWay.Size = new Size(50, 30);
|
||||
switch_oneWay.TabIndex = 0;
|
||||
transfer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
transfer1.Location = new Point(0, 110);
|
||||
transfer1.MinimumSize = new Size(300, 200);
|
||||
transfer1.Name = "transfer1";
|
||||
transfer1.Padding = new System.Windows.Forms.Padding(8);
|
||||
transfer1.Size = new Size(800, 390);
|
||||
transfer1.TabIndex = 0;
|
||||
//
|
||||
// Transfer
|
||||
//
|
||||
Controls.Add(panel2);
|
||||
Controls.Add(transfer1);
|
||||
Controls.Add(panel1);
|
||||
Controls.Add(header1);
|
||||
Name = "Transfer";
|
||||
Size = new Size(800, 500);
|
||||
panel1.ResumeLayout(false);
|
||||
panel2.ResumeLayout(false);
|
||||
panel1.PerformLayout();
|
||||
ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private AntdUI.PageHeader header1;
|
||||
private AntdUI.Panel panel1;
|
||||
private AntdUI.Transfer transfer1;
|
||||
private AntdUI.Panel panel2;
|
||||
private AntdUI.Label label1;
|
||||
private AntdUI.Switch switch_oneWay;
|
||||
//private AntdUI.Label label2;
|
||||
//private AntdUI.Switch switch_search;
|
||||
private AntdUI.Label label_source;
|
||||
private AntdUI.Label label_target;
|
||||
private AntdUI.Button btn_reload;
|
||||
private AntdUI.Transfer transfer1;
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ using System.Windows.Forms;
|
||||
|
||||
namespace Demo.Controls
|
||||
{
|
||||
public partial class Transfer : UserControl
|
||||
public partial class Transfer : UserControl, AntdUI.IEventListener
|
||||
{
|
||||
Form form;
|
||||
public Transfer(Form _form)
|
||||
@@ -31,83 +31,73 @@ namespace Demo.Controls
|
||||
form = _form;
|
||||
InitializeComponent();
|
||||
InitializeTransfer();
|
||||
AntdUI.EventHub.AddListener(this);
|
||||
}
|
||||
|
||||
private void InitializeTransfer()
|
||||
{
|
||||
// 初始化穿梭框数据
|
||||
var items = new List<AntdUI.TransferItem>
|
||||
{
|
||||
new AntdUI.TransferItem("选项1", 1),
|
||||
new AntdUI.TransferItem("选项2", 2),
|
||||
new AntdUI.TransferItem("选项3", 3),
|
||||
new AntdUI.TransferItem("选项4", 4),
|
||||
new AntdUI.TransferItem("选项5", 5),
|
||||
new AntdUI.TransferItem("选项6", 6),
|
||||
new AntdUI.TransferItem("选项7", 7),
|
||||
new AntdUI.TransferItem("选项8", 8),
|
||||
new AntdUI.TransferItem("选项9", 9),
|
||||
new AntdUI.TransferItem("选项10", 10)
|
||||
};
|
||||
|
||||
var items = new List<AntdUI.TransferItem>(10);
|
||||
for (int i = 0; i <= 10; i++) items.Add(new AntdUI.TransferItem(AntdUI.Localization.Get("Transfer.Content", "选项") + (i + 1), i));
|
||||
// 设置穿梭框数据源
|
||||
transfer1.Items = items;
|
||||
|
||||
label_source.Suffix = transfer1.GetSourceItems().Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
label_target.Suffix = transfer1.GetTargetItems().Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
|
||||
// 注册穿梭框事件
|
||||
transfer1.TransferChanged += Transfer1_TransferChanged;
|
||||
transfer1.Search += Transfer1_Search;
|
||||
transfer1.TransferChanged += transfer1_TransferChanged;
|
||||
transfer1.Search += transfer1_Search;
|
||||
|
||||
// 设置单向模式开关事件
|
||||
switch_oneWay.CheckedChanged += Switch_oneWay_CheckedChanged;
|
||||
|
||||
// 设置搜索框开关事件
|
||||
//switch_search.CheckedChanged += Switch_search_CheckedChanged;
|
||||
switch_oneWay.CheckedChanged += switch_oneWay_CheckedChanged;
|
||||
}
|
||||
|
||||
private void Transfer1_TransferChanged(object sender, AntdUI.Transfer.TransferEventArgs e)
|
||||
private void transfer1_TransferChanged(object sender, AntdUI.Transfer.TransferEventArgs e)
|
||||
{
|
||||
// 更新源列表和目标列表的数量显示
|
||||
label_source.Text = $"源列表: {e.SourceItems.Count}项";
|
||||
label_target.Text = $"目标列表: {e.TargetItems.Count}项";
|
||||
label_source.Suffix = e.SourceItems.Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
label_target.Suffix = e.TargetItems.Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
}
|
||||
|
||||
private void Transfer1_Search(object sender, AntdUI.Transfer.SearchEventArgs e)
|
||||
private void transfer1_Search(object sender, AntdUI.Transfer.SearchEventArgs e)
|
||||
{
|
||||
// 搜索事件处理
|
||||
string listType = e.IsSource ? "源列表" : "目标列表";
|
||||
AntdUI.Message.info(FindForm(), $"{listType}搜索: {e.SearchText}");
|
||||
}
|
||||
|
||||
private void Switch_oneWay_CheckedChanged(object sender, EventArgs e)
|
||||
private void switch_oneWay_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
// 设置是否单向模式
|
||||
transfer1.OneWay = switch_oneWay.Checked;
|
||||
}
|
||||
|
||||
private void Switch_search_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
// 设置是否显示搜索框
|
||||
//transfer1.ShowSearch = switch_search.Checked;
|
||||
}
|
||||
|
||||
private void btn_reload_Click(object sender, EventArgs e)
|
||||
{
|
||||
// 重新加载数据
|
||||
var items = new List<AntdUI.TransferItem>();
|
||||
Random random = new Random();
|
||||
int count = random.Next(5, 15);
|
||||
|
||||
for (int i = 1; i <= count; i++)
|
||||
{
|
||||
items.Add(new AntdUI.TransferItem($"新选项{i}", i));
|
||||
}
|
||||
int count = random.Next(10, 40);
|
||||
var items = new List<AntdUI.TransferItem>(count);
|
||||
for (int i = 1; i <= count; i++) items.Add(new AntdUI.TransferItem(AntdUI.Localization.Get("Transfer.Option", "新选项") + i, i));
|
||||
|
||||
transfer1.Items = items;
|
||||
transfer1.Reload();
|
||||
|
||||
// 更新源列表和目标列表的数量显示
|
||||
label_source.Text = $"源列表: {transfer1.GetSourceItems().Count}项";
|
||||
label_target.Text = $"目标列表: {transfer1.GetTargetItems().Count}项";
|
||||
label_source.Suffix = transfer1.GetSourceItems().Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
label_target.Suffix = transfer1.GetTargetItems().Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
}
|
||||
|
||||
public void HandleEvent(AntdUI.EventType id, object tag)
|
||||
{
|
||||
switch (id)
|
||||
{
|
||||
case AntdUI.EventType.LANG:
|
||||
label_source.Suffix = transfer1.GetSourceItems().Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
label_target.Suffix = transfer1.GetTargetItems().Count + AntdUI.Localization.Get("Transfer.Items", "项");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}// This file was created by the assistant
|
||||
}
|
||||
@@ -801,6 +801,29 @@ namespace Demo
|
||||
case "Watermark.btnClear":
|
||||
return "Clear watermark";
|
||||
|
||||
case "Transfer.Text":
|
||||
return "Transfer";
|
||||
case "Transfer.Description":
|
||||
return "Double column transfer choice box.";
|
||||
case "Transfer.One":
|
||||
return "One Way";
|
||||
case "Transfer.Reload":
|
||||
return "Reload";
|
||||
case "Transfer.Items":
|
||||
return " items";
|
||||
case "Transfer.Content":
|
||||
return "content";
|
||||
case "Transfer.Option":
|
||||
return "option";
|
||||
case "Transfer.Source":
|
||||
return "Source";
|
||||
case "Transfer.Target":
|
||||
return "Target";
|
||||
case "Transfer.SourceT":
|
||||
return "Source: ";
|
||||
case "Transfer.TargetT":
|
||||
return "Target: ";
|
||||
|
||||
//Chart ----------------------------
|
||||
case "Chart.Text":
|
||||
return "Chart";
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user