在第一个From1中代码如下 
Modify pass = new Modify();ListViewItem li = this.ListAll.SelectedItems[0];
pass.SpendTextBox.Text=ListAll.Items[li.Index].SubItems[1].Text;
pass.comboBox1.Text =  ListAll.Items[li.Index].SubItems[2].Text;
pass.SpendCount.Text = ListAll.Items[li.Index].SubItems[3].Text;
pass.ShowDialog();
 if (pass.ShowDialog(this)==DialogResult.OK)
 {
  ListAll.Items[li.Index].SubItems[1].Text = pass.SpendTextBox.Text;
  ListAll.Items[li.Index].SubItems[2].Text = pass.comboBox1.Text;
  ListAll.Items[li.Index].SubItems[3].Text = pass.SpendCount.Text;
 }
第二个Form2中 
我直接一个button2的DialogResult设置为OK现在数据能从From1传到Form2中,等向回传的时候就必须按2次button数据才会传回Form1中 ,--,很奇怪,有人能解释一下吗?

解决方案 »

  1.   

    pass.ShowDialog(); 
    if (pass.ShowDialog(this)==DialogResult.OK) 
    这里整了两个模态对话框出来。。还有应该用pass.Show()不要用showDialog()
      

  2.   

    想到Form1是主窗体,Form2是修改主窗体的里的那个ListView表的信息,所以我就用了showDialog(this)
    f (pass.ShowDialog(this)==DialogResult.OK) 这句话是我们书上的原话,我也看不太懂
    那我怎么才能把两个模态改为1个?忘不吝赐教
      

  3.   

    pass.ShowDialog(); 
    把这句去掉.
      

  4.   

     pass.ShowDialog();
    if (pass.DialogResult == DialogResult.OK)
    {
    }
    pass.close();
    http://www.cnblogs.com/virusswb/articles/1206899.html
      

  5.   

    ListViewItem li = this.ListAll.SelectedItems[0]; 
    pass.SpendTextBox.Text=ListAll.Items[li.Index].SubItems[1].Text; 
    pass.comboBox1.Text =  ListAll.Items[li.Index].SubItems[2].Text; 
    pass.SpendCount.Text = ListAll.Items[li.Index].SubItems[3].Text; 
    pass.Show(); 
    newChildForm.SetTools+=new childForm.SetToolsEventHandler(SetControlText);
    private void SetControlText(object sender,FFEventArgs e)
    {
      ListAll.Items[li.Index].SubItems[1].Text = e.xxx; 
      ListAll.Items[li.Index].SubItems[2].Text = e.yyy; 
      ListAll.Items[li.Index].SubItems[3].Text = e.zzz; 
    }上面是form1中的代码下面是form2
    至于从第二个里面传到第一个可以用委托。public class FFEventArgs:EventArgs
    {
    public FFEventArgs(string x,string y,string z)
    {
    xxx=x;
    yyy=y;
    zzz=z;
    }
    //把xxx,yyy,zzz封装为属性
    }
    private button2_click(object sender,EventArgs e)
    {
                SetToolsEventHandler temp = SetTools;
                if (temp != null)
                {
                    temp(null,new FFEventArgs(pass.SpendTextBox.Text,pass.comboBox1.Text,pass.SpendCount.Text));
                }
    }
     public delegate void SetForm1EventHandler(object sender,EventArgs e);
            public event SetForm1EventHandler SetForm1;代码有点乱手写的你自己整理下
      

  6.   

    谢谢你king ,问题刚才人生如意已经帮我解决了,感谢你对我的问题的关注,have a good night