如题,请问winform中,如果改变ContextMenuStrip鼠标经过后,的背景颜色

解决方案 »

  1.   

    能否推荐点东西呢?是否重写一些函数,好比OnPaint 就能做到呢?
      

  2.   

    dotnetbar在csdn有得下! 挺多模板的
      

  3.   

    只改鼠标移上去的背景色重新定义一下颜色表就行了。1.先把上下文菜单的绘制模式改成Professional(可以在属性窗口里设置)
    ContextMenuStrip1.RenderMode = ToolStripRenderMode.Professional
    这样就会使用ToolStripProfessionalRenderer来绘制ToolStrip。2.从ProfessionalColorTable派生一个自己的颜色表,按需重写其成员(都是只读属性)
    public class MyColorTable : ProfessionalColorTable
    {
    public override System.Drawing.Color MenuItemSelected {
    get { return Color.Red; }
    }
    }
    ToolStripProfessionalRenderer使用一个颜色表(ProfessionalColorTable)来保存它需要用到的颜色。只要从这个ProfessionalColorTable派生自己的颜色表并使用这个自己的颜色表就可以更改render使用的颜色了。
    3.使用派生的颜色表构造ToolStripProfessionalRender对象并应用到ToolStrip上
           
            ContextMenuStrip1.Renderer = New ToolStripProfessionalRenderer(New MyColorTable)如果你想把这个自定义的颜色表用到所有Toolstrip上,可以逐一设置它们的Render和RenderMode或者把RenderMode改成ManagerRenderMode,然后在ToolstripManager上统一设置。如果需要更高级的自定义,可以继承ToolStripProfessionalRenderer,重写相关方法(并把它应用到toolstrip上)。
      

  4.   

    //鼠标经过
       private void dataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
       {
       if(e.RowIndex>=0)
       {
       if (e.RowIndex != -1 && e.ColumnIndex != -1)
       {
       this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
       }
       }
       }
       //鼠标离开
       private void dataGridView1_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
       {
       if (e.RowIndex >= 0)
       {
       if(e.RowIndex != -1 && e.ColumnIndex != -1 )
       {
       this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.WhiteSmoke;
         
       }
       this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
     
       }
      

  5.   

    //鼠标经过
       private void dataGridView1_CellMouseMove(object sender, DataGridViewCellMouseEventArgs e)
       {
       if(e.RowIndex>=0)
       {
       if (e.RowIndex != -1 && e.ColumnIndex != -1)
       {
       this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
       }
       }
       }
       //鼠标离开
       private void dataGridView1_CellMouseLeave(object sender, DataGridViewCellEventArgs e)
       {
       if (e.RowIndex >= 0)
       {
       if(e.RowIndex != -1 && e.ColumnIndex != -1 )
       {
       this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = System.Drawing.Color.WhiteSmoke;
         
       }
       this.dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.White;
     
       }