2
以下のコードを使用してdevexpress grid group rowにチェックボックスを描いています。グループ行のDevExpress GridHitInfo
using DevExpress.XtraGrid.Views.Base;
using DevExpress.XtraGrid.Drawing;
using DevExpress.Utils.Drawing;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraEditors.ViewInfo
using DevExpress.XtraEditors.Drawing;
//...
void gvWorkspaces_CustomDrawGroupRow(object sender, RowObjectCustomDrawEventArgs e) {
GridGroupRowPainter groupRowPainter = (GridGroupRowPainter)e.Painter;
GridGroupRowInfo info = (GridGroupRowInfo)e.Info;
groupRowPainter.DrawGroupRowBackground(info);
groupRowPainter.DrawObject(info);
Rectangle checkRect = info.ButtonBounds;
checkRect.X = e.Bounds.Right - checkRect.Width -4;
DrawCheckBox(e.Graphics, checkRect, true);
e.Handled = true;
}
void DrawCheckBox(Graphics graphics, Rectangle r, bool Checked) {
RepositoryItemCheckEdit edit = new RepositoryItemCheckEdit();
CheckEditViewInfo info = (CheckEditViewInfo)edit.CreateViewInfo();
info.EditValue = Checked;
info.Bounds = r;
info.CalcViewInfo(graphics);
CheckEditPainter painter = (CheckEditPainter)edit.CreatePainter();
ControlGraphicsInfoArgs args = new ControlGraphicsInfoArgs(info, new GraphicsCache(graphics), r);
painter.Draw(args);
args.Cache.Dispose();
}
ただし、チェックボックスにアクセスしてチェックを入れたりアンラインしたりする際に問題があります。
GridHitInfoをGridViewクリックイベントで使用しようとしました(下記参照)。しかし、私はチェックボックスにアクセスするのに役立つものは何も得ていない。
void gvWorkspaces_Click(object sender, EventArgs e) {
GridView view = (GridView)sender;
Point pt = view.GridControl.PointToClient(Control.MousePosition);
GridHitInfo info = view.CalcHitInfo(pt);
}
助けてください。
おかげ
バラン
はうまく動作します。ありがとう – balan
私はチェックボックスをクリックすると、グループ行のテキストが見えなくなるのを見ています。これはソリューションの共通の動作ですか? – balan
@balan:それは異常です...私にはうまくいきます。とにかく、StackOverflowではなく[DevExpress Support Center](http://www.devexpress.com/Support/Center/Issues/CreateIssue.aspx?issuetype=question)を使用してください – DmitryG