当前位置:编程学习 > C#/ASP.NET >>

c#里怎么引用form1中listview2里面的items用到form2里去

c#里怎么引用form1中listview2里面的items用到form2里去

拜托各位高手给我解答 --------------------编程问答-------------------- form2定义ListViewItem属性,form1把item传过去 --------------------编程问答-------------------- form1的listview属性public
form1打开form2的时候将自己作为参数传递如:
Form2 f2=new Form2(this);
f2.show();

然后在form2中就可以直接调用form1上的属性为public的控件了:
form2的构造函数加上:
Form1 f1=new Form1();
public Form2(Form1 _f1)
{
f1=_f1;
InitializeComponent();
}


然后你可以用f1.listview1来直接操作form1上的控件了,就和在form2上的控件一样


这就是窗体间传递参数 --------------------编程问答-------------------- 属性,public方法,委托,应该都可以满足你的要求。 --------------------编程问答-------------------- 窗体就是一个对象,要给一个对象的属性取值赋值这个总知道吧! --------------------编程问答-------------------- 把listview的属性改成Public,然后

//form1里
form2 fm2 = new form2();
fm2.show(this);

//form2里
form1 fm1 = (form1)this.owner;
//接下来用fm1.listview.items调用就行了
--------------------编程问答-------------------- 设置可读属性,最简单的方法 --------------------编程问答-------------------- lovejiaqi同学:Form2 f2=new Form2(this);这句不对啊 打进去之后,运行不了,系统提示“form2不包含采用“0”个参数的构造函数” --------------------编程问答--------------------
引用 7 楼 u010296299 的回复:
lovejiaqi同学:Form2 f2=new Form2(this);这句不对啊 打进去之后,运行不了,系统提示“form2不包含采用“0”个参数的构造函数”

这么写。。
Form2 f2=new Form2();
f2.show(this); --------------------编程问答--------------------
引用 7 楼 u010296299 的回复:
lovejiaqi同学:Form2 f2=new Form2(this);这句不对啊 打进去之后,运行不了,系统提示“form2不包含采用“0”个参数的构造函数”

我明白了。。你是不是把参数为空的那个构造函数改成参数是form1的构造函数了?form2里应该写两个构造函数。。
public Form2(Form1 _f1)
{
f1=_f1;
InitializeComponent();
}
public Form2()
{
InitializeComponent();
} --------------------编程问答-------------------- 不是的啊:
Form1窗体打开Form2的方法可以这样写:

//打开Form2的方法
private void 打开Form2_btn_Click(object sender, EventArgs e)
{
    //这里将Form1窗体作为参数传递,这样在Form2可以访问Form1窗体所有Public属性的控件
    Form2 f2 = new Form2(this);
    f2.ShowDialog();
    //或者f2.Show();
}


在Form2窗体中这样写就行了

public partial class Form2 : Form
{
    Form1 f1 = new Form1();
    public Form2(Form1 _f1)
    {
        f1 = _f1;
        InitializeComponent();
    }


我测试肯定没问题的,我都是这么写,你看看你哪里写错了? --------------------编程问答--------------------
引用 10 楼 lovejiaqi 的回复:
不是的啊:
Form1窗体打开Form2的方法可以这样写:
C# code?12345678//打开Form2的方法private void 打开Form2_btn_Click(object sender, EventArgs e){    //这里将Form1窗体作为参数传递,这样在Form2可以访问Form1窗体所有Public属性的控件    Form2 f2 ……

那怎么把form1里listview2的东西复制到form2的listview1去啊? --------------------编程问答--------------------
引用 11 楼 u010296299 的回复:
引用 10 楼 lovejiaqi 的回复:
不是的啊:
Form1窗体打开Form2的方法可以这样写:
C# code?12345678//打开Form2的方法private void 打开Form2_btn_Click(object sender, EventArgs e){    //这里将Form1窗体作为参数传递,这样在Form2可以访问Form1窗体所有Public属性的控件  ……


百度下,窗体间的传值:
方法一:
在form2构造一个方法:
FORM2:

//构造方法
public LisView lv
{
 get;
 set;
}
       //窗体登录时候加载
        private void Form2_Load(object sender, EventArgs e)
        {
             foreach (ListViewItem item in lv.Items)
            {
                listview1.Items.Add((ListViewItem)item.Clone());
            }        
        }


FORM1:

Form2 fm2=new Form2();
fm2.lv=listviw2;
fm2.ShwDialog(this);


方法二:
写一个代码文件,CF.cs,在里面定义一个泛型用来保存 form1的listview2
pubic static list<ListView> list1=new list<ListView>();

form1:
CF.list1.clear();
Form2 fm2=new Form2();
CF.list1.add(listview2);
fm2.ShwDialog(this);

form2:
        private void Form2_Load(object sender, EventArgs e)
        {
            if (CF.list1.Count > 0)
            {
                foreach (ListViewItem item in CF.list1[0].Items)
                {
                    listview1.Items.Add((ListViewItem)item.Clone());
                }
            }
        }




--------------------编程问答-------------------- 结贴吧 - -
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,