村东智叟 发表于 2020-11-17 13:07:42

G1FlexGrid 怎么保持单元格的选中状态

您好:我有如下需求,想请教一下如何实现:
现状:
c1flexgrid,行选择模式,可以选中单元格,
键盘的上下左右键可以控制选中的单元格或者行
需要实现的功能:
表格中的单元个选中的情况下,点击下面的按钮,单元格依旧保持选中的状态。
例如,现在选中的是第二行的第三列,我点击打印按钮后,依旧保持第二行的第三列的选中状态。
点击打印后(打印完成后),按键盘的上下左右键依旧可以控制选中单元格的移动。


Richard.Ma 发表于 2020-11-17 14:07:00

本帖最后由 Richard.Ma 于 2020-11-17 14:46 编辑

你的需求:表格中的单元个选中的情况下,点击下面的按钮,单元格依旧保持选中的状态
1.实际上你这个需要的是点击其他按钮时,flexgrid已经失去焦点,所以你给focus样式设置的红框会消失
如果只是需要显示一样的红色外框的话,将highlight样式也设置成边框红色即可

第二个问题和上面的情况一样,flexgrid已经失去焦点,所以没有办法移动,这个可以考虑通过对winforms的键盘响应来做到
将主窗体的KeyPreview属性设置为true,然后在KeyDown事件中判断方向键,用Select(row,col);方法来移动选择的单元格

      private void MainForm_KeyDown(object sender, KeyEventArgs e)
      {


                int row= f.RowSel, col= f.ColSel;
                switch (e.KeyCode)
                {
                  case Keys.Down:
                        row++;
                        break;
                  case Keys.Up:
                        row--;
                        break;
                  case Keys.Left:
                        col--;
                        break;
                  case Keys.Right:
                        col++;
                        break;
                }
               
                f.Select(row,col);

      }








村东智叟 发表于 2020-11-17 14:11:09

Richard.Ma 发表于 2020-11-17 14:07
需求可以实现

感谢回复,
现在我的主要问题是:在行选择模式下,无法通过grid.select(1,1)方法来实现默认选中单元格。导致表格失去焦点后无法在通过键盘的上下左右键来控制单元格的移动。必须要手动点击一下单元格之后才行

Richard.Ma 发表于 2020-11-17 14:50:25

按照你的需求,必须要用CELL选中模式。

1.实际上点击其他按钮时,flexgrid已经失去焦点,所以你给focus样式设置的红框会消失
如果只是需要显示一样的红色外框的话,将highlight样式也设置成边框红色即可

第二个问题和上面的情况一样,flexgrid已经失去焦点,所以没有办法移动,这个可以考虑通过对winforms的键盘响应来做到
将主窗体的KeyPreview属性设置为true,然后在KeyDown事件中判断方向键,用Select(row,col);方法来移动选择的单元格

具体请看我上面的代码
页: [1]
查看完整版本: G1FlexGrid 怎么保持单元格的选中状态