2016-09-27 3 views
1

私はC#を初めて使っています。私は2つのコンボボックスを持っています。一方が値を持つとき、もう一方は常にstring.Emptyでなければなりません。私の問題は、string.Emptyに設定した値を変更した後です。もちろんイベントを発生させ、コントロールを設定します。私はstring.Emptyに変更しました。だから私はいつもその値を2度入力しなければならない。私はこれを起こさないようにいくつかのif文を試しましたが、何も働いていません。私はValueChangedを使用しています。私は他のイベントを使っているべきですか?エピコERPでコンボボックス2つのcbosに影響するValueChangedイベント

private static void cboJobDetailer_ValueChanged(object sender, System.EventArgs args) 
{ 
    // ** Place Event Handling Code Here ** 
    if (cboJobDetailer.Value != string.Empty) { 
     var edvJobPart = (EpiDataView)oTrans.EpiDataViews["JobPart"]; 
     edvJobPart.dataView[edvJobPart.Row]["BI_JobOutsourceID_c"] = string.Empty; 
     cboOutsourceCo.Value = string.Empty; 
    } 
} 

private static void cboOutsourceCo_ValueChanged(object sender, System.EventArgs args) 
{ 
    // ** Place Event Handling Code Here ** 
    if (cboOutsourceCo.Value != string.Empty){ 
     var edvJobPart = (EpiDataView)oTrans.EpiDataViews["JobPart"]; 
     edvJobPart.dataView[edvJobPart.Row]["BI_JobDetailerID_c"] = string.Empty; 
     cboJobDetailer.Value = string.Empty; 
    } 
} 

コンボボックスがIce.Lib.Framework.EpiUltraComboあり、これはValueChangedイベントを実装インフラジスティックスUltraComboから継承されます。

答えて

0

標準の.Net WinFormsはコントロールイベントを使用しますが、Epicor ERPはJobPart_Column.ColumnChangedなどのデータ変更イベントに応答するように設計されています。このDataTableは、UIカスタマイズスクリプトで定義されます。

いずれの場合でも、イベントが発生するのを防ぐには、コード内のデータを変更するときにモジュールレベルフラグを設定します。あなたのイベントでこれをテストすると、イベントはまだ起動しますが、何もしません。

bool dataChangingInCode = false; 

    public void InitializeCustomCode() 
    { 
     JobPart_Column.ColumnChanged += JobPart_ColumnChanged; 
    } 

    private void JobPart_ColumnChanged(object sender, DataColumnChangeEventArgs e) 
    { 
     if (dataChangingInCode) return; 

     switch (e.Column.ColumnName) 
     { 
      case "BI_JobDetailerID_c": 
       dataChangingInCode = true; 
       e.Row["BI_JobOutsourceID_c"] = string.Empty; 
       dataChangingInCode = false; 
       break; 
      case "BI_JobOutsourceID_c": 
       dataChangingInCode = true; 
       e.Row["BI_JobDetailerID_c"] = string.Empty; 
       dataChangingInCode = false; 
       break; 
     } 
    } 
+0

ありがとうございます。私は静的クラス(はい、私はコードジェネレータを使用)で動作するようにこれを変更するか、静的でなくなるように既存のクラスを変更する必要があります。コードジェネレータを使用する必要がないので、C#でより多くの時間を費やす必要があることがわかります。 –

関連する問題