using Net; 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; using TouchSocket.Dmtp.FileTransfer; namespace FileSend { public partial class PushFilePanel : Form { public PushFilePanel(int num) { InitializeComponent(); Log.LogEvent += UpdateLog; progressBar_PushProgress.Value = 0; label_PushProgress.Text = string.Empty; } private void UpdateLog(string obj) { listView_Log.Items.Add(obj); } private void button_ClearLog_Click(object sender, EventArgs e) { listView_Log.Clear(); } private void button_ChooseFile_Click(object sender, EventArgs e) { OpenFileDialog fileDialog = new OpenFileDialog(); fileDialog.Filter = "全部文件(*.*)|*.*"; // "DataBank(*.xml)|*.xml|全部文件(*.*)|*.*" fileDialog.InitialDirectory = NetHelper.ServerRootPath; fileDialog.Multiselect = true; fileDialog.ShowDialog(); listView_Files.Scrollable = true; listView_Files.View = View.Details; listView_Files.Columns.Clear(); var columnHeader = new ColumnHeader("FileName"); columnHeader.Name = "FileName"; columnHeader.Text = "FileName"; listView_Files.Columns.Add(columnHeader); columnHeader.Width = listView_Files.Width - 20; // Control t = listView_Files; // while (t.Parent != null) // t = t.Parent; // t.SizeChanged += (o, args) => // { // columnHeader.Width = listView_Files.Width-20; // }; foreach (var fileName in fileDialog.FileNames) { var split = fileName.Split(@"\"); var listViewItem = new ListViewItem(fileName); listView_Files.Items.Add(listViewItem); pushFileInfos.Add(new PushFileInfo() { fileName = split[^1], filePath = fileName, index = listView_Files.Items.Count - 1 }); } label_ChooseCount.Text = $@"共选择了{fileDialog.FileNames.Length}个文件!"; if (fileDialog.FileNames.Length > 0) Log.Debug($"选择了{fileDialog.FileNames.Length}个文件!"); else Log.Debug($"取消选择!"); } private async void button_Push_Click(object sender, EventArgs e) { try { if (NetHelper.IsServer) { // NetHelper.Server } else { Log.Debug($"开始推送文件!"); foreach (var info in pushFileInfos) { var result = await NetHelper.Client.SendFileAsync(info.filePath, UpdateProgress); if (!result) { Log.Debug($@"{info.fileName}上传失败! "); MessageBox.Show($@"{info.fileName}上传失败! "); continue; } else if (result) { Log.Debug($@"{info.fileName}上传成功! "); MessageBox.Show($@"{info.fileName}上传成功! "); listView_Files.Items[info.index].ForeColor = Color.Green; } } } } catch (Exception exception) { MessageBox.Show(exception.Message); } } private void UpdateProgress(string msg) { //long speed = NetHelper.Client.GetSendSpeed(); //float progress = NetHelper.Client.GetSendProgress(); //label_PushProgress.Text = $@"进度:{progress},速度:{speed}Mb/s"; Invoke(() => { label_PushProgress.Text = msg; Log.Debug($@"{msg}"); }); } private void listView_Files_SelectedIndexChanged(object sender, EventArgs e) { } private void button_OpenLogFile_Click(object sender, EventArgs e) { MessageBox.Show(@"待添加内容!"); Log.Debug(@"待添加内容!"); } private void listView_Log_SelectedIndexChanged(object sender, EventArgs e) { } private void progressBar_PushProgress_Click(object sender, EventArgs e) { MessageBox.Show(@"待添加内容!"); } private void button_Setting_Click(object sender, EventArgs e) { Setting setting = new Setting(); setting.Show(); } private void button_ClearFiles_Click(object sender, EventArgs e) { listView_Files.Clear(); } } public class PushFileInfo { public string fileName; public string filePath; public int index; } }