主窗体中有一个ListView..然后调用用户控件用户控件完成的功能是搜索一些内容.得到一些结果.
然后用户控件中有一个方法是把某个搜索结果经过其他窗体修改后在得到一个ListViewItem放到主窗体的ListView上.请问我应该如何操作?

解决方案 »

  1.   

    可以传入一个listviewitem给子窗体,例如主窗体
    --------------
    private void button1_Click(object sender, System.EventArgs e)
    {
    ListViewItem lt=new ListViewItem();
    new Form2(lt).ShowDialog();
    this.listView1.Items.Add(lt);
    }子窗体
    ----------------
    private System.Windows.Forms.ListViewItem _lt=null; public Form2(System.Windows.Forms.ListViewItem lt):this()
    {
    this._lt=lt;
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    this._lt.Text="aaa";
    this._lt.SubItems.Add("bbb");
    }
      

  2.   

    jinjazz(近身剪(充电中...)) 
    你给我的是串口的窗口的数据传递吧.可我现在的是窗体和用户控件间的数据传递.其实我做用户控件的目的不是想继承原来的控件来扩展功能.而且主窗体中的Panel比较多了.导致窗体设计时的布局过乱.而且Form1.CS的代码也太长了.不容易维护.
    所以我吧一些功能和界面做到用户控件中.然后在主窗口中放入他们.
      

  3.   

    你在用户控件和主窗体之间传递一个System.Windows.Forms.ListViewItem 不就可以了
      

  4.   

    还是用委派比较好,不要让控件认识子窗体,不然违反OOP啊:)控件的部分代码如下
    using System;
    using System.Collections ;
    namespace WindowsApplication6
    {
    public delegate void AddItemEventHandler(System.Windows.Forms.ListViewItem item);
    public class MyControl 
    {
    public event AddItemEventHandler AddItemEvent;
    public MyControl()
    {
    }
    public void DealWithString(string s)
    {
    System.Windows.Forms.ListViewItem item = new System.Windows.Forms.ListViewItem(s);
    AddItemEvent(item);
    }
    }
    }窗体部分代码如下
    private void button5_Click(object sender, System.EventArgs e)
    {
    MyControl ctrl = new MyControl();
    ctrl.AddItemEvent += new AddItemEventHandler(this.AddItemEvent);//这句放到构造函数或Form_Load事件中更好
    ctrl.DealWithString("abc");
    }
    private void AddItemEvent(System.Windows.Forms.ListViewItem item)
    {
    this.listView1.Items.Add(item);
    }