关于datagridview和datatable绑定的有关问题

关于datagridview和datatable绑定的问题
情况是这样的,我现在datagridview在代码添加了10列,我又生成了一个只有8列的datatable,然后把datatable的8列绑定在datagridview的前8列,但是绑定好以后datagridview列的顺序发生变化了,最后没有绑定的2列跑到前面去了,而且我再次触发绑定事件,datagridview里的值还能移动。
所以我在datatable里又添加了2列,再次绑定,这次就变好了。
求解

------解决方案--------------------

找到 dgv 的  DataBindingComplete 事件


/// <summary>
        /// dgvCost_FeeInfo_Income数据绑定时固定列的位置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void dgvCost_FeeInfo_Income_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            dgvCost_FeeInfo_Income.Columns["dgvchk_R"].DisplayIndex = 0;

            dgvCost_FeeInfo_Income.Columns["dgvtxtCostName_R"].DisplayIndex = 1;
            dgvCost_FeeInfo_Income.Columns["dgvtxtChargeCode_R"].DisplayIndex = 2;

            dgvCost_FeeInfo_Income.Columns["dgvtxtShouldMoney_R"].DisplayIndex = 3;
            dgvCost_FeeInfo_Income.Columns["dgvcboCustomsRate_R"].DisplayIndex = 4;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCustomsMoney_R"].DisplayIndex = 5;
            dgvCost_FeeInfo_Income.Columns["dgvtxtRealMoney_R"].DisplayIndex = 6;

            dgvCost_FeeInfo_Income.Columns["dgvtxtCurrency_Id_R"].DisplayIndex = 7;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCurrency_Name_R"].DisplayIndex = 8;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCurrency_Rate_R"].DisplayIndex = 9;

            dgvCost_FeeInfo_Income.Columns["dgvtxtPaymode_R"].DisplayIndex = 10;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCheckNumber_R"].DisplayIndex = 11;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCode_R"].DisplayIndex = 12;
            dgvCost_FeeInfo_Income.Columns["dgvtxtPayee_R"].DisplayIndex = 13;

            dgvCost_FeeInfo_Income.Columns["dgvtxtInputMan_R"].DisplayIndex = 14;
            dgvCost_FeeInfo_Income.Columns["dgvtxtInputDate_R"].DisplayIndex = 15;
            dgvCost_FeeInfo_Income.Columns["dgvtxtInputDepartment_R"].DisplayIndex = 16;

            dgvCost_FeeInfo_Income.Columns["dgvtxtCheckCostMan_R"].DisplayIndex = 17;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCheckCostDate_R"].DisplayIndex = 18;
            dgvCost_FeeInfo_Income.Columns["dgvtxtCheckCostDepartment_R"].DisplayIndex = 19;
            dgvCost_FeeInfo_Income.Columns["dgvtxtFlag_CheckCost_R"].DisplayIndex = 20;

            dgvCost_FeeInfo_Income.Columns["dgvtxtManagerCheckCostMan_R"].DisplayIndex = 21;
            dgvCost_FeeInfo_Income.Columns["dgvtxtManagerCheckCostDate_R"].DisplayIndex = 22;
            dgvCost_FeeInfo_Income.Columns["dgvtxtManagerCheckCostDepartment_R"].DisplayIndex = 23;
            dgvCost_FeeInfo_Income.Columns["dgvtxtFlag_ManagerCheckCost_R"].DisplayIndex = 24;


            dgvCost_FeeInfo_Income.Columns["dgvtxtClosingCostMan_R"].DisplayIndex = 25;
            dgvCost_FeeInfo_Income.Columns["dgvtxtClosingCostDate_R"].DisplayIndex = 26;
            dgvCost_FeeInfo_Income.Columns["dgvtxtFlag_ClosingCost_R"].DisplayIndex = 27;