zxc9089 发表于 2015-11-11 10:18:00

WPF C1DataGrid如何设置能够复制选中的单元格内的文本内容

WPF   C1DataGrid如何设置能够复制选中的单元格内的文本内容? SingleRow 的情况下复制的都是复制整行。SingleCell确实可以复制选中单元格,但是在界面上显示的选中背景色却只是覆盖在单一单元格上。

我期望的效果是选中效果还是以单行的形式,但是复制的时候是复制单击选中的单元格内容,不知有没有好的办法解决这个问题?

KNight 发表于 2015-11-11 11:28:00

回复 1楼zxc9089的帖子

直接处理组合键Ctrl+C的操作即可

private void grid_KeyDown(object sender, KeyEventArgs e)
{
        if (e.KeyboardDevice.Modifiers == ModifierKeys.Control && e.Key == Key.C)
        {
                if (grid.CurrentCell != null)
                {
                        var a = grid.CurrentCell.Value;
                        e.Handled = true;// 如果该单元可编辑,防止键入“C”
                        MessageBox.Show("复制内容:" + a);
                }
        }
}

Alice 发表于 2015-11-12 09:34:00

回复 1楼zxc9089的帖子

非常感谢@KNight的回复。
如果解决了,此问题关闭。
如果依然有问题,欢迎提出来

zxc9089 发表于 2015-11-12 11:42:00

感谢,问题初步解决,就是在复制的过程中如果单元格数据内容为非字符串类型存入剪贴板时会出现问题,具体细节我再看看

zxc9089 发表于 2015-11-12 11:47:00

已解决,代码更改如下:

public RelayCommand<KeyEventArgs> GridKeyDownCopyCommand
{
    get
    {
      return new RelayCommand<KeyEventArgs>(e =>
      {
            var grid = e.Source as C1DataGrid;
            if (grid != null &amp;&amp; e.KeyboardDevice.Modifiers == ModifierKeys.Control &amp;&amp; e.Key == Key.C)
            {
                if (grid.CurrentCell != null)
                {
                  string data = grid.CurrentCell.Text;
                  Clipboard.SetDataObject(data, false);
                  e.Handled = true;// 如果该单元可编辑,防止键入“C”
                }
            }
      });
    }
}

Alice 发表于 2015-11-12 12:21:00

回复 5楼zxc9089的帖子

非常感谢您的反馈。
:hjyzw:非常赞的能力和反馈给其他用户做参考。
页: [1]
查看完整版本: WPF C1DataGrid如何设置能够复制选中的单元格内的文本内容