2016-09-21 4 views
1

Ich denke, meine Schleife habe ein Problem. Zuerst betrachte ich (i = 0 und i> 1), aber ich habe keine Ahnung, wie ich schreiben soll. Kann mir irgendjemand helfen?C# für Schleife brauche hier Hilfe - geschlossen

logik ich will ist // start => wenn ich = 0 kopie von txtbox1; => Danach vergleiche i = 2 und i = 3, ob sie gleich sind. wenn dasselbe dann von txtbox kopieren; => i ++ bis zum letzten, jeder 1,2,3,4 ... zeigt eine andere Zeichenkette; // end

public void OnMasterColumnChanged(BCE.AutoCount.Invoicing.Sales.SalesOrder.SalesOrderMasterColumnChangedEventArgs e) 
    { 
     for (int i = 0; i < e.MasterRecord.DetailCount; i++) 
     { 
      if (i == 0) 
      { 
       e.MasterRecord.GetDetailRecord(i).YourPONo = TxtBox1.Text; 
      } 
      else if (i > 1) 
      { 
       if (e.MasterRecord.GetDetailRecord(i).YourPONo == e.MasterRecord.GetDetailRecord(i - 1).YourPONo) 
       { 
        e.MasterRecord.GetDetailRecord(i).YourPONo = TxtBox1.Text; 
       } 
      } 
     } 
    } 
+0

Können Sie auch erklären, welche Logik Sie anwenden müssen? –

+0

'e.MasterRecord.GetDetailRecord (0) .IhrPONo = TxtBox1.Text' dann' für (int i = 1; i feeeper

+3

Was versuchen Sie zu erreichen und welches Problem haben Sie, um Ihre Anforderung zu erfüllen? – Sagar

Antwort

1

Ich denke, dass Sie möchten, dass:

public void OnMasterColumnChanged(BCE.AutoCount.Invoicing.Sales.SalesOrder.SalesOrderMasterColumnChangedEventArgs e) 
{ 
    if (e.MasterRecord.GetDetailRecord.Count == 0) 
     return; 

    e.MasterRecord.GetDetailRecord(0).YourPONo = TxtBox1.Text; 

    if (e.MasterRecord.GetDetailRecord.Count < 3) 
     return; 

    for (int i = 2; i < e.MasterRecord.DetailCount; i++) 
    { 
     if (e.MasterRecord.GetDetailRecord(i).YourPONo == e.MasterRecord.GetDetailRecord(i - 1).YourPONo) 
     { 
      e.MasterRecord.GetDetailRecord(i).YourPONo = TxtBox1.Text; 
     } 
    } 
} 
+1

Sie müssen überprüfen, ob 'e.MasterRecord.GetDetailRecord' überhaupt keine Elemente hat (und' e.MasterRecord.GetDetailRecord (0) 'wird * Ausnahme *) werfen –

+0

Ich habe diesen Weg versucht, aber die Software-Eingabeaufforderung eine Nachricht = Ausnahme aus dem Skript (SO.OnMasterCOlumnChanged): Index befand sich außerhalb der Grenzen des Arrays. – ChengWan

+0

@ChengWan versuchen Sie dies 'e.MasterRecord.GetDetailRecord (0) ?. YourPONo = TxtBox1.Text;' –

1

IF GetDetailRecord Methode gibt die verschiedene Werte für verschiedene Eingaben dann die verschiedenen Werte unterhalb der GetDetailRecord und Kontrolle Sie sind die gleich vorbei Bedingung.

if (e.MasterRecord.GetDetailRecord (i) .YourPONo == e.MasterRecord.GetDetailRecord (i - 1) .YourPONo)

An einem Ort, den Sie mit dem GetDetailRecord sind vorbei GetDetailRecord (i) und die Überprüfung (i - 1)

+0

Yup, ich versuche, jedes mit dem vorherigen zu überprüfen. Dadurch kann es jede txtbox1 ersetzen. Weil Benutzer nur etwas in txtbox1 ändern. – ChengWan