2012-05-02 8 views
0

私は私のクラスで2つのコンストラクタを持っている:C#Winフォームのイベントハンドラ

public partial class Fiche_Ordre : Le_MainForm 
    { 
     public Fiche_Ordre() 
       { 
        InitializeComponent();   
        Constuct_Page();    
       } 

       public Fiche_Ordre(string OrderID): this() 
       { 


        Pers_Ordre oPersOrdr = oOrder_BL.Get_OrdreOne_BL(ClientID, Convert.ToInt32(OrderID), false); 

       textEdit_RefExpred.Text = oPersOrdr.RefExpd; 
       lookUpEdit_Agence.EditValue = oPersOrdr.Agence; 
       lookUpEdit_Transport.EditValue = oPersOrdr.Transporteur; 

       lookUpEdit_Dest.EditValue = oPersOrdr.DestId; 
    .................. 

       } 


       public void Constuct_Page() 
       { 
        try 
        { 
         ClientID = Program.Le_ClientID; 
         .... 

       #region LookUpEdidt Destinataire 

        lookUpEdit_Dest.Properties.DataSource = Auxiliaire_BL.FillCombo_BL(false, ClientID).Tables["ComboFill"]; 
        lookUpEdit_Dest.Properties.ValueMember = "CODE_DEST"; 
        lookUpEdit_Dest.Properties.DisplayMember = "CODE_DEST"; 
        LookUpColumnInfoCollection coll_Dest = lookUpEdit_Dest.Properties.Columns; 
        // A column to display the ProductID field's values. 
        coll_Dest.Add(new LookUpColumnInfo("CODE_DEST", 0, "Code Destinataire")); 
        // A column to display the ProductName field's values. 
        coll_Dest.Add(new LookUpColumnInfo("RS_NOM", 0, "Raison Social")); 
        // Set column widths according to their contents and resize the popup, if required. 
        lookUpEdit_Dest.Properties.BestFitMode = BestFitMode.BestFitResizePopup; 
        // Enable auto completion search mode. 
        lookUpEdit_Dest.Properties.SearchMode = SearchMode.AutoComplete; 
        // Specify the column against which to perform the search. 
        lookUpEdit_Dest.Properties.AutoSearchColumnIndex = 1; 
        lookUpEdit_Dest.EditValueChanged += new EventHandler(lookUpEdit_Dest_EditValueChanged); 
       #endregion 
     ... 
     } 

私はpublic Fiche_Ordre()を使用する場合、それはnew EventHandler(lookUpEdit_Dest_EditValueChanged);を発生しませんので、それは奇妙です。 public Fiche_Ordre(string OrderID)を使用すると、イベントハンドラが起動します。

これは正常ですか?

それがメインフォームから

public partial class Le_MainForm : DevExpress.XtraEditors.XtraForm 
    { 
     public Le_MainForm() 
     { 
      InitializeComponent(); 

      this.Name = "MainUSER"; 

      if (Program.IsFA) barButtonItem_OrdList.Visibility = DevExpress.XtraBars.BarItemVisibility.Never; 


     } 

private void barButtonItem_CreatOrdreAller_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) 
     { 
      Close_AllForm(); 
      Program.AllerRetour = "Ordre Aller"; 
      Fiche_Ordre f_Fiche = new Fiche_Ordre(); 

      f_Fiche.Show(); 
     } 

と第二のコンストラクタを呼び出す最初constuctor私は

public partial class Liste_Ordres : Le_MainForm 
    { 

    private void Liste_DobleClic(object sender, EventArgs e) 
      { 
       try 
       { 
        Program.OrderId = gridView_Liste_Ordres.GetFocusedRowCellValue("NO_ORDRE").ToString(); 
        this.Hide(); 
        Fiche_Ordre f_Fiche = new Fiche_Ordre(gridView_Liste_Ordres.GetFocusedRowCellValue("NO_ORDRE").ToString()); 
        f_Fiche.Show(); 
       } 
       catch (Exception excThrown) 
       { 
        MessageBox.Show(excThrown.Message); 
       } 
      } 

からそれを呼び出すには、事前にありがとうございます。

PS:最初のコンストラクタは新しい空白ページを作成するだけで、2番目のコンストラクタはNOT NEW(編集ページ)を作成するため、IDを渡してすべてのコントロール(テキストボックス、メモなど)を埋め込みます。 )

+0

2番目のコンストラクタでは何のためにOrderIDを使用しますか? – McGarnagle

+1

@dbasemanどのように問題を解決するのに役立ちますか? – Likurg

+0

@Likurgよく、2つのコンストラクタの唯一の違いだとすれば、それは適切かもしれないと思ったのですか? – McGarnagle

答えて

1

EditValueChangedハンドルはConstuct_Pageの最後の行に配線されています。したがって、Constuct_Pageの後に変更の場合にのみ発生します。コードの一部が..................に変更されていますか?これは、過剰に簡略化投機のように聞こえるんが、それはとにかく、ダブルチェックする価値がある...

はほかに、私はあなたに別の改善提案してもよい:

public Fiche_Ordre(string OrderID) : this.Fiche_Ordre() 
{ 
    // invokes the other constructor first, so they're guaranteed 
    // do be equivalent in the first part 

    Pers_Ordre oPersOrdr = oOrder_BL.Get_OrdreOne_BL(ClientID, 
    Convert.ToInt32(OrderID), false); 

    // ... 
} 
0

入れブレークポイントをして、必要なときlookUpEdit_Destに上に見えますバインドeventhandler、私はこのvarは初期化されないと思うので、最初に2番目のコンストラクタから初期化を追加する必要があります。

0

代わりに、Constuct_Page()を作成します。ちょうどForm_Load()に入れて

関連する問題