winform密码管理专家(xml文件显示导入,导出.数据的新增,删除.窗体的渐变,托盘)...

1.启动窗体,以及渐变效果:
启动窗体中设置一个图片,将图片的deck属性设置为:FILL.将窗体的formbordstyle设置为none.并且设置一个timer将timer的enable属性设置为true.设置timer_tick:
         private   void  timerStart_Tick( object  sender, EventArgs e)
        
{
            
//设置图片透明度
            if (this.Opacity > 0.01)
            
{
                
this.Opacity = this.Opacity - 0.01;
            }

            
else
            
{
                
this.timerStart.Enabled = false;
                
this.Hide();
                PersonalEdition personalEdition 
= new PersonalEdition();
                personalEdition.Show();
            }

        }
2.主窗体的设置,各种按钮的设置(略)
menu的设置,toolstrip的设置.
menu中设置快捷键:&?
menuitem中设置快捷键:通过属性来设置
退出窗口:Application.Exit();
如果要通过FORM中的扠扠来退出窗口关闭整个进程,就重写方法:
         private   void  PersonalEdition_FormClosed( object  sender, FormClosedEventArgs e)
        
{
            
//整个进程关闭
            Application.Exit();
            
//当前窗体关闭
            
//this.Close();
            
//this.Dispose();
        }

3.XML数据的显示,导入,导出:
要读取xml必须要有一个datagridview来显示,另外通过DATASET来连接:
显示代码.导入,导出代码如下:
  public  PersonalEdition()
        
{
            InitializeComponent();
            
this.skinEngine1.SkinFile = "DiamondGreen.ssk";
             
//加载XML文件
            dsXml.ReadXml("UserKey.xml");
            
//取得数据表
            dgUserKey.DataSource = dsXml.Tables["UserKey"];
            
//对数据表中的第一个字段修改名称和宽度
            dgUserKey.Columns[0].HeaderText = "序号";
            dgUserKey.Columns[
0].Width = 52;

            dgUserKey.Columns[
1].HeaderText = "标题";
            dgUserKey.Columns[
2].HeaderText = "网址";
            dgUserKey.Columns[
3].HeaderText = "用户名";
            dgUserKey.Columns[
4].HeaderText = "密码";
            dgUserKey.Columns[
5].HeaderText = "更新日期";
            
            dgUserKey.Columns[
1].Width = 85;
            dgUserKey.Columns[
2].Width = 155;
            dgUserKey.Columns[
3].Width = 75;
            dgUserKey.Columns[
4].Width = 75;
            dgUserKey.Columns[
5].Width = 120;

        }

        
private   void  导入ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            Hide();
            
if (DiaFile.ShowDialog() == DialogResult.OK)
            
