zoukankan      html  css  js  c++  java
  • MyControl 常用操作

    public static class MyControl
        {
            public static class DateTimePicker
            {
                public static void DateTimePickerMaxDate(params WinControl.DateTimePicker[] dtps)
                {
                    foreach (WinControl.DateTimePicker var in dtps)
                    {
                        var.MaxDate = Convert.ToDateTime(UserInfo.LOGIN_TIME);
                    }
                }
                public static void DateTimePickerInitText(params WinControl.DateTimePicker[] dtps)
                {
                    foreach (WinControl.DateTimePicker var in dtps)
                    {
                        var.MaxDate = Convert.ToDateTime(UserInfo.LOGIN_TIME);
                        var.CustomFormat = "yyyy-MM-dd";
                        var.Format = WinControl.DateTimePickerFormat.Custom;
                        var.Text = UserInfo.LOGIN_TIME;
                    }
                }
                /// <summary>
                /// 剪掉一定天数
                /// </summary>
                /// <param name="subdays">剪掉的天数</param>
                /// <param name="dtps"></param>
                public static void DateTimePickerInitText(int subdays, params WinControl.DateTimePicker[] dtps)
                {
                    foreach (WinControl.DateTimePicker var in dtps)
                    {
                        var.MaxDate = Convert.ToDateTime(UserInfo.LOGIN_TIME);
                        var.CustomFormat = "yyyy-MM-dd";
                        var.Format = WinControl.DateTimePickerFormat.Custom;
                        var.Text = Convert.ToDateTime(UserInfo.LOGIN_TIME).AddDays((double)subdays).ToString("yyyy-MM-dd"); ;
                    }
                }
    
                /// <summary>
                /// 如果日期控件使用时的日期大于登陆是设置的日期,旧将控件选中的最大日期为登陆
                /// </summary>
                /// <param name="sender">必须为日期控件类型</param>
                /// <param name="e">可以是空,方法中没有使用到</param>
                /// <returns></returns>
                public static bool DateTimePickerCloseUp(object sender, System.EventArgs e)
                {
                    WinControl.DateTimePicker dtp = sender as WinControl.DateTimePicker;
                    if (dtp != null)
                    {
                        if (dtp.Format != WinControl.DateTimePickerFormat.Custom || dtp.CustomFormat != "yyyy-MM-dd")
                        {
                            dtp.Format = WinControl.DateTimePickerFormat.Custom;
                            dtp.CustomFormat = "yyyy-MM-dd";
                        }
                        if (Convert.ToDateTime(dtp.Text) > Convert.ToDateTime(UserInfo.LOGIN_TIME))
                        {
                            dtp.Text = UserInfo.LOGIN_TIME;
                        }
                        return true;
                    }
                    return false;
                }
            }
            public static class TextBox
            {
                /// <summary>
                /// 验证文本框内的输入内容为大于零的数字
                /// :要求文本框的Tag为文本框所代表的意思
                /// </summary>
                /// <param name="textBoxs"></param>
                /// <returns></returns>
                public static bool TextBoxPriceCheck(params WinControl.TextBox[] textBoxs)
                {
                    foreach (WinControl.TextBox textBox in textBoxs)
                    {
                        try
                        {
                            if (textBox.Text == null || textBox.Text.ToString().Trim() == "")
                            {
                                textBox.Text = "0";
                                continue;
                            }
                            else if (float.Parse(textBox.Text.ToString().Trim()) < 0)
                            {
                                throw new Exception();
                            }
                        }
                        catch
                        {
                            sMessageBox.Show((textBox.Tag ?? "光标所在文本框") + "只能输入大于零的数字。");
                            textBox.Text = "";
                            textBox.Focus();
                            return false;
                        }
                    }
                    return true;
                }
                /// <summary>
                /// 验证容器控件中的文本框是否都是数字
                /// </summary>
                /// <param name="ctr"></param>
                /// <returns></returns>
                public static bool CheckPriceTextBoxOfContainer(params Control[] ctr)
                {
                    foreach (Control var in ctr)
                    {
                        if (var.HasChildren)
                        {
                            foreach (Control var2 in var.Controls)
                            {
                                if (!CheckPriceTextBoxOfContainer(var2))
                                {
                                    return false;
                                }
                            }
                        }
                        if (var.GetType().Name.Equals("TextBox"))
                        {
                            WinControl.TextBox tb = var as WinControl.TextBox;
                            if (tb.ReadOnly == false && !MyControl.TextBox.TextBoxPriceCheck(tb))
                            {
                                return false;
                            }
                        }
                    }
                    return true;
                }
                /// <summary>
                /// 设置文本框是否为只读
                /// </summary>
                /// <param name="true">true是或false否</param>
                /// <param name="txtBoxs"></param>
                /// <returns></returns>
                public static bool ReadOnly(bool @true, params WinControl.TextBox[] txtBoxs)
                {
                    foreach (WinControl.TextBox var in txtBoxs)
                    {
                        var.Enabled = !@true;
                    }
                    return true;
                }
                /// <summary>
                /// 清空TextBox属性Text
                /// </summary>
                /// <param name="txtBoxs"></param>
                /// <returns></returns>
                public static void Clear(params WinControl.TextBox[] txtBoxs)
                {
                    ResetText("", txtBoxs);
                }
                /// <summary>
                /// 将TextBox属性Text设置成默认值
                /// </summary>
                /// <param name="default"></param>
                /// <param name="txtBoxs"></param>
                /// <returns></returns>
                public static void ResetText(string @default, params WinControl.TextBox[] txtBoxs)
                {
                    foreach (WinControl.TextBox var in txtBoxs)
                    {
                        var.Text = @default;
                    }
                }
            }
            public static class ComboBox
            {
                /// <summary>
                /// 设置列表框是否为只读
                /// </summary>
                /// <param name="true">true是或false否</param>
                /// <param name="comBoxs"></param>
                /// <returns></returns>
                public static bool ReadOnly(bool @true, params WinControl.ComboBox[] comBoxs)
                {
                    foreach (WinControl.ComboBox var in comBoxs)
                    {
                        var.Enabled = !@true;
                    }
                    return true;
                }
            }
            public static class Text
            {
                /// <summary>
                /// 将文本转换成Double
                /// </summary>
                /// <param name="text"></param>
                /// <returns></returns>
                //public static double TextToNumber(string text)
                //{
                //    try
                //    {
                //        return double.Parse(text.Trim());
                //    }
                //    catch
                //    {
                //        return 0;
                //    }
    
                //}
                /// <summary>
                /// 文本或取对象的Text属性转换为double
                /// </summary>
                /// <param name="obj">文本或控件(取控件的Text中的文本)</param>
                /// <returns></returns>
                public static double TextToNumber(object obj)
                {
                    Control ctr = obj as Control;
                    try
                    {
                        if (ctr != null)
                        {
                            return double.Parse(ctr.Text.Trim());
                        }
                        else
                        {
                            return double.Parse(obj.ToString().Trim());
                        }
                    }
                    catch
                    {
                        return 0;
                    }
                }
            }
            public static class Clear
            {
                /// <summary>
                /// 清除控件容器或控件的Text属性
                /// </summary>
                /// <param name="control"></param>
                public static void ClearContainerControlsText(WinControl.Control control)
                {
                    for (int i = 0; i < control.Controls.Count; i++)
                    {
                        if (control.Controls[i].HasChildren)
                        {
                            //递归
                            ClearContainerControlsText(control.Controls[i]);
                        }
                        string name = control.Controls[i].GetType().Name.ToString();
                        if (name.Equals("TextBox"))
                        {
                            WinControl.TextBox tbox = (WinControl.TextBox)control.Controls[i];
                            if (tbox.ReadOnly != true)
                            {
                                tbox.Clear();
                            }
                        }
                        else if (name.Equals("ComboBox"))
                        {
                            WinControl.ComboBox com = (WinControl.ComboBox)control.Controls[i];
                            if (com.Enabled == true)
                            {
                                com.SelectedIndex = -1;
                                com.ResetText();
                            }
                        }
                        else if (name.Equals("DateTimePicker"))
                        {
                            WinControl.DateTimePicker dtp = (WinControl.DateTimePicker)control.Controls[i];
                            //dtp.Text = PublicMod.UserInfo.LOGIN_TIME;
                            dtp.Format = WinControl.DateTimePickerFormat.Custom;
                            dtp.CustomFormat = "  ";
                        }
                    }
                }
                /// <summary>
                /// 清除控件容器或控件的Text属性
                /// </summary>
                /// <param name="subControl"></param>
                /// <param name="ClearControlsOfParent">是否清除控件所在容器控件内的其他控件的Text属性</param>
                //public static void ClearContainerControlsText(WinControl.Control subControl, bool ClearControlsOfParent)
                //{
                //    if (subControl.Parent == null)
                //    {
                //        ClearContainerControlsText(subControl);
                //    }
                //    else
                //    {
                //        ClearContainerControlsText(subControl.Parent);
                //    }
                //}
                /// <summary>
                /// 清除控件容器或控件的Text属性,不清空只读或不可用的控件
                /// </summary>
                /// <param name="control"></param>
                /// <param name="exceptControlName">不进行清除的控件的Name属性</param>
                public static void ClearContainerControlsText(WinControl.Control control, params string[] exceptControlName)
                {
                    for (int i = 0; i < control.Controls.Count; i++)
                    {
                        bool flag = false;
    
                        if (control.Controls[i].HasChildren)
                        {
                            //递归
                            ClearContainerControlsText(control.Controls[i], exceptControlName);
                        }
                        string name = control.Controls[i].GetType().Name.ToString();
                        string controlName = control.Controls[i].Name.ToString();
                        foreach (string var in exceptControlName)
                        {
                            if (var == controlName)
                            {
                                flag = true;
                                break;
                            }
                        }
                        if (flag)
                        {
                            continue;
                        }
                        if (name.Equals("TextBox"))
                        {
                            WinControl.TextBox tbox = (WinControl.TextBox)control.Controls[i];
                            if (tbox.ReadOnly != true && tbox.Text.Trim() != "")
                            {
                                tbox.Clear();
                            }
                        }
                        else if (name.Equals("ComboBox"))
                        {
                            WinControl.ComboBox com = (WinControl.ComboBox)control.Controls[i];
                            if (com.Enabled == true)
                            {
                                com.SelectedIndex = -1;
                                com.Text = "";
                            }
                        }
                        else if (name.Equals("DateTimePicker"))
                        {
                            WinControl.DateTimePicker dtp = (WinControl.DateTimePicker)control.Controls[i];
                            //dtp.Text = PublicMod.UserInfo.LOGIN_TIME;
                            dtp.Format = WinControl.DateTimePickerFormat.Custom;
                            dtp.CustomFormat = "  ";
                        }
                        else if (name.Equals("CheckBox"))
                        {
                            WinControl.CheckBox cbx = (WinControl.CheckBox)control.Controls[i];
                            if (cbx.CheckState != CheckState.Unchecked)
                            {
                                cbx.CheckState = WinControl.CheckState.Unchecked;
                            }
                        }
                        else if (name.Equals("RichTextBox"))
                        {
                            WinControl.RichTextBox rtxtBox = (WinControl.RichTextBox)control.Controls[i];
                            if (rtxtBox.Text.Trim() != "")
                            {
                                rtxtBox.Clear();
                            }
                        }
                    }
                }
                /// <summary>
                /// 清除控件及子控件的Text属性
                /// </summary>
                /// <param name="c"></param>
                /// <param name="exceptControl">排除的要进行清除的控件</param>
                //public static void ClearControlsText(WinControl.Control c, params WinControl.Control[] exceptControl)
                //{
                //    foreach (WinControl.Control var in exceptControl)
                //    {
                //        if (c.Name.Equals(var.Name))
                //        {
                //            continue;
                //        }
                //        ClearControlsText(c);
                //    }
                //}
                /// <summary>
                /// 清除控件及子控件的Text属性
                /// </summary>
                /// <param name="c"></param>
                public static void ClearControlsText(WinControl.Control c)
                {
                    if (c.Controls.Count > 0)
                    {
                        foreach (WinControl.Control var in c.Controls)
                        {
                            ClearControlsText(var);
                        }
                    }
                    if (CheckControlType(c))
                    {
                        c.ResetText();
                    }
                }
                public static void ClearControlsText(params WinControl.Control[] c)
                {
                    foreach (WinControl.Control var in c)
                    {
                        ClearControlsText(var);
                    }
                }
                static bool CheckControlType(WinControl.Control c)
                {
                    string[] names = new string[] { "TextBox", "ComboBox" };//该数组可以修改
                    foreach (string var in names)
                    {
                        if (c.GetType().Name.Equals(var))
                        {
                            return true;
                        }
                        continue;
                    }
                    return false;
                }
                /// <summary>
                /// 清除控件容器或控件的Text属性,包括只读和不可用的控件
                /// </summary>
                /// <param name="control"></param>
                /// <param name="exceptControlName">不进行清除的控件的Name属性</param>
                public static void ClearContainerControlsTextAnyway(WinControl.Control control, params string[] exceptControlName)
                {
                    for (int i = 0; i < control.Controls.Count; i++)
                    {
                        bool flag = false;
    
                        if (control.Controls[i].HasChildren)
                        {
                            //递归
                            ClearContainerControlsText(control.Controls[i], exceptControlName);
                        }
                        string name = control.Controls[i].GetType().Name.ToString();
                        string controlName = control.Controls[i].Name.ToString();
                        foreach (string var in exceptControlName)
                        {
                            if (var == controlName)
                            {
                                flag = true;
                                break;
                            }
                        }
                        if (flag)
                        {
                            continue;
                        }
                        if (name.Equals("TextBox"))
                        {
                            WinControl.TextBox tbox = (WinControl.TextBox)control.Controls[i];
                            //if (tbox.ReadOnly != true)
                            //{
                            tbox.Clear();
                            //}
                        }
                        else if (name.Equals("ComboBox"))
                        {
                            WinControl.ComboBox com = (WinControl.ComboBox)control.Controls[i];
                            //if (com.Enabled == true)
                            //{
                            com.SelectedIndex = -1;
                            com.ResetText();
                            //}
                        }
                        else if (name.Equals("DateTimePicker"))
                        {
                            WinControl.DateTimePicker dtp = (WinControl.DateTimePicker)control.Controls[i];
                            //dtp.Text = PublicMod.UserInfo.LOGIN_TIME;
                            dtp.Format = WinControl.DateTimePickerFormat.Custom;
                            dtp.CustomFormat = "  ";
                        }
                        else if (name.Equals("CheckBox"))
                        {
                            WinControl.CheckBox cbx = (WinControl.CheckBox)control.Controls[i];
                            cbx.CheckState = WinControl.CheckState.Unchecked;
                        }
                        else if (name.Equals("RichTextBox"))
                        {
                            WinControl.RichTextBox rtxtBox = (WinControl.RichTextBox)control.Controls[i];
                            rtxtBox.Clear();
                        }
                    }
                }
    
            }
            public static class DataGridView
            {
                /// <summary>
                /// 用于给DataGridView中的行添加一个首列被冻结的为排序的列,排序列自动生成。
                /// 如果存在其他列可以排序,还需要在Sorted事件中调用,重新绘制序号
                /// </summary>
                /// <param name="dgv">要添加排序列的GataGridView对象</param>
                public static void SetRowIndex(WinControl.DataGridView dgv, DataTable dTable)
                {
                    dgv.AutoGenerateColumns = false;
                    dgv.DataSource = dTable;
                    if (dgv != null)
                    {
                        dgv.AllowUserToAddRows = false;
                        DataTable dt = (DataTable)dgv.DataSource;
                        if (dt != null && !dt.Columns.Contains("RowIndex"))
                        {
                            dt.Columns.Add("RowIndex", typeof(string));
                        }
                        DataGridViewColumn dgvColumn = null;
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].DataPropertyName == "RowIndex")
                            {
                                if (dgv.Columns[i].Name != "RowIndex")
                                {
                                    dgv.Columns[i].Name = "RowIndex";
                                }
                            }
                            else
                            {
                                continue;
                            }
                        }
                        if (!dgv.Columns.Contains("RowIndex"))
                        {
                            dgvColumn = new DataGridViewColumn(new DataGridViewTextBoxCell());
                            dgv.Columns.Add(dgvColumn);
                        }
                        else
                        {
                            dgvColumn = dgv.Columns["RowIndex"];
                        }
                        //外观上显示的顺序为第一列//dgvColumn.Index 为真实序列号,只读;
                        dgvColumn.DisplayIndex = 0;
                        //冻结,列相对静止
                        dgvColumn.Frozen = true;
                        //dgvColumn.HeaderCell.Value = "序号";//效果似乎同Name属性相同
                        dgvColumn.Name = "RowIndex";
                        dgvColumn.HeaderText = "序号";
                        //绑定到数据源:不绑定可不行
                        if (!dgvColumn.IsDataBound)
                        {
                            dgvColumn.DataPropertyName = "RowIndex";
                        }
                        //样式
                        dgvColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dgvColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                        dgvColumn.SortMode = DataGridViewColumnSortMode.NotSortable;
                        dgvColumn.ReadOnly = true;
                        dgvColumn.Visible = true;
                        //后加
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].Name != dgv.Columns[i].DataPropertyName)
                            {
                                dgv.Columns[i].Name = dgv.Columns[i].DataPropertyName;
                            }
                        }
                        //不允许列排序,允许排序且没有汇总时,需要在排序事件中再调用一次该方法。
                        //允许排序且允许汇总时,汇总行将不一定在最后一行。这是一个有待遇解决的问题。
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].SortMode != DataGridViewColumnSortMode.NotSortable)
                            {
                                dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                            }
                        }
                        if (dt != null)
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (dt.Rows[i]["RowIndex"] != DBNull.Value && dt.Rows[i]["RowIndex"].ToString() == "合计")
                                {
                                    dt.Rows.RemoveAt(i);
                                    dt.AcceptChanges();
                                    //break;
                                }
                            }
                        }
                        //dgv.DataSource = dt;
                        //dt.AcceptChanges();
    
                        if (dgv.Rows.Count > 0)
                        {
                            for (int i = 0; i < dgv.Rows.Count; i++)
                            {
                                //获取行的索引号赋值给序号
                                //行索引号是由行的位置确定的
                                dgv.Rows[i].Cells["RowIndex"].Value = dgv.Rows[i].Index + 1;
                            }
                        }
                        else if (dt != null && dt.Rows.Count > 0)
                        {
                            object[] obj = null;
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                obj = dt.Rows[i].ItemArray;
                                obj.SetValue((i + 1).ToString(), dt.Columns.IndexOf("RowIndex"));
                                dt.Rows[i].ItemArray = obj;
                            }
                        }
                        if (dt != null)
                        {
                            dt.AcceptChanges();
                            dgv.DataSource = dt;
                        }
                    }
                }
                /// <summary>
                /// 用于给DataGridView中的行添加一个首列被冻结的为排序的列,排序列自动生成。
                /// 如果存在其他列可以排序,还需要在Sorted事件中调用,重新绘制序号
                /// </summary>
                /// <param name="dgv">要添加排序列的GataGridView对象</param>
                public static void SetRowIndex2(WinControl.DataGridView dgv, DataTable dTable)
                {
                    dgv.AutoGenerateColumns = false;
                    dgv.DataSource = dTable;
                    if (dgv != null)
                    {
                        dgv.AllowUserToAddRows = false;
                        DataTable dt = (DataTable)dgv.DataSource;
                        if (dt != null && !dt.Columns.Contains("RowIndex"))
                        {
                            dt.Columns.Add("RowIndex", typeof(string));
                        }
                        DataGridViewColumn dgvColumn = null;
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].DataPropertyName == "RowIndex")
                            {
                                if (dgv.Columns[i].Name != "RowIndex")
                                {
                                    dgv.Columns[i].Name = "RowIndex";
                                }
                            }
                            else
                            {
                                continue;
                            }
                        }
                        if (!dgv.Columns.Contains("RowIndex"))
                        {
                            dgvColumn = new DataGridViewColumn(new DataGridViewTextBoxCell());
                            dgv.Columns.Add(dgvColumn);
                        }
                        else
                        {
                            dgvColumn = dgv.Columns["RowIndex"];
                        }
                        //外观上显示的顺序为第一列//dgvColumn.Index 为真实序列号,只读;
                        dgvColumn.DisplayIndex = 0;
                        //冻结,列相对静止
                        dgvColumn.Frozen = true;
                        //dgvColumn.HeaderCell.Value = "序号";//效果似乎同Name属性相同
                        dgvColumn.Name = "RowIndex";
                        dgvColumn.HeaderText = "序号";
                        //绑定到数据源:不绑定可不行
                        if (!dgvColumn.IsDataBound)
                        {
                            dgvColumn.DataPropertyName = "RowIndex";
                        }
                        //样式
                        dgvColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dgvColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                        dgvColumn.SortMode = DataGridViewColumnSortMode.NotSortable;
                        dgvColumn.ReadOnly = true;
                        dgvColumn.Visible = true;
                        //后加
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].Name != dgv.Columns[i].DataPropertyName)
                            {
                                dgv.Columns[i].Name = dgv.Columns[i].DataPropertyName;
                            }
                        }
                        //不允许列排序,允许排序且没有汇总时,需要在排序事件中再调用一次该方法。
                        //允许排序且允许汇总时,汇总行将不一定在最后一行。这是一个有待遇解决的问题。
                        //for (int i = 0; i < dgv.Columns.Count; i++)
                        //{
                        //    if (dgv.Columns[i].SortMode != DataGridViewColumnSortMode.NotSortable)
                        //    {
                        //        dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                        //    }
                        //}
                        if (dt != null)
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                if (dt.Rows[i]["RowIndex"] != DBNull.Value && dt.Rows[i]["RowIndex"].ToString() == "合计")
                                {
                                    dt.Rows.RemoveAt(i);
                                    dt.AcceptChanges();
                                    //break;
                                }
                            }
                        }
                        //dgv.DataSource = dt;
                        //dt.AcceptChanges();
    
                        if (dgv.Rows.Count > 0)
                        {
                            for (int i = 0; i < dgv.Rows.Count; i++)
                            {
                                //获取行的索引号赋值给序号
                                //行索引号是由行的位置确定的
                                dgv.Rows[i].Cells["RowIndex"].Value = dgv.Rows[i].Index + 1;
                            }
                        }
                        else if (dt != null && dt.Rows.Count > 0)
                        {
                            object[] obj = null;
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                obj = dt.Rows[i].ItemArray;
                                obj.SetValue((i + 1).ToString(), dt.Columns.IndexOf("RowIndex"));
                                dt.Rows[i].ItemArray = obj;
                            }
                        }
                        if (dt != null)
                        {
                            dt.AcceptChanges();
                            dgv.DataSource = dt;
                        }
                    }
                }
                /// <summary>
                /// 去除订单中多条货物时的重复信息
                /// 使用顺序
                /// SetRowIndex();
                /// BindGridView();
                /// SetLastRow();
                /// </summary>
                /// <param name="dtable"></param>
                /// <param name="accordingName">清除重复记录的依据列,查询结果必须以其排序</param>
                /// <param name="dgvColunsNames">要去掉的重复行的列名称,必须包含名为"RowIndex"的项,该项是索引项,用于重设索引。</param>
                public static void BindGridView(WinControl.DataGridView dgv, string accordingName, params string[] dgvColunsNames)
                {
                    //DataTable _dt = dtable.Clone();
                    //DataTable _dt = dtable.Copy();
                    if (dgv == null || dgv.Rows.Count == 0)
                    {
                        return;
                    }
                    DataTable _dt = ((DataTable)dgv.DataSource).Copy();
    
                    dgv.DataSource = _dt;
                    //if (_dt != null)
                    //{
                    //    for (int i = 0; i < _dt.Rows.Count; i++)
                    //    {
                    //        if (_dt.Rows[i]["RowIndex"] != DBNull.Value && _dt.Rows[i]["RowIndex"].ToString() == "合计")
                    //        {
                    //            _dt.Rows.RemoveAt(i);
                    //            //dt.Rows.
                    //            _dt.AcceptChanges();
                    //            break;
                    //        }
                    //    }
                    //}
                    if (dgv.Rows.Count > 0)
                    {
                        //去除订单中多条货物时的重复信息
    
                        string[] ColName = dgvColunsNames;
                        string[] KeyColName ={ accordingName };
                        long RowNum = 1;
    
                        //装入第一行
                        DataGridViewRow tmpRow = dgv.Rows[0];
                        Boolean SameFlag = true;
    
                        //逐行检查
                        for (int i = 1; i < dgv.Rows.Count; i++)
                        {
                            //KEY列一致的,则去掉重复信息,默认为一致
                            SameFlag = true;
                            for (int j = 0; j < KeyColName.Length; j++)
                            {
                                if (dgv.Rows[i].Cells[KeyColName[j]].Value.ToString() != tmpRow.Cells[KeyColName[j]].Value.ToString())
                                {
                                    SameFlag = false;
                                    break;
                                }
                            }
    
                            if (SameFlag)
                            {
                                //如果一致,去掉重复信息
                                for (int j = 0; j < ColName.Length; j++)
                                {
                                    if (ColName[j] != "")
                                    {
                                        dgv.Rows[i].Cells[ColName[j]].Value = DBNull.Value;
                                    }
                                }
                            }
                            else
                            {
                                //如果不一致重新保存比较行
                                RowNum = RowNum + 1;
                                tmpRow = dgv.Rows[i];
                                tmpRow.Cells["RowIndex"].Value = RowNum;
                            }
                        }
                    }
                }
                /// <summary>
                /// 生成DataGridView汇总行,不适用于允许列排序
                /// 必须搭配SetRowIndex()方法使用
                /// </summary>
                /// <param name="dgv"></param>
                /// <param name="dgvColunsNames"></param>
                public static void SetLastRow(WinControl.DataGridView dgv, params string[] dgvColunsNames)
                {
                    //不允许添加新行
                    if (dgv.AllowUserToAddRows == true)
                    {
                        dgv.AllowUserToAddRows = false;
                    }
                    if (dgv != null && dgv.Rows.Count > 0)
                    {
                        //不允许列排序,允许排序且没有汇总时,需要在排序事件中再调用一次该方法。
                        //允许排序且允许汇总时,汇总行将不一定在最后一行。这是一个有待遇解决的问题。
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].SortMode != DataGridViewColumnSortMode.NotSortable)
                            {
                                dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                            }
                        }
                        DataTable dt = (DataTable)dgv.DataSource;
                        //dgv.DataSource = dt;
                        DataRow dr = dt.NewRow();
                        try
                        {
                            foreach (string var in dgvColunsNames)
                            {
                                double obj = 0.0D;
                                for (int i = 0; i < dgv.Rows.Count; i++)
                                {
                                    obj += double.Parse(dgv.Rows[i].Cells[var].Value == DBNull.Value ? "0" : (dgv.Rows[i].Cells[var].Value.ToString().Trim() == "" ? "0" : dgv.Rows[i].Cells[var].Value.ToString().Trim()));
                                }
                                //if (var.Substring(var.Length - 1, 1) == "1")
                                //{
                                //    dr[var.Substring(0, var.Length - 1)] = obj.ToString();
                                //}
                                //else
                                //{
                                dr[var] = obj.ToString();
                                //}
    
                            }
                        }
                        catch (Exception ex)
                        {
                            sMessageBox.Show(ex.Message);
                        }
                        dr["RowIndex"] = "合计";
                        dt.Rows.Add(dr);
                        //dgv.Rows.in
                        dt.AcceptChanges();
                    }
                }
                /// <summary>
                /// 设置DataGridView的绑定数据字段名(DataPropertyName)赋值给列名(Name)
                /// </summary>
                /// <param name="dgv"></param>
                public static void SetColumnsNameEqulsDataPropertyName(params WinControl.DataGridView[] dgv)
                {
                    foreach (WinControl.DataGridView d in dgv)
                    {
                        //d.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                        d.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.NotSet;
                        for (int i = 0; i < d.Columns.Count; i++)
                        {
                            if (d.Columns[i].Name != d.Columns[i].DataPropertyName)
                            {
                                d.Columns[i].Name = d.Columns[i].DataPropertyName;
                                d.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                                if (d.Columns[i].HeaderText.ToString() == "序号")
                                {
                                    d.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                                }
                            }
                            //d.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft;
                        }
                    }
                }
                public static void SetRowIndexAndLastRow(System.Windows.Forms.DataGridView dgv, ref DataTable dTable, params string[] dgvColumnsNames)
                {
                    dgv.AutoGenerateColumns = false;
                    //dgv.DataSource = dTable;
                    if (dgv != null)
                    {
                        dgv.AllowUserToAddRows = false;
                        //DataTable dt = (DataTable)dgv.DataSource;
                        if (dTable != null && !dTable.Columns.Contains("RowIndex"))
                        {
                            dTable.Columns.Add("RowIndex", typeof(string));
                        }
                        dgv.DataSource = dTable;
                        DataGridViewColumn dgvColumn = null;
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].DataPropertyName == "RowIndex")
                            {
                                if (dgv.Columns[i].Name != "RowIndex")
                                {
                                    dgv.Columns[i].Name = "RowIndex";
                                }
                            }
                            else
                            {
                                continue;
                            }
                        }
                        if (!dgv.Columns.Contains("RowIndex"))
                        {
                            dgvColumn = new DataGridViewColumn(new DataGridViewTextBoxCell());
                            dgv.Columns.Add(dgvColumn);
                        }
                        else
                        {
                            dgvColumn = dgv.Columns["RowIndex"];
                        }
                        //外观上显示的顺序为第一列//dgvColumn.Index 为真实序列号,只读;
                        dgvColumn.DisplayIndex = 0;
                        //冻结,列相对静止
                        dgvColumn.Frozen = true;
                        //dgvColumn.HeaderCell.Value = "序号";//效果似乎同Name属性相同
                        dgvColumn.Name = "RowIndex";
                        dgvColumn.HeaderText = "序号";
                        //绑定到数据源:不绑定可不行
                        if (!dgvColumn.IsDataBound)
                        {
                            dgvColumn.DataPropertyName = "RowIndex";
                        }
                        //样式
                        dgvColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                        dgvColumn.AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                        dgvColumn.SortMode = DataGridViewColumnSortMode.NotSortable;
                        dgvColumn.ReadOnly = true;
                        dgvColumn.Visible = true;
                        //后加
                        for (int i = 0; i < dgv.Columns.Count; i++)
                        {
                            if (dgv.Columns[i].Name != dgv.Columns[i].DataPropertyName)
                            {
                                dgv.Columns[i].Name = dgv.Columns[i].DataPropertyName;
                            }
                            //不允许列排序,允许排序且没有汇总时,需要在排序事件中再调用一次该方法。
                            //允许排序且允许汇总时,汇总行将不一定在最后一行。这是一个有待遇解决的问题。
                            if (dgv.Columns[i].SortMode != DataGridViewColumnSortMode.NotSortable)
                            {
                                dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                            }
                        }
    
    
    
                        if (dTable != null)
                        {
                            for (int i = 0; i < dTable.Rows.Count; i++)
                            {
                                if (dTable.Rows[i]["RowIndex"] != DBNull.Value && dTable.Rows[i]["RowIndex"].ToString() == "合计")
                                {
                                    dTable.Rows.RemoveAt(i);
                                    dTable.AcceptChanges();
                                    //break;
                                }
                            }
                        }
                        //    //dgv.DataSource = dt;
                        //    //dt.AcceptChanges();
    
                        if (dgv.Rows.Count > 0)
                        {
                            for (int i = 0; i < dgv.Rows.Count; i++)
                            {
                                //获取行的索引号赋值给序号
                                //行索引号是由行的位置确定的
                                dgv.Rows[i].Cells["RowIndex"].Value = dgv.Rows[i].Index + 1;
                            }
                        }
                        else if (dTable != null && dTable.Rows.Count > 0)
                        {
                            object[] obj = null;
                            for (int i = 0; i < dTable.Rows.Count; i++)
                            {
                                obj = dTable.Rows[i].ItemArray;
                                obj.SetValue((i + 1).ToString(), dTable.Columns.IndexOf("RowIndex"));
                                dTable.Rows[i].ItemArray = obj;
                            }
                        }
                        if (dTable != null)
                        {
                            dTable.AcceptChanges();
                            //dgv.DataSource = dt;
                        }
                    }
                    ////不允许添加新行
                    //if (dgv.AllowUserToAddRows == true)
                    //{
                    //    dgv.AllowUserToAddRows = false;
                    //}
                    if (dgv != null && dgv.Rows.Count > 0)
                    {
                        ////不允许列排序,允许排序且没有汇总时,需要在排序事件中再调用一次该方法。
                        ////允许排序且允许汇总时,汇总行将不一定在最后一行。这是一个有待遇解决的问题。
                        //for (int i = 0; i < dgv.Columns.Count; i++)
                        //{
                        //    if (dgv.Columns[i].SortMode != DataGridViewColumnSortMode.NotSortable)
                        //    {
                        //        dgv.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                        //    }
                        //}
                        //DataTable dt = (DataTable)dgv.DataSource;
                        //dgv.DataSource = dt;
                        if (dgvColumnsNames.Length > 0)
                        {
    
    
                            DataRow dr = dTable.NewRow();
                            try
                            {
                                foreach (string var in dgvColumnsNames)
                                {
                                    double obj = 0.0D;
                                    for (int i = 0; i < dgv.Rows.Count; i++)
                                    {
                                        obj += double.Parse(dgv.Rows[i].Cells[var].Value == DBNull.Value ? "0" : dgv.Rows[i].Cells[var].Value.ToString().Trim());
                                    }
                                    if (var.Substring(var.Length - 1, 1) == "1")
                                    {
                                        dr[var.Substring(0, var.Length - 1)] = obj.ToString();
                                    }
                                    else
                                    {
                                        dr[var] = obj.ToString();
                                    }
    
                                }
                            }
                            catch (Exception ex)
                            {
                                sMessageBox.Show(ex.Message);
                            }
                            dr["RowIndex"] = "合计";
                            dTable.Rows.Add(dr);
                        }
                        //dgv.Rows.in
                        dTable.AcceptChanges();
                    }
                }
            }
            public static class UnEnableControls
            {
                public static void UnEnableControl(WinControl.Control ctr)
                {
                    foreach (WinControl.Control var in ctr.Controls)
                    {
                        var.Enabled = false;
                    }
                }
                public static void UnEnableControl(params WinControl.Control[] ctr)
                {
                    foreach (WinControl.Control var in ctr)
                    {
                        foreach (WinControl.Control var2 in var.Controls)
                        {
                            var2.Enabled = false;
                        }
                        var.Enabled = false;
                    }
                }
                public static void UnEnableControl(bool flag, params WinControl.Control[] ctr)
                {
                    foreach (WinControl.Control var in ctr)
                    {
                        foreach (WinControl.Control var2 in var.Controls)
                        {
                            var2.Enabled = flag;
                        }
                        var.Enabled = flag;
                    }
                }
            }
            public static class Button
            {
                /// <summary>
                /// 是否禁用
                /// </summary>
                /// <param name="flag">true可用,false禁用</param>
                /// <param name="btn"></param>
                public static void Enable(bool flag, params WinControl.Button[] btn)
                {
                    foreach (WinControl.Button var in btn)
                    {
                        var.Enabled = flag;
                    }
                }
                /// <summary>
                /// 禁用
                /// </summary>
                /// <param name="btn"></param>
                public static void Enable(params WinControl.Button[] btn)
                {
                    Enable(false, btn);
                }
            }
            /// <summary>
            /// 禁用
            /// </summary>
            /// <param name="ctl"></param>
            public static void Enable(params WinControl.Control[] ctl)
            {
                Enable(false, ctl);
            }
            /// <summary>
            /// 是否禁用
            /// </summary>
            /// <param name="flag">true可用,false禁用</param>
            /// <param name="ctl"></param>
            public static void Enable(bool flag, params WinControl.Control[] ctl)
            {
                foreach (WinControl.Control var in ctl)
                {
                    var.Enabled = flag;
                }
            }
            /// <summary>
            /// 设置与控件关联的文本属性
            /// </summary>
            /// <param name="default">属性值</param>
            /// <param name="ctl"></param>
            public static void ResetText(string @default, params WinControl.Control[] ctl)
            {
                foreach (WinControl.Control var in ctl)
                {
                    var.Text = @default;
                }
            }
            /// <summary>
            /// 设置与控件关联的文本属性为空串
            /// </summary>
            /// <param name="ctl"></param>
            public static void ResetText(params WinControl.Control[] ctl)
            {
                ResetText("", ctl);
            }
            /// <summary>
            /// 将控件的只读属性进行设置
            /// </summary>
            /// <param name="ctl"></param>
            public static void Readonly(params WinControl.Control[] ctl)
            {
                Readonly(true, ctl);
            }
            /// <summary>
            /// 将控件的只读属性进行设置
            /// </summary>
            /// <param name="bool"></param>
            /// <param name="ctl"></param>
            public static void Readonly(bool @bool, params WinControl.Control[] ctl)
            {
                foreach (WinControl.Control var in ctl)
                {
                    TextBoxBase tbb = var as TextBoxBase;
                    if (tbb != null)
                    {
                        tbb.ReadOnly = @bool;
                    }
                }
            }
        }
  • 相关阅读:
    [置顶] windows player,wzplayerV2 for windows
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    ffmpeg for ios 交叉编译 (支持i686 armv7 armv7s) 包含lame支持
    编译cegcc 0.59.1
    wzplayer 近期将会支持BlackBerry和WinPhone8
    wzplayerEx for android(真正硬解接口,支持加密的 player)
    windows player,wzplayerV2 for windows(20140416)更新
    编译cegcc 0.59.1
  • 原文地址:https://www.cnblogs.com/goto/p/2443352.html
Copyright © 2011-2022 走看看