今天写代码是遇到的问题,在网上找了很多类似的没能解决,各位老大帮下忙!!!
有2个窗体主窗体是 Form1, 上面有个ListBox控件:listBoxTypeName,而且ListBox上还有个ContextMenuStrip 右键菜单控件,有3项:添加项目、修改项目、删除, 当点击 添加项目 的时候触发事件并弹出第二个窗体: AddTypeForm , 上面有一个TextBox控件:textBoxAddType 和 2个按钮: 确认(buttonAddOK) 和“取消”
   我要做的是,将AddTypeForm中的textBoxAddType的值与 Form1中的ListBox中的各项比较,看下ListBox中是否已经含有名称相同的项,有的话 返回 错误信息,没有的话 将 textBoxAddType 中的值 添加到 ListBox 中 
   
   各位帮帮忙 发个代码参考下!

解决方案 »

  1.   

    用代理   定义个全局变量  事件写到 主窗体里面 ,
    在 AddTypeForm 里面创建代理
    调用主窗体你定义的事件函数   
      

  2.   

    其实方法有很多,1楼是一种,不过最常见的还是通过构造函数来进行多窗体传值
    哦 还有种简单的,应该可以解决楼主的问题
    你将Form1的ListBox的访问属性改为Public
    AddTypeForm中可以通过Form1 _form1=new Form1 ();
    _form1.ListBox 来访问ListBox
    然后你就可以进行判断了
      

  3.   

    http://hi.baidu.com/libinguest/blog/item/0110fb1f077de96af624e4b0.html
      

  4.   

    多窗体传值一般通过构造函数来传的,不过也有个简单的方法
    将Form1的listBoxTypeName的访问属性改为public
    然后在AddTypeForm中可以通过
    Form1 _form1=new Form1();
    _form1.listBoxTypeName可以访问得到
    既然可以访问到,也就可以取里面的值,就可以判断了
      

  5.   

    Form1中:
    将Form1的listBoxTypeName的访问属性改为public 打开Form2时:
    Form2 frmForm2 = new Form2();
    frmForm2.frmForm1 = this;
    frmForm2.Show();Form2中:
    public Form1 frmForm1;在Form2中便可访问Form1的listBoxTypeName控件了
      

  6.   

    Form1中ListBox的Modifiers属性改为Public
    Form2中代码
    public partial class Form2 : Form
        {
            public Form1 frm1=new Form1();
            public Form2()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
                int i = frm1.listBox1.FindStringExact(textBox1.Text.Trim());
                if (i >= 0)
                {
                    MessageBox.Show("错误");             
                }
                else
                {
                    frm1.listBox1.Items.Add(textBox1.Text.Trim());
                    frm1.Show();
                    this.Hide();
                }
            }