{
                
if (DiaFile.OpenFile() != null)
                
{
                    
//读取要导入的XML!
                    dsXMLTwo.ReadXml(@DiaFile.FileName);
                    
//定义了一个DataRow行,这个行是遍历dsXMLTwo.Tables["UserKey"].Rows得到的!
                    foreach (DataRow twoRow in dsXMLTwo.Tables["UserKey"].Rows)
                    
{
                        
//新增加一行
                        DataRow newRow = dsXml.Tables["UserKey"].NewRow();
                        
//这一行的每一个拦位的设定
                        newRow["Number"= twoRow["Number"];
                        newRow[
"Title"= twoRow["Title"];
                        newRow[
"NetAdd"= twoRow["NetAdd"];
                        newRow[
"Name"= twoRow["Name"];
                        newRow[
"Key"= twoRow["Key"];
                        newRow[
"UpdateTime"= twoRow["UpdateTime"];
                        
//将这一行加到dsXml的UserKey表中去!
                        dsXml.Tables["UserKey"].Rows.Add(newRow);
                    }

                    
int n = dsXml.Tables["UserKey"].Rows.Count;
                    
for (int i = 0; i < n; i++)
                    
{
                        
//改所有的NUMBER的内容!把它从1加到N 
                        dsXml.Tables["UserKey"].Rows[i]["Number"= i + 1;
                    }

                    
//将数据集表中的数据写到XML中去!
                    dsXml.WriteXml(@"UserKey.xml");
                    
this.Visible = true;
                    MessageBox.Show(
"文件导入成功!""浪曦提醒");
                }

            }

            
            
else
            
{
                
this.Visible = true;
            }


        }

       
private   void  导出ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            Hide();
            
//diaSaveFile.ShowDialog()是表示显示Dialog
            
//DialogResult.OK表示点击了OK键
            if (diaSaveFile.ShowDialog() == DialogResult.OK)
            
{
                
//@表示要保存的地址在于什么地方
                
//diaSaveFile.FileName就是要保存的地方
                dsXml.WriteXml(@diaSaveFile.FileName);
                
this.Visible = true;
                MessageBox.Show(
"保存成功!""浪曦提醒");
            }

            
else
            
{
                
this.Visible = true;
            }

        }

4,数据的增删改查:
主程序中:
         private   void  添加ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            
//传入数据集dsXml
            KeyAdd keyAdd = new KeyAdd(dsXml);
            keyAdd.ShowDialog();
        }


        
private   void  修改ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            
//dgUserKey是datagridview,从它上边得到序号
            int n = dgUserKey.CurrentRow.Index;
            
//定位纵坐标,将内容提取出来[0, n]第一列就是0,行号就是他的序号,第几个!
            dgUserKey.CurrentCell = dgUserKey[0, n];
            
//将这个定位上边的值得到,实际上就是得到当前行的序号
            string id = dgUserKey.CurrentCell.Value.ToString();
            KeyModi keyModi 
= new KeyModi(id,dsXml);

            keyModi.ShowDialog();
        }


        
private   void  删除ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            
string message = "您确实要删除选定记录吗?";
            
string caption = "浪曦提醒";
            MessageBoxButtons buttons 
= MessageBoxButtons.YesNo;
            DialogResult result;
            
//new出一个yesno确认消息框
            result = MessageBox.Show(this, message, caption, buttons, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
            
//如果消息框为yes,则要执行删除功能
            if (result == DialogResult.Yes)
            
{
                
//取得当前的值
                int m = dgUserKey.CurrentRow.Index;
                
//得到表中剩余的行数
                int n = dsXml.Tables["UserKey"].Rows.Count;
                
if (n == 1)
                
{
                    MessageBox.Show(
"对不起,至少预留一条记录!""浪曦提醒");
                }

                
else
                
{
                    
foreach (DataRow dsRow in dsXml.Tables["UserKey"].Rows)
                    
{
                        
if (dsRow["Number"].ToString() == Convert.ToString(m + 1))
                        
{
                            dsRow.Delete();
                            
//重新对剩余的数据设置序号
                            for (int i = 0; i < n - 1; i++)
                            
{
                                dsXml.Tables[
"UserKey"].Rows[i]["Number"= i + 1;
                            }

                            dsXml.WriteXml(
@"UserKey.xml");
                            MessageBox.Show(
"删除成功""浪曦提醒");
                            
return;
                        }

                    }

                }

            }

        }
keyadd.cs
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  LangKeyExpert
{
    
public partial class KeyAdd : Form
    
{
        
private DataSet dsXml;
        
//初始化构造函数的时候传如一个数据集(DataSet d)
        public KeyAdd(DataSet d)
        
{
            InitializeComponent();
            dsXml 
= d;
            
//得到表的行数
            int n = dsXml.Tables["UserKey"].Rows.Count;
            
//显示到lblNumber中
            this.lblNumber.Text = Convert.ToString(n + 1);
            txtNet.Text 
= "http://";
        }


        
private void KeyAdd_Load(object sender, EventArgs e)
        
{

        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            
//单击返回就关闭这个窗体
            this.Close();
        }


        
private void button1_Click(object sender, EventArgs e)
        
{
            
if (txtTitle.Text == "")
            
{
                MessageBox.Show(
"对不起,标题不能为空""浪曦提醒");
                
return;
            }

            DataRow newRow 
= dsXml.Tables["UserKey"].NewRow();
            newRow[
"Number"= this.lblNumber.Text;
            newRow[
"Title"= this.txtTitle.Text;
            newRow[
"NetAdd"= txtNet.Text;
            newRow[
"Name"= txtName.Text;
            newRow[
"Key"= txtPwd.Text;
            newRow[
"UpdateTime"= System.DateTime.Now.ToString();
            dsXml.Tables[
"UserKey"].Rows.Add(newRow);
            dsXml.WriteXml(
@"UserKey.xml");
            MessageBox.Show(
"添加成功!""浪曦提醒");
            
this.Close();
        }

    }

}
keymidi.cs
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  LangKeyExpert
{
    
public partial class KeyModi : Form
    
{
        
        
private DataSet dsNewXML;
        
public KeyModi(string id, DataSet d)
        
{
            InitializeComponent();
            
//得到dataset
            dsNewXML = d;
            
foreach (DataRow dsRow in dsNewXML.Tables["UserKey"].Rows)
            
{
                
if (dsRow["Number"].ToString() == id)
                
{
                    
this.label1.Text = id;
                    
this.txtTitle.Text = dsRow["Title"].ToString();
                    
this.txtNet.Text = dsRow["NetAdd"].ToString();
                    
this.txtName.Text = dsRow["Name"].ToString();
                    
this.txtPwd.Text = dsRow["Key"].ToString();
                    
return;
                }

            }

        }


        
private void button2_Click(object sender, EventArgs e)
        
{
            
this.Close();
        }



        
private void button1_Click_1(object sender, EventArgs e)
        
{
            
if (this.txtTitle.Text == "")
            
{
                MessageBox.Show(
"对不起,标题不能为空!""浪曦友情提示");
                
return;
            }

            
if (this.txtNet.Text == "")
            
{
                MessageBox.Show(
"对不起,网址不能为空!""浪曦友情提示");
                
return;
            }

            
foreach (DataRow dsRow in dsNewXML.Tables["UserKey"].Rows)
            
{
                
if (dsRow["Number"].ToString() == this.label1.Text)
                
{
                    dsRow[
"Title"= this.txtTitle.Text;
                    dsRow[
"NetAdd"= this.txtNet.Text;
                    dsRow[
"Name"= this.txtName.Text;
                    dsRow[
"Key"= this.txtPwd.Text;
                    dsNewXML.WriteXml(
@"UserKey.xml");
                    MessageBox.Show(
"修改成功!""浪曦友情提示");
                    
this.Close();
                    
return;
                }

            }

        }



    }

}

5.实现单机datagridview中一个显示网址的窗口后弹出IE并登陆,双击密码和用户名时复制
并且都在右下边弹出提示窗口info.cs
主程序:
         private   void  dgUserKey_CellContentDoubleClick( object  sender, DataGridViewCellEventArgs e)
        
{
            
//判断所点击的单元格的标题是什么
            if (dgUserKey.Columns[e.ColumnIndex].HeaderText == "网址")
            
{
                
string url = dgUserKey.CurrentCell.Value.ToString();
                
//打开网址
                System.Diagnostics.Process.Start(url);
                
//生成showinfo右下边的一个小提示框
                ShowInfo showForm = new ShowInfo("正在打开网页,请稍等");
                showForm.Show();
                
return;
            }


            
if (dgUserKey.Columns[e.ColumnIndex].HeaderText == "用户名")
            
{
                
string name = dgUserKey.CurrentCell.Value.ToString();
                
//设置到减切版中
                Clipboard.SetText(name);
                ShowInfo showForm 
= new ShowInfo("用户名已复制到剪贴板");
                showForm.Show();
                
return;
            }


            
if (dgUserKey.Columns[e.ColumnIndex].HeaderText == "密码")
            
{
                
string key = dgUserKey.CurrentCell.Value.ToString();
                
//设置到减切版中
                Clipboard.SetText(key);
                ShowInfo showForm 
= new ShowInfo("密码已复制到剪贴板");
                showForm.Show();
                
return;
            }

        }
showinfo.cs
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;

namespace  LangKeyExpert
{
    
public partial class ShowInfo : Form
    
{
        
private static int n;
        
public ShowInfo(string lblInf)
        
{
            InitializeComponent();
            
//他杂最外层显示
            this.TopMost = true;
            
this.lblInfo.Text = lblInf;
             n 
= Screen.PrimaryScreen.WorkingArea.Height;
            
//横坐标,桌面的宽度-窗体宽度Screen.PrimaryScreen.WorkingArea.Width - 210,WorkingArea不包括任务拦
            
//纵坐标: 初始是:也就是没有Screen.PrimaryScreen.WorkingArea.Height
            this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - 210, Screen.PrimaryScreen.WorkingArea.Height);
        
        }


        
private void ShowInfo_Load(object sender, EventArgs e)
        
{

        }


        
private void timUp_Tick(object sender, EventArgs e)
        
{
            
//Location.Y窗体的距离Screen.PrimaryScreen.WorkingArea.Height - 160正好是他显示出来的高度
            if (this.Location.Y > Screen.PrimaryScreen.WorkingArea.Height - 160)
            
{
                
//如果大于就让他上升
                this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - 210, n - 1);
                n 
-= 1;
            }

            
else
            
{
                
//当不大了之后就停掉第一个TIMER,运行第二个Timer
                timUp.Enabled = false;
                timMid.Enabled 
= true;
            }

        }


        
private void timMid_Tick(object sender, EventArgs e)
        
{
            timMid.Enabled 
= false;
            timDow.Enabled 
= true;
        }


        
private void timDow_Tick(object sender, EventArgs e)
        
{
            
if (this.Location.Y < Screen.PrimaryScreen.WorkingArea.Height)
            
{
                
this.Location = new Point(Screen.PrimaryScreen.WorkingArea.Width - 210, n + 1);
                n 
+= 1;
            }

            
else
            
{
                timDow.Enabled 
= false;
                
this.Close();
            }

        }


    }

}

6.托盘的显示:

        
private   void  PersonalEdition_SizeChanged( object  sender, EventArgs e)
        
{
            
if (this.WindowState == FormWindowState.Minimized)
            
{
                
this.Hide();
                
this.notifyIcon1.Visible = true;
            }

        }


        
private   void  notifyIcon1_MouseDown( object  sender, MouseEventArgs e)
        
{
            
//判断鼠标左键单击
            if (e.Button == MouseButtons.Left)
            
{
                
this.Visible = true;
                
//窗体的转态设置为nomal
                this.WindowState = FormWindowState.Normal;
                
this.notifyIcon1.Visible = false;
            }

        }


        
private   void  显示ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            
this.Visible = true;
            
this.WindowState = FormWindowState.Normal;
            
this.notifyIcon1.Visible = false;
        }


        
private   void  退出ToolStripMenuItem1_Click( object  sender, EventArgs e)
        
{
            Application.Exit();
        }


7.帮助,关于 :

   

         private   void  关于ToolStripMenuItem_Click( object  sender, EventArgs e)
        
{
            Info info 
= new Info();
            info.Show();
        }


        
private   void  toolStripButton7_Click( object  sender, EventArgs e)
        
{
            关于ToolStripMenuItem_Click(sender, e);
       
        }

转载于:https://www.cnblogs.com/sorry208/articles/941682.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值