天天看点

c# 对话框交换数据

 本例是一个管理联系人信息的小程序,程序有两个窗体,一个主窗体,在listview控件中显示联系人信息列表,一个对话框窗体,用来显示和修改 某个联系人的信息。通过主窗体的菜单命令,可以打开对话框,并把主窗体listview中的当前选中的联系人数据传递给对话框,在对话框中可以对联系人信 息进行修改,修改完毕后,单击确定按钮,主窗体根据用户在对话框中的输入更新listview空间

1.创建一个windows应用程序

2.在项目中添加联系人类。如下

[c-sharp] view plain copy print?

 public class conntactpeople  

   {  

       private String _name;  

       public String name  

       {  

           get { return _name; }  

           set { _name = value; }  

       }  

       private bool _isFemale=false;  

       public  bool isFemale  

           get { return _isFemale; }  

           set { _isFemale = value; }  

       private DateTime _dateOfBirth;  

public DateTime dateOfBirth  

{  

    get { return _dateOfBirth;}  

    set { _dateOfBirth = value;}  

}  

   private String _company;  

   public String company  

       get { return _company; }  

       set { _company = value; }  

   }  

   private String _telephone;  

   public String telephone  

       get { return _telephone; }  

       set { _telephone = value; }  

3.添加一个窗体对话框

4.在contactDialog窗体的load时间中,对窗体进行初始化。代码如下

button1.DialogResult = DialogResult.OK;  

button2.DialogResult = DialogResult.Cancel;  

5.在contactDialog类中,添加一个Contact类型的属性,用来与外界交换数据。代码如下:

private conntactpeople _contact;  

 public conntactpeople contact  

 {  

     get   

     {  

         conntactpeople c = new conntactpeople();  

         c.name = textBox1.Text;  

         c.company = textBox2.Text;  

         c.dateOfBirth = dateTimePicker1.Value;  

         c.telephone = maskedTextBox2.Text;  

         c.isFemale = radioButton2.Checked;  

         return c;  

     }  

     set   

         textBox1.Text = value.name;  

         radioButton2.Checked = value.isFemale;  

         radioButton1.Checked = !value.isFemale;  

         dateTimePicker1.Value = value.dateOfBirth;  

         textBox2.Text = value.company;  

         maskedTextBox2.Text = value.telephone;  

 }  

6.在主船体中添加listview空间,以及ContextMenustrip空间,添加菜单项:添加,删除,修改。并把listview的ContextMenuStrip设置为此菜单。此时,主窗体就可以用Contact类了。

7.在主窗体的load事件添加代码:

 listView1.View = View.Details;  

 listView1.GridLines=true;  

 listView1.Columns.Add("姓名", 80);  

 //listView1.co  

 listView1.Columns.Add("性别", 40);  

 listView1.Columns.Add("出生日期", 100);  

 listView1.Columns.Add("工作单位",160);  

 listView1.Columns.Add("联系电话", 100);  

 listView1.HideSelection = true;  

 listView1.FullRowSelect = true;  

ContactDialog dialog = new ContactDialog();  

dialog.Owner = this;  

8.主窗体中的添加,删除,更新按钮中添加相应代码即可

private void 添加ToolStripMenuItem_Click(object sender, EventArgs e)  

   ContactDialog dialog = new ContactDialog();  

  //  dialog.contact = null;  

    if (dialog.ShowDialog()==DialogResult.OK)  

    {  

        addContact(dialog.contact);  

    }  

//添加函数  

private void addContact(conntactpeople c)  

    ListViewItem item = listView1.Items.Add(c.name);  

    updateContact(item, c);  

//更新函数  

private void updateContact(ListViewItem item,conntactpeople c)  

    item.SubItems.Clear();  

    //item.SubItems.c  

    item.Text = c.name;  

    if (c.isFemale)  

        item.SubItems.Add("女");  

    else  

        item.SubItems.Add("男");  

    item.SubItems.Add(c.dateOfBirth.ToString("yyyy-MM-dd"));  

    item.SubItems.Add(c.company);  

    item.SubItems.Add(c.telephone);  

private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)  

    if (listView1.SelectedIndices.Count>0)  

        if (MessageBox.Show("ni"+listView1.Items[listView1.SelectedIndices[0]].Text+"ma?","dd",MessageBoxButtons.YesNoCancel)==DialogResult.Yes)  

        {  

            listView1.Items.RemoveAt(listView1.SelectedIndices[0]);  

          //  listView1.Items.RemoveAt(listView1.SelectedIndices[])  

        }  

private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)  

    if (listView1.SelectedIndices.Count==0)  

        MessageBox.Show("请选择要修改的人");  

        return;  

    conntactpeople c = new conntactpeople();  

    ListViewItem item = listView1.SelectedItems[0];  

    c.name = item.Text;  

    //item.SubItems[];  

    c.isFemale=(item.SubItems[1].Text=="女");  

    try  

        c.dateOfBirth = DateTime.Parse(item.SubItems[2].Text.ToString());  

    catch  

        System.Diagnostics.Trace.Write(c.dateOfBirth);  

        MessageBox.Show(item.SubItems[2].Text);  

        //System.Diagnostics.Trace(item.SubItems[1].Text);  

    c.company = item.SubItems[3].Text;  

    c.telephone = item.SubItems[4].Text;  

    ContactDialog dialog = new ContactDialog();  

    dialog.contact = c;  

        updateContact(item, dialog.contact);  

这样就可以达到c#中对话框中相互交换数据了