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

1.创建一个windows应用程序

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

  1. public class conntactpeople
  2. {
  3. private String _name;
  4. public String name
  5. {
  6. get { return _name; }
  7. set { _name = value; }
  8. }
  9. private bool _isFemale=false;
  10. public  bool isFemale
  11. {
  12. get { return _isFemale; }
  13. set { _isFemale = value; }
  14. }
  15. private DateTime _dateOfBirth;
  16. public DateTime dateOfBirth
  17. {
  18. get { return _dateOfBirth;}
  19. set { _dateOfBirth = value;}
  20. }
  21. private String _company;
  22. public String company
  23. {
  24. get { return _company; }
  25. set { _company = value; }
  26. }
  27. private String _telephone;
  28. public String telephone
  29. {
  30. get { return _telephone; }
  31. set { _telephone = value; }
  32. }

3.添加一个窗体对话框

4.在contactDialog窗体的load时间中,对窗体进行初始化。代码如下
  1. button1.DialogResult = DialogResult.OK;
  2. button2.DialogResult = DialogResult.Cancel;
5.在contactDialog类中,添加一个Contact类型的属性,用来与外界交换数据。代码如下:
  1. private conntactpeople _contact;
  2. public conntactpeople contact
  3. {
  4. get
  5. {
  6. conntactpeople c = new conntactpeople();
  7. c.name = textBox1.Text;
  8. c.company = textBox2.Text;
  9. c.dateOfBirth = dateTimePicker1.Value;
  10. c.telephone = maskedTextBox2.Text;
  11. c.isFemale = radioButton2.Checked;
  12. return c;
  13. }
  14. set
  15. {
  16. textBox1.Text = value.name;
  17. radioButton2.Checked = value.isFemale;
  18. radioButton1.Checked = !value.isFemale;
  19. dateTimePicker1.Value = value.dateOfBirth;
  20. textBox2.Text = value.company;
  21. maskedTextBox2.Text = value.telephone;
  22. }
  23. }
6.在主船体中添加listview空间,以及ContextMenustrip空间,添加菜单项:添加,删除,修改。并把listview的ContextMenuStrip设置为此菜单。此时,主窗体就可以用Contact类了。
7.在主窗体的load事件添加代码:
  1. listView1.View = View.Details;
  2. listView1.GridLines=true;
  3. listView1.Columns.Add("姓名", 80);
  4. //listView1.co
  5. listView1.Columns.Add("性别", 40);
  6. listView1.Columns.Add("出生日期", 100);
  7. listView1.Columns.Add("工作单位",160);
  8. listView1.Columns.Add("联系电话", 100);
  9. listView1.HideSelection = true;
  10. listView1.FullRowSelect = true;
  11. ContactDialog dialog = new ContactDialog();
  12. dialog.Owner = this;
8.主窗体中的添加,删除,更新按钮中添加相应代码即可
  1. private void 添加ToolStripMenuItem_Click(object sender, EventArgs e)
  2. {
  3. ContactDialog dialog = new ContactDialog();
  4. //  dialog.contact = null;
  5. if (dialog.ShowDialog()==DialogResult.OK)
  6. {
  7. addContact(dialog.contact);
  8. }
  9. }
  10. //添加函数
  11. private void addContact(conntactpeople c)
  12. {
  13. ListViewItem item = listView1.Items.Add(c.name);
  14. updateContact(item, c);
  15. }
  16. //更新函数
  17. private void updateContact(ListViewItem item,conntactpeople c)
  18. {
  19. item.SubItems.Clear();
  20. //item.SubItems.c
  21. item.Text = c.name;
  22. if (c.isFemale)
  23. {
  24. item.SubItems.Add("女");
  25. }
  26. else
  27. {
  28. item.SubItems.Add("男");
  29. }
  30. item.SubItems.Add(c.dateOfBirth.ToString("yyyy-MM-dd"));
  31. item.SubItems.Add(c.company);
  32. item.SubItems.Add(c.telephone);
  33. }
  34. private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
  35. {
  36. if (listView1.SelectedIndices.Count>0)
  37. {
  38. if (MessageBox.Show("ni"+listView1.Items[listView1.SelectedIndices[0]].Text+"ma?","dd",MessageBoxButtons.YesNoCancel)==DialogResult.Yes)
  39. {
  40. listView1.Items.RemoveAt(listView1.SelectedIndices[0]);
  41. //  listView1.Items.RemoveAt(listView1.SelectedIndices[])
  42. }
  43. }
  44. }
  45. private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
  46. {
  47. if (listView1.SelectedIndices.Count==0)
  48. {
  49. MessageBox.Show("请选择要修改的人");
  50. return;
  51. }
  52. conntactpeople c = new conntactpeople();
  53. ListViewItem item = listView1.SelectedItems[0];
  54. c.name = item.Text;
  55. //item.SubItems[];
  56. c.isFemale=(item.SubItems[1].Text=="女");
  57. try
  58. {
  59. c.dateOfBirth = DateTime.Parse(item.SubItems[2].Text.ToString());
  60. }
  61. catch
  62. {
  63. System.Diagnostics.Trace.Write(c.dateOfBirth);
  64. MessageBox.Show(item.SubItems[2].Text);
  65. //System.Diagnostics.Trace(item.SubItems[1].Text);
  66. }
  67. c.company = item.SubItems[3].Text;
  68. c.telephone = item.SubItems[4].Text;
  69. ContactDialog dialog = new ContactDialog();
  70. dialog.contact = c;
  71. if (dialog.ShowDialog()==DialogResult.OK)
  72. {
  73. updateContact(item, dialog.contact);
  74. }
  75. }
这样就可以达到c#中对话框中相互交换数据了

c# 对话框交换数据的更多相关文章

  1. HTML5 postMessage 跨域交换数据

    前言 之前简单讲解了利用script标签(jsonp)以及iframe标签(window.name.location.hash)来跨域交换数据,今天我们来学习一下HTML5的api,利用postMes ...

  2. Java多线程之~~~使用Exchanger在线程之间交换数据[这个结合多线程并行会有解决很多问题]生产者消费者模型

    http://blog.csdn.net/a352193394/article/details/39503857  Java多线程之~~~使用Exchanger在线程之间交换数据[这个结合多线程并行会 ...

  3. 建立、配置和使用Activity——使用Bundle在Activity之间交换数据

    当一个Activity启动另一个Activity时,常常会有一些数据需要传过去——这就像Web应用从一个Servlet跳到另一个Serlvet时,Web应用习惯把需要交换的数据放入requestSco ...

  4. 使用 Bundle 在 Activity 之间交换数据

    [toc] 使用 Bundle 在 Activity 之间交换数据 场景 当一个 Activity 启动另一个 Activity 时,常常会有一些数据需要传过去.因为两个 Activity 之间本来就 ...

  5. 客户端通过HTTP协议与服务端交换数据

        客户端(包括浏览器)通过HTTP协议与服务端交换数据的描述 发起请求 header 键值对中的key大小写不敏感 Accept: application/json Content-Type: ...

  6. 并发工具类(四)线程间的交换数据 Exchanger

    前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...

  7. Java并发编程--6.Exchanger线程间交换数据

    在两个线程之间定义同步点,当两个线程都到达同步点时,他们交换数据结构,因此第一个线程的数据结构进入到第二个线程中,第二个线程的数据结构进入到第一个线程中 在生产者-消费者情境模式中它包含了一个数缓冲区 ...

  8. Java并发工具类(四):线程间交换数据的Exchanger

    简介 Exchanger(交换者)是一个用于线程间协作的工具类.Exchanger用于进行线程间的数据交换.它提供一个同步点,在这个同步点两个线程可以交换彼此的数据.这两个线程通过exchange方法 ...

  9. JSP Servlet之间交换数据

    摘自:<轻量级Java EE企业应用实战>第三版 对于每次客户端请求而言,web服务器大致需要完成以下步骤: 1.启动单独线程 2.使用I/O流读取用户的请求参数 3.从请求数据中解析参数 ...

随机推荐

  1. NOIP2016 D1T1 玩具迷題(toy)

    题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业. 有一天, 这些玩具小人把小南的眼镜藏了起来. 小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的面朝圈外.如下图: 这时singer告诉 ...

  2. 两种不同的Context

    本文转载于:http://blog.csdn.net/xiaodongvtion/article/details/8443772 这是两种不同的context,也是最常见的两种.第一种中context ...

  3. Thinking Clearly about Performance

    http://queue.acm.org/detail.cfm?id=1854041 The July/August issue of acmqueue is out now acmqueue is ...

  4. dede数据库文件导入失败的可能原因是数据表前缀不同,这里的失败指的是mysql添加了数据,但后台不显示

    利用dede提供的数据备份还原功能,还原数据,出现失败的可能原因是数据表前缀不同,改过来就可以了

  5. Python 列表如何获得一个指定元素所在的下标

    在使用Python3.4读取txt数据到列表,由于编码问题,读取到的数据通常会出现'\ufeffX'(x为你想要的数据).这时候如果需要把列表中的数据由字符串转换到数值型的数据的进行数据分析的话就会出 ...

  6. LINQ(LINQ to DataSet)

    http://www.cnblogs.com/SkySoot/archive/2012/08/21/2649471.html DataTable.Select()方法使用和 SQL 相似的过滤语法从 ...

  7. 怎么保护PDF文档和扫描文件里的机密信息

    从事商务工作的人,必然要处理带有机密信息的文档,需要分享这些文档的时候,如何谨慎小心地对待那些机密信息,说到底还是取决于自己.分享文档的目的不同,对文档的保护类型和级别也不一样.例如,只有授权的读者才 ...

  8. sql server ,OVER(PARTITION BY)函数用法,开窗函数,over子句,over开窗函数

    https://technet.microsoft.com/zh-cn/library/ms189461(v=sql.105).aspx https://social.msdn.microsoft.c ...

  9. [Unity 5.2] The imported type `UnityEngine.Advertisements.ShowResult' is defined multiple times

    unityAds报这个错: The imported type `UnityEngine.Advertisements.ShowResult' is defined multiple times go ...

  10. .net 实现 URL重写,伪静态(方法一)

    一,获得Mircosoft URLRewriter.dll(注意:此dll文件大小约为20KB,网上有8Kb的是不完整的文件,会报错) 二,在项目中该dll文件:添加引用(可以直接拷贝放入Bin文件夹 ...