通过从vb.net

时间:2016-08-01 09:27:39

标签: vb.net datagridview

我有一个vb.net windows应用程序,它有一些我通过文本框输入的值。 和两个datagridviews,在第一个datagridview中,当我在所有列中输入值时,我有一个从Textboxes和DatagridView1列值获取值的公式。这些计算值应显示在第二个datagridview列中。 为此我尝试了两种方法,但都显示出问题。     首先尝试:

//First Datagridview -LogCalcEnter , Second Datagrid - LogCalValue

    Private Sub LogCalcEnter_CellValueChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles LogCalcEnter.CellValueChanged

    LogCalValue.Rows(intRow).Cells(0).Value = LogCalcEnter.Rows(iRow).Cells(0).Value * fPorCutoff.Text   

    LogCalValue.Rows(intRow).Cells(1).Value = LogCalcEnter.Rows(iRow).Cells(1).Value * fSWCutoff.Text

        End Sub

执行应用程序时,在显示下面的表单之前发生错误

OnCreateMainForm()中的

Me.MainForm = Global.LogCalculation.Form1

  

其他信息:创建表单时出错。看到   Exception.InnerException以获取详细信息。错误是:索引已经过了   范围。必须是非负数且小于集合的大小。   参数名称:index

所以我尝试了另一个选项,我有按钮的形式,当我按下按钮,然后取决于第一个网格视图中的行数我将设置第二个数据网格的值。 但是如果我在Datagridview1中有一行,它就可以工作。如果有多行,则在第二行显示错误。

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click    
        Dim oLog As New Log    
        oLog.sWellName = tWellname.Text
        oLog.fPoroCutoff = fPorCutoff.Text
        oLog.fSWCutOff = fSWCutoff.Text
        oLog.fN = fN.Text
        oLog.fM = fM.Text
        oLog.fA = fA.Text
        oLog.fRW = fRW.Text    
        For iRow = 0 To LogCalcEnter.Rows.Count - 1
            If (Trim(LogCalcEnter.Rows(iRow).Cells(0).Value) <> "" And Trim(LogCalcEnter.Rows(iRow).Cells(1).Value) <> "" And Trim(LogCalcEnter.Rows(iRow).Cells(2).Value) <> "") Then   

                LogCalValue.Rows(iRow).Cells(0).Value = LogCalcEnter.Rows(iRow).Cells(0).Value * oLog.fPoroCutoff
                LogCalValue.Rows(iRow).Cells(1).Value = LogCalcEnter.Rows(iRow).Cells(1).Value * oLog.fSWCutOff
                LogCalValue.Rows(iRow).Cells(2).Value = LogCalcEnter.Rows(iRow).Cells(2).Value * oLog.fN

            End If
        Next iRow    
    End Sub

其实我只想要第一个选项。但是这两个案例都失败了。

1 个答案:

答案 0 :(得分:0)

在第一次活动中,你的intRow&amp;可能没有定义iRow。

试试这个,

LogCalValue.Item(0, e.RowIndex).Value = LogCalcEnter.Item(0, e.RowIndex).Value * fPorCutoff.Text   

LogCalValue.Item(1, e.RowIndex).Value = LogCalcEnter.Item(1, e.RowIndex).Value * fSWCutoff.Text