C#版MultiSelected DataGrid

datagrid|select

using System;
using System.Drawing;
using System.Collections;
using System.Windows.Forms;
namespace cSharpDataGrid
{
 
 public class MyDataGrid : System.Windows.Forms.DataGrid
 {
  private ArrayList m=new ArrayList();
  Array MultiSelectedIndex
  {
   get
   {
    return this.m.ToArray(typeof (int));
   }
  }
   
  protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs e)
  {
   Console.WriteLine("Datagrid has hit");
   Point _posDg = new Point(e.X,e.Y);
   System.Windows.Forms.DataGrid.HitTestInfo _hitDg =base.HitTest(_posDg);
   if (HitDataGrid(_hitDg))
   {
    base.OnMouseDown(e);
   }
   base.OnMouseDown (e);
  }
  private bool HitDataGrid(DataGrid.HitTestInfo Hit)
  {
   try
   {
    switch (MyDataGrid.ModifierKeys)
    {
     case Keys.Control:
      if (Hit.Row>-1)
      {
       if (m.IndexOf(Hit.Row)>-1)
       {
        m.Remove(Hit.Row);
        this.UnSelect(Hit.Row);
       }
       else
       {
        m.Add(Hit.Row);
        this.Select(Hit.Row);
       }
      }
      return false;
     case Keys.Shift:
      if (Hit.Row>-1)
      {
       foreach (int intIndex in m)              
       {
        this.UnSelect(intIndex);
       }
       m.Clear();
       int _count;
       int _intStep;
       if (Hit.Row>this.CurrentRowIndex)
       {
        _intStep=1;
       }
       else
       {
        _intStep=-1;
       }
       for (_count=this.CurrentRowIndex ;_count==Hit.Row;_count+=_intStep)
       {
        m.Add(_count);
        this.Select(_count);
       }
      }
      return false;
     default:
      foreach (int _intIndex in m)
      {
       this.UnSelect(_intIndex);
      }
      m.Clear();
      if (Hit.Type==DataGrid.HitTestType.RowHeader)
      {
       m.Add(Hit.Row);
      }
      return true;
    }
   }
   catch(System.Exception ex)
   {
    throw ex;
   } 
  }
 }
}

时间: 2024-11-08 22:20:22

C#版MultiSelected DataGrid的相关文章

使用 ASP+ DataGrid 控件来创建主视图/详细资料视图

asp+|datagrid|创建|控件|视图 简介 Microsoft Visual Studio.NET 的下一发行版包括 DataGrid Web 控件 (作为服务器控件的 Active Server Page+ (ASP+) 套件的一部分). 该控件提供用以根据数据源的内容来表示 HTML 的功能. DataGrid 控件可以用于若干个只读汇报情形.该控件设计用于对丰富而完全可定制的数据表格布局的输出进行简化.还提供多个机制,用于通过超级链接及其对选择.排序.分页和原地编辑和其它特性的支持

利用ASP.NET实现分页管理器

asp.net|分页     在DataGrid的web版控件中提供了自动分页的功能,但是我从来没用过它,因为它实现的分页只是一种假相.我们为什么需要分页?那是因为符合条件的记录可能很多,如果一次读取所有的记录,不仅延长获取数据的时间,而且也极度浪费内存.而分页的存在的主要目的正是为了解决这两个问题(当然,也不排除为了UI美观的需要而使用分页的).而web版的DataGrid是怎样实现分页的了?它并没有打算解决上述两个问题,而还是一次读取所有的数据,然后以分页的样子表现出来.这是对效率和内存的极

分页管理器实现

    在DataGrid的web版控件中提供了自动分页的功能,但是我从来没用过它,因为它实现的分页只是一种假相.我们为什么需要分页?那是因为符合条件的记录可能很多,如果一次读取所有的记录,不仅延长获取数据的时间,而且也极度浪费内存.而分页的存在的主要目的正是为了解决这两个问题(当然,也不排除为了UI美观的需要而使用分页的).而web版的DataGrid是怎样实现分页的了?它并没有打算解决上述两个问题,而还是一次读取所有的数据,然后以分页的样子表现出来.这是对效率和内存的极大损害!     于是

datagrid分页问题(前后跳页)《控件版》

datagrid|分页|控件|问题 把它定义在用户控件中的.在.ASCX中写的. 在CSDN上看了很多的DATAGRID分页问题,当然DATAGRID有自己的分页项,功能是很有限的,我也在CSDN上看了很多自己分页的代码,发现都是用C#写的,我写了一个用ASP.NET中VB语言写的.以下代码供大家参考. HTML代码: <%@ Control Language="vb" AutoEventWireup="false" Codebehind="Data

datagrid分页《非控件版》

datagrid|分页|控件 首先对我之前的发表的那篇补充一下:当你在你的建立的工程中要用到我做的那个用户控件的话:声明 Protected DataGridPage1 As DataGridPage,前是你拖进来的控件名,后是你定义用户控件.然后在你代码中要用你的控件就写上: DataGridPage1.SetTarget(MyDataGrid, New BindDataDelegate(AddressOf binddata))DataGridPage1.SetStyle(10, False)

超级ASP版DataGrid——SkyGrid本地下载_应用技巧

吸取上次发布SkyTree的教训,这次不罗嗦了,开门见山,一个多月的努力就在今天见分晓了,觉得好请回帖表示,回帖内容不限,"顶"者有分! 现在开始体验超眩的SkyGrid(天格): 产品介绍:http://www.justrun.net/Product/SkyGrid.asp在线演示:http://www.justrun.net/Product/SkyGrid/免费下载:http://www.justrun.net/Download/SkyGrid.asp SkyGrid是维动工作室开

MSDN DataGrid嵌套DataList (saucer(思归)版)

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsdatalistclassedititemtemplatetopic.asp<%@ Page Language="C#" AutoEventWireup="True" %><%@ Import Namespace="System.Dat

我的DataGrid嵌套DataList(未解决)

datagrid|解决 我觉得我的例子和MSDN (saucer(思归)版)的大概是一致的,个人觉得问题出在为什么我的页面的dlReplyList在绑定前(就是击编辑按钮后)会是"未定义的值"的?如下图(上半):而saucer(思归)版的例子,在同一个断点,DataList实例ItemsList却是存在的(下半) 页面框架: <asp:DataGrid Width="80%" DataKeyField="PostId" ID="d

将DataGrid数据写入Excel文件

datagrid|excel|数据 前几天项目中有个地方需要将DataGrid的数据直接导入Excel里,以提供给用户下载,在网上找了下,好像都是与下面代码类似的实现: 程序代码: this.EnableViewState   =   false;         System.Globalization.CultureInfo   myCItrad   =   new   System.Globalization.CultureInfo("ZH-CN",true);System.IO