Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Winform事件处理程序_C#_Winforms_Event Handling - Fatal编程技术网

C#Winform事件处理程序

C#Winform事件处理程序,c#,winforms,event-handling,C#,Winforms,Event Handling,我班上有两个构造器: public partial class Fiche_Ordre : Le_MainForm { public Fiche_Ordre() { InitializeComponent(); Constuct_Page(); } public Fic

我班上有两个构造器:

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\u Ordre()
时,它不会触发
neweventhandler(lookUpEdit\u Dest\u EditValueChanged);但是当我使用
公共Fiche\u 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();
        }
我从第二个构造函数调用它

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:第一个构造函数只是创建新的空白页,第二个构造函数是创建非新的(编辑页),所以我传递了id并填充了所有控件(文本框、备忘录等)

编辑值更改的
句柄连接在
构造页的最后一行。因此,它仅在
构造页面
之后的更改中激发。代码的
部分是否更改了?这听起来像是一个过度简化的推测,但无论如何,值得仔细检查一下

此外,我可以向您建议另一项改进:

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);

  // ...
}

放置断点并查看lookUpEdit\u Dest当您想要绑定eventhandler时,我认为这个变量不会初始化,所以您需要将initialize从第二个构造函数添加到第一个构造函数。

而是创建construct\u Page();只需输入Form_Load()

您在第二个构造函数中使用OrderID做什么?@dbaseman这如何帮助您解决问题?@Likurg好吧,鉴于这是两个构造函数之间的唯一区别,我认为这可能是相关的,嗯?@dbaseman在第二个构造函数中有“…”,我认为使用OrderID有一些实现,但是(IMHO)这与当前问题无关。
lookUpEdit\u Dest
的值是否因非默认构造函数中的额外代码而改变?如果未实现直接更改的控件(textEdit\u RefExpred、lookUpEdit\u代理、lookUpEdit\u传输),则无法确认或拒绝此操作。第二个构造函数中还有哪些代码?