×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

楼主既然用的是DataGrid,那情况就要稍微复杂些,你要用到DataGrid.CurrentCell和Clipboard.SetDataObject()函数的知识.....

本文发表在 rolia.net 枫下论坛DataGrid.CurrentCell(x,y) 将返回DataGrid中x,y坐标的值,很方便,你可以用它来判断用户当前选中的是哪个格子,然后把这个格子的内容发送到剪贴板去。DataGrid 还有些高级用法,比如
DataGrid.HitTestInfo 都是很有用的知识,用来判断用户点击了DataGrid的哪个位置。
这些知识在MSDN中都有,楼主应该专心一些

假设你用DataGrid, 我写一段程序简单演示一下

private void Form1_Load(object sender, System.EventArgs e)
{
// 创建Table, 然后给Table中添数据,把这个Table邦定到DataGrid1
DataTable dt=new DataTable();
DataColumn dc=new DataColumn("id");
dt.Columns.Add(dc);
dc=new DataColumn("name");
dt.Columns.Add(dc);
dc=new DataColumn("telephoneNumber");
dt.Columns.Add(dc);

DataRow dr;
dr=dt.NewRow();

dr["id"]="001";
dr["name"]="Bush";
dr["telephoneNumber"]="1234";
dt.Rows.Add(dr);

dr=dt.NewRow();
dr["id"]="002";
dr["name"]="Canada";
dr["telephoneNumber"]="416";
dt.Rows.Add(dr);

dr=dt.NewRow();
dr["id"]="001";
dr["name"]="New Zealand";
dr["telephoneNumber"]="00456";
dt.Rows.Add(dr);

this.dataGrid1.DataSource=dt;

}

private void button1_Click(object sender, System.EventArgs e)
{
// 读取DataGrid1用户选择的行的数值
int x=this.dataGrid1.CurrentCell.RowNumber;
// 读取DataGrid1用户选择的列的数值
int y=this.dataGrid1.CurrentCell.ColumnNumber;
// 取出此行列的值
string message=this.dataGrid1[x,y].ToString();
// 发送到剪贴板,这一步非常简单
Clipboard.SetDataObject(message);
}更多精彩文章及讨论,请光临枫下论坛 rolia.net
Report

Replies, comments and Discussions:

  • 工作学习 / 专业技术讨论 / 我现在用.net编一个windows application,里边的edit menu下的copy 和paste 不知道应该怎么样做。怎么样才能拿到user选中的屏幕上的那一部分字呢?查过 msdn也没有找到相关资料。都要急死了,谢谢!!!
    • 这个不行?http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformstextboxbaseclassselectionstarttopic.asp
      • 这个只是对textbox的。
      • 我主要是需要选择datagrid里的记录。
    • 楼主既然用的是DataGrid,那情况就要稍微复杂些,你要用到DataGrid.CurrentCell和Clipboard.SetDataObject()函数的知识.....
      本文发表在 rolia.net 枫下论坛DataGrid.CurrentCell(x,y) 将返回DataGrid中x,y坐标的值,很方便,你可以用它来判断用户当前选中的是哪个格子,然后把这个格子的内容发送到剪贴板去。DataGrid 还有些高级用法,比如
      DataGrid.HitTestInfo 都是很有用的知识,用来判断用户点击了DataGrid的哪个位置。
      这些知识在MSDN中都有,楼主应该专心一些

      假设你用DataGrid, 我写一段程序简单演示一下

      private void Form1_Load(object sender, System.EventArgs e)
      {
      // 创建Table, 然后给Table中添数据,把这个Table邦定到DataGrid1
      DataTable dt=new DataTable();
      DataColumn dc=new DataColumn("id");
      dt.Columns.Add(dc);
      dc=new DataColumn("name");
      dt.Columns.Add(dc);
      dc=new DataColumn("telephoneNumber");
      dt.Columns.Add(dc);

      DataRow dr;
      dr=dt.NewRow();

      dr["id"]="001";
      dr["name"]="Bush";
      dr["telephoneNumber"]="1234";
      dt.Rows.Add(dr);

      dr=dt.NewRow();
      dr["id"]="002";
      dr["name"]="Canada";
      dr["telephoneNumber"]="416";
      dt.Rows.Add(dr);

      dr=dt.NewRow();
      dr["id"]="001";
      dr["name"]="New Zealand";
      dr["telephoneNumber"]="00456";
      dt.Rows.Add(dr);

      this.dataGrid1.DataSource=dt;

      }

      private void button1_Click(object sender, System.EventArgs e)
      {
      // 读取DataGrid1用户选择的行的数值
      int x=this.dataGrid1.CurrentCell.RowNumber;
      // 读取DataGrid1用户选择的列的数值
      int y=this.dataGrid1.CurrentCell.ColumnNumber;
      // 取出此行列的值
      string message=this.dataGrid1[x,y].ToString();
      // 发送到剪贴板,这一步非常简单
      Clipboard.SetDataObject(message);
      }更多精彩文章及讨论,请光临枫下论坛 rolia.net
      • 非常非常感谢!!
        • hehe, 不谢,本人还没找到工作,在家没事就尽我所能解答一些有关.net的问题。希望大家尽量提,解答你们的问题也算是帮助我复习一下.net的知识!
          • 若果你已经入籍了,我可以帮你来美国工作,否则,只好等到明年4月办h1,因为今年的h1配额已满。
            • 我刚刚登陆5个多月,哪里能入籍,anyway多谢你的好意,现在只能打labour为生,发了简历没人看,呵呵......
              • you are good. What are you specilized in? PM me if you don't mind.