form1.cs

来自「银行家算法 具有详细的说明文档 可供学生朋友使用和学习」· CS 代码 · 共 2,196 行 · 第 1/5 页

CS
2,196
字号
					MessageBox.Show("用户原密码错误。");
				}
				else
				{
					if(NewPassWord1!=NewPassWord2)
					{
						MessageBox.Show("两次输入的密码不相同。");
					}
					else
					{
						bool result=UserList.EditPassword(G_UserName,G_PassWord,NewPassWord1);
						if(result==true)
						{
							G_PassWord=NewPassWord1;
							MessageBox.Show("密码修改成功。");
						}
						else
						{
							MessageBox.Show("密码修改失败。");
						}
					}
				}
			}
		}

		private void menuNewFile_Click(object sender, System.EventArgs e)
		{
			menuPasteFile.Enabled=false;
			menuPasteFolder.Enabled=false;
			if(G_Shared==true)
			{
				MessageBox.Show("共享文件夹不允许创建文件。");
				return;
			}
			FrmNewFile frmNewFile=new FrmNewFile();
			if(frmNewFile.ShowDialog()==DialogResult.OK)
			{
				string FileName=frmNewFile.FileName;
				string FileType=frmNewFile.Type;
				int Length=frmNewFile.Length;
				if(FileName==""||FileType=="")
				{
					MessageBox.Show("文件名称或类型不能为空值。");
					return;
				}
				else
				{
					bool result=G_Folder.AddFile(FileName,FileType,Length);
					if(result==true)
					{
						MessageBox.Show("新建文件成功。");
						ListViewItem item=new ListViewItem(FileName);
						item.SubItems.Add(Length.ToString());
						item.SubItems.Add(FileType);
						item.SubItems.Add(((FileInfo)G_Folder.FileList[G_Folder.FileList.Count-1]).CreateTime.ToString());
						if(FileType.ToLower()=="txt")
						{
							item.ImageIndex=0;
						}
						if(FileType.ToLower()=="exe")
						{
							item.ImageIndex=1;
						}
						if(FileType.ToLower()!="txt"&&FileType.ToLower()!="exe")
						{
							item.ImageIndex=2;
						}
						listView1.Items.Add(item);
					}
					else
					{
						MessageBox.Show("新建文件失败。");
					}
				}
			}
		}

		private void menuNewFolder_Click(object sender, System.EventArgs e)
		{
			menuPasteFile.Enabled=false;
			menuPasteFolder.Enabled=false;
			if(G_Shared==true)
			{
				MessageBox.Show("共享文件夹不允许创建文件夹。");
				return;
			}
			FrmNewFolder frmNewFolder=new FrmNewFolder();
			if(frmNewFolder.ShowDialog()==DialogResult.OK)
			{
				string FolderName=frmNewFolder.FolderName;
				if(FolderName=="")
				{
					MessageBox.Show("文件夹名称不能为空。");
					return;
				}
				else
				{
					bool result=G_Folder.AddFolder(FolderName);
					if(result==true)
					{
						MessageBox.Show("新建文件夹成功。");
						UserInfo userInfo=(UserInfo)UserList.UserList[G_UserIndex];
						userInfo.GeneralTreeView(treeView1.Nodes[0]);
					}
					else
					{
						MessageBox.Show("新建文件夹失败。");
					}
				}
			}
		}

		private void treeView1_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
		{
			UserInfo userInfo=(UserInfo)UserList.UserList[G_UserIndex];
			tbAdr.Text=e.Node.FullPath;
			if(e.Node.FullPath.StartsWith("共享"))
			{
				G_Shared=true;
				SetSharedFolder(e.Node.FullPath);
			}
			else
			{
				G_Shared=false;
				SetCurrentFolder(e.Node.FullPath,userInfo.Folder);
			}
		}

		private bool SetCurrentFolder(string _FullPath,FolderInfo _dir)
		{
			string FullPath=_FullPath;
			int index=FullPath.IndexOf("\\");
			if(index>=0)
			{
				FullPath=FullPath.Remove(0,index+1);
				index=FullPath.IndexOf("\\");
				string shortname;
				if(index>=0)
				{
					shortname=FullPath.Substring(0,index);
				}
				else
				{
					shortname=FullPath;
				}
				foreach(Object obj in _dir.FolderList)
				{
					FolderInfo dir=(FolderInfo)obj;
					if(dir.Name==shortname)
					{
						if(SetCurrentFolder(FullPath,dir)==true)
						{
							return true;
						}
					}
				}
				return false;
			}
			else
			{
				if(_dir.Name==_FullPath)
				{
					G_Folder=_dir;
					_dir.GeneralListView(listView1);
					return true;
				}
				else
				{
					return false;
				}
			}
		}

		private void SetSharedFolder(string _FullPath)
		{
			string FullPath=_FullPath;
			int index=FullPath.IndexOf("\\");
			if(index>=0)
			{
				FullPath=FullPath.Remove(0,index+1);
				index=FullPath.IndexOf("\\");
				if(index>=0)
				{
					string username=FullPath.Substring(0,index);
					FullPath=FullPath.Remove(0,index+1);
					index=UserList.FindUser(username);
					UserInfo user=(UserInfo)UserList.UserList[index];
					index=FullPath.IndexOf("\\");
					string firstFolder;
					if(index>=0)
					{
						firstFolder=FullPath.Substring(0,index);
					}
					else
					{
						firstFolder=FullPath;
					}
					foreach(Object obj in user.SharedList)
					{
						SharedFolderRecord rec=(SharedFolderRecord)obj;
						if(rec.GetLastName()==firstFolder)
						{
							if(rec.PassWord!=""&&username!=G_UserName)
							{
								FrmRename frmInputPassWord=new FrmRename();
								frmInputPassWord.Text="请输入"+rec.GetLastName()+"文件夹的访问密码";
								frmInputPassWord.label1.Text="访问密码:";
								frmInputPassWord.textNewName.PasswordChar='*';
								DialogResult result=frmInputPassWord.ShowDialog();
								//不明白为什么G_Shared的值在这里会改变
								G_Shared=true;
								if(result==DialogResult.OK)
								{
									if(frmInputPassWord.NewName==rec.PassWord)
									{
										SetCurrentFolder(rec.FullPath,user.Folder);
									}
									else
									{
										MessageBox.Show("访问密码错误!");
										listView1.Items.Clear();
										return;
									}
								}
								else
								{
									listView1.Items.Clear();
									return;
								}
							}
							else
							{
								SetCurrentFolder(rec.FullPath,user.Folder);
							}
					
						}
					}
					/*string shortname;
					if(index>=0)
					{
						shortname=FullPath.Substring(0,index);
					}
					else
					{
						shortname=FullPath;
					}
					foreach(Object obj in _dir.FolderList)
					{
						FolderInfo dir=(FolderInfo)obj;
						if(dir.Name==shortname)
						{
							SetCurrentFolder(FullPath,dir);
						}
					}*/
				}
				//选中的是“共享”下面的“用户”节点
				else
				{
					index=UserList.FindUser(FullPath);
					UserInfo user=(UserInfo)UserList.UserList[index];
					//G_Folder=user.SharedFolder;
					//G_Folder.GeneralListView(listView1);
					listView1.Items.Clear();
				}
			}
			//选中的是“共享”节点
			else
			{
				listView1.Items.Clear();
			}

		}

		private void menuDelFile_Click(object sender, System.EventArgs e)
		{
			string FileName;
			menuPasteFile.Enabled=false;
			menuPasteFolder.Enabled=false;
			if(G_Shared==true)
			{
				MessageBox.Show("共享文件夹不允许删除文件。");
				return;
			}
			try
			{
				FileName=listView1.SelectedItems[0].Text;
			}
			catch(Exception)
			{
				MessageBox.Show("选择要删除的文件有误。");
				return;
			}
			string Type=listView1.SelectedItems[0].SubItems[2].Text;
			if(MessageBox.Show("是否删除文件"+FileName+"."+Type,"确认删除",MessageBoxButtons.OKCancel,MessageBoxIcon.Question)==DialogResult.OK)
			{
				bool result=G_Folder.DelFile(FileName,Type);
				if(result==true)
				{
					MessageBox.Show("操作成功。");
					G_Folder.GeneralListView(listView1);
				}
				else
				{
					MessageBox.Show("操作失败。");
				}
			}
		}

		private void menuRenameFile_Click(object sender, System.EventArgs e)
		{
			string OldName;
			string OldType;
			menuPasteFile.Enabled=false;
			menuPasteFolder.Enabled=false;
			if(G_Shared==true)
			{
				MessageBox.Show("共享文件夹不允许重命名文件。");
				return;
			}
			try
			{
				OldName=listView1.SelectedItems[0].Text;
				OldType=listView1.SelectedItems[0].SubItems[2].Text;
			}
			catch(Exception)
			{
				MessageBox.Show("选择要重命名的文件有误。");
				return;
			}
			FrmNewFile frmNewFile=new FrmNewFile();
			frmNewFile.Text="文件重命名";
			frmNewFile.label3.Visible=false;
			frmNewFile.cbLength.Visible=false;
			frmNewFile.nudLength.Visible=false;
			if(frmNewFile.ShowDialog()==DialogResult.OK)
			{
				string NewName=frmNewFile.FileName;
				string NewType=frmNewFile.Type;
				if(NewName==""||NewType=="")
				{
					MessageBox.Show("文件名称和类型不能为空。");
					return;
				}
				bool result=G_Folder.RenameFile(OldName,OldType,NewName,NewType);
				if(result==true)
				{
					MessageBox.Show("文件重命名成功。");
					G_Folder.GeneralListView(listView1);
				}
				else
				{
					MessageBox.Show("文件重命名失败。");
				}
			}
		}

		private void listView1_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
		{
			if (e.Column==this.sorter.SortColumn)
			{
				if (this.sorter.SortOrder==SortOrder.Ascending)
					this.sorter.SortOrder=SortOrder.Descending;
				else
					if (this.sorter.SortOrder==SortOrder.Descending)
						this.sorter.SortOrder=SortOrder.Ascending;
					else
						return;
			}
			else
			{
				this.sorter.SortColumn=e.Column;
			}
			this.listView1.Sort();
		}

		private void menuOutputExample_Click(object sender, System.EventArgs e)
		{
			OpenFileDialog ofd=new OpenFileDialog();
			string FileName="Example.bin";
			ofd.Title="导出示例文件";
			ofd.CheckFileExists=false;
			ofd.Filter="示例文件(*.bin)|*.bin";
			ofd.Multiselect=false;
			ofd.DefaultExt="bin";
			if(ofd.ShowDialog()!=DialogResult.OK)
			{
				return;
			}
			FileName=ofd.FileName;
			try
			{
				IFormatter formatter = new BinaryFormatter();
				Stream stream = new FileStream(FileName, FileMode.Create,FileAccess.Write, FileShare.None);
				formatter.Serialize(stream,UserList);
				stream.Close();
				MessageBox.Show("导出示例成功。");
			}
			catch(Exception Ex)
			{
				MessageBox.Show(Ex.Message);
				MessageBox.Show("导出示例错误。");
			}

		}

		private void menuInputExample_Click(object sender, System.EventArgs e)
		{
			OpenFileDialog ofd=new OpenFileDialog();
			string FileName="Example.bin";
			ofd.Title="导入示例文件";
			ofd.CheckFileExists=true;
			ofd.Filter="示例文件(*.bin)|*.bin";
			ofd.Multiselect=false;
			ofd.DefaultExt="bin";
			if(ofd.ShowDialog()!=DialogResult.OK)
			{
				return;
			}
			FileName=ofd.FileName;
			try
			{
				IFormatter formatter = new BinaryFormatter();
				Stream stream = new FileStream(FileName, FileMode.Open,FileAccess.Read, FileShare.Read);
				UserList=(UserCollection)formatter.Deserialize(stream);
				stream.Close();
				MessageBox.Show("导入示例成功。");
			}
			catch(Exception Ex)
			{
				MessageBox.Show(Ex.Message);
				MessageBox.Show("导入示例失败");
			}
		}

		private void menuRenameFolder_Click(object sender, System.EventArgs e)
		{
			menuPasteFile.Enabled=false;
			menuPasteFolder.Enabled=false;
			if(G_Shared==true)
			{

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?