最近开发一个程序,在C#中用到了以前VB6中的 MSHFlexGrid控件,用的原因只有一个,就是可以很简单的合并单元格,关于怎么合并,我在以前帖子中将过,详细见http://blog.csdn.net/yumanqing/archive/2006/12/22/1453633.aspx
下面把选中突出显示的代码帖出来;
窗体级别变量,主要是记录下次选中时,前一次选中的行
private int ColorRow = 0; //设置选中行的行号(设置颜色用)
//选中颜色
private void setColor(int r)
...{
ColorRow = r;
axMSHFlexGrid1.FillStyle = MSHierarchicalFlexGridLib.FillStyleSettings.flexFillRepeat;
axMSHFlexGrid1.Row = r;
axMSHFlexGrid1.RowSel = r;
axMSHFlexGrid1.Col =0;
axMSHFlexGrid1.ColSel = axMSHFlexGrid1.get_Cols() - axMSHFlexGrid1.FixedCols;
axMSHFlexGrid1.CellBackColor = Color.FromArgb(166, 202, 240);
axMSHFlexGrid1.FillStyle = MSHierarchicalFlexGridLib.FillStyleSettings.flexFillSingle;
//axMSHFlexGrid1.Col = 0;
// axMSHFlexGrid1.CellBackColor = Color.FromArgb(196, 229, 255);
axMSHFlexGrid1.RowSel = 0;
}
//清除颜色
private void clearColor(int setr)
...{
if (setr>0)
...{
int c = axMSHFlexGrid1.get_Cols();
int r = axMSHFlexGrid1.Rows;
int fc = axMSHFlexGrid1.FixedCols;
int fr = axMSHFlexGrid1.FixedRows;
axMSHFlexGrid1.FillStyle = MSHierarchicalFlexGridLib.FillStyleSettings.flexFillRepeat;
axMSHFlexGrid1.Row = setr;
axMSHFlexGrid1.Col = 0;
axMSHFlexGrid1.ColSel = c-fc;
axMSHFlexGrid1.CellBackColor = Color.White;
axMSHFlexGrid1.FillStyle = MSHierarchicalFlexGridLib.FillStyleSettings.flexFillSingle;
this.axMSHFlexGrid1.RowSel = 0;
// this.axMSHFlexGrid1.Row = 0;
}
}调用就简单了
private void axMSHFlexGrid1_MouseMoveEvent(object sender, AxMSHierarchicalFlexGridLib.DMSHFlexGridEvents_MouseMoveEvent e)
...{
int rsel = axMSHFlexGrid1.RowSel;
if (rsel > axMSHFlexGrid1.FixedRows - 1)
...{
if (ColorRow != rsel)
...{
// MessageBox.Show("上次" + ColorRow.ToString() + " 选中" + rsel.ToString());
this.clearColor(ColorRow);
}
this.setColor(rsel);
}
}注:添加引用==》COM==》Microsoft Hierarchical FlexGrid Control6.0(SP4)OLEDB
或者 Microsoft Hierarchical FlexGrid Control6.0(SP4)OLEDB
这个控件就出来了。