MSHFlexGrid控件设置合并后的选中突出显示一行的问题

来源:互联网 发布:网卡mac地址有几位 编辑:程序博客网 时间:2024/05/18 09:16

最近开发一个程序,在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(166202240);
            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

 这个控件就出来了。