using System; using System.Collections.Generic; using System.Linq; using System.Text; using DevExpress.XtraEditors.Repository; using System.Drawing; using System.Windows.Forms; using System.Data; namespace WMS.Common { public class DevControlHelper { #region 画表头的CheckBox public static void DrawCheckBox(DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e, bool chk) { RepositoryItemCheckEdit repositoryCheck = e.Column.ColumnEdit as RepositoryItemCheckEdit; if (repositoryCheck != null) { Graphics g = e.Graphics; Rectangle r = e.Bounds; DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo info; DevExpress.XtraEditors.Drawing.CheckEditPainter painter; DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs args; info = repositoryCheck.CreateViewInfo() as DevExpress.XtraEditors.ViewInfo.CheckEditViewInfo; painter = repositoryCheck.CreatePainter() as DevExpress.XtraEditors.Drawing.CheckEditPainter; info.EditValue = chk; info.Bounds = r; info.CalcViewInfo(g); args = new DevExpress.XtraEditors.Drawing.ControlGraphicsInfoArgs(info, new DevExpress.Utils.Drawing.GraphicsCache(g), r); painter.Draw(args); args.Cache.Dispose(); } } #endregion #region 多选功能 public static bool ClickGridCheckBox(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName, bool currentStatus) { bool result = false; if (gridView != null) { gridView.ClearSorting();//禁止排序 gridView.PostEditor(); DevExpress.XtraGrid.Views.Grid.ViewInfo.GridHitInfo info; Point pt = gridView.GridControl.PointToClient(Control.MousePosition); info = gridView.CalcHitInfo(pt);//鼠标位置(点) 表格热区 //info.InColumn && info.Column != null && if (info.InColumn && info.Column != null && info.Column.FieldName == fieldName)//判断是不是Check列 { for (int i = 0; i < gridView.RowCount; i++) { gridView.SetRowCellValue(i, fieldName, !currentStatus);//对check列进行复制操作 } return true; } } return result; } public static void ClickCheckBox(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName, bool currentStatus) { if (gridView != null) { int rowIndex = gridView.FocusedRowHandle; gridView.SetRowCellValue(rowIndex, fieldName, !currentStatus);//对check列进行复制操作 } } #endregion #region 单选的实现 public static void ClickGridRadioCheck(DevExpress.XtraGrid.Views.Grid.GridView gridView, string fieldName) { Boolean result = false; if (gridView != null) { gridView.ClearSorting();//禁止排序 gridView.PostEditor(); int curRowID = gridView.FocusedRowHandle; DataRow dr = gridView.GetFocusedDataRow(); object isChecked = dr[fieldName]; if (isChecked != DBNull.Value)//数据中的空 { result = Convert.ToBoolean(isChecked); } gridView.SetRowCellValue(curRowID, fieldName, !result);//对check列进行赋值操作 for (int i = 0; i < gridView.RowCount; i++) { //对check列进行赋值操作 false if (i != curRowID) { gridView.SetRowCellValue(i, fieldName, false); } } } } #endregion } }