2016-08-01 11 views
0

Ich habe eine vb.net Windows-Anwendung, die einige Werte hat, die ich über das Textfeld eingegeben habe. Und zwei Datagridviews, in der ersten Datagridview, wenn ich Werte in allen Spalten eingeben, habe ich eine Formel, die Wert aus Textboxes und DatagridView1 Spaltenwerte nimmt. Dieser berechnete Wert sollte in den zweiten DataGridview-Spalten angezeigt werden. Dafür habe ich zwei Möglichkeiten ausprobiert, aber beide zeigen ein Problem. Erster Versuch:Add berechneten Wert zu DatagridView von Wert von einem anderen Datagridview in vb.net

//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 

Wenn die Anwendung ausgeführt wird, bevor das Formular unten zeigt Fehler tritt bei

Me.MainForm = Global.LogCalculation.Form1 in OnCreateMainForm().

Weitere Informationen: Beim Erstellen des Formulars ist ein Fehler aufgetreten. Weitere Informationen finden Sie unter Exception.InnerException. Der Fehler lautet: Index war außerhalb von Bereich. Muss nicht negativ und kleiner als die Größe der Sammlung sein. Parametername: Index

Also habe ich versucht, eine andere Option i-Button in Form haben, wenn i-Taste drücken, hängt dann von der Anzahl der Zeilen im Hinblick ersten Gitter i die Werte für die zweite Datagrid setzen wird. Aber es funktioniert, wenn ich eine Zeile in Datagridview1 habe. Wenn mehr als eine Zeile vorhanden ist, wird in der zweiten Zeile ein Fehler angezeigt.

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 

Eigentlich möchte ich nur die erste Option. Aber hier werden diese beiden Fälle gescheitert.

Antwort

0

Im ersten Ereignis ist Ihr intRow & iRow möglicherweise nicht definiert.

Versuchen Sie stattdessen,

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 
+0

Nr gleichen Fehler ist aufgetreten. – Anu

+0

Überprüfen Sie diese [link] (http://stackoverflow.com/questions/11887232/error-inside-of-application-designer-vb-inside-of-oncreatemainform-sub), es könnte mit Ihrem Problem verbunden sein. – Leprechaun

Verwandte Themen