找回密码
 立即注册

QQ登录

只需一步,快速开始

softroad

注册会员

3

主题

6

帖子

35

积分

注册会员

积分
35

活字格认证

最新发帖
softroad
注册会员   /  发表于:2014-7-2 11:45  /   查看:5580  /  回复:2
Spread版本 SPREAD for Windows Forms 7.0(SP2)
1、快捷键问题
  不做任何设置时 Operation Mode = Normal
      (表述用语可能不当,但应该能明白大致意思)
       Home键                 滚动到第一列
       End键                    滚动到最后一列
       Ctrl+Home键         滚动到第一个单元格
       Ctrl+End键            滚动到最后一个单元格

  当把 Operation Mode = SingleSelect 时
       Home键                 滚动到第一行
       End键                    滚动到最后一行
       Ctrl+Home键         无反应
       Ctrl+End键            无反应
问题:Operation Mode = SingleSelect 时 快捷键能不能也做到 Operation Mode = Normal 时的效果?
        如果能,指示一下!

2、列宽是可以调节的,Resizable = true ,当列中单元格内容的长度超过列宽是,双击两列之间的分割线处,列宽会变宽,自适应,将之前显  
    示不下的内容显示完整。
   此自适应,或者说双击功能能够禁掉吗?

3、Resizable = true  时,拖动缩小列宽,列标题能容会换行,如何保证不换行了?
   有什么解决方案没有?


以上,请指教!

2 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-7-2 19:50:00
沙发
回复 1楼softroad的帖子

问题1:可以通过以下代码实现,这里举一个 Ctrl + Home 快捷键定义的例子:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             this.fpSpread1.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.SingleSelect;

  4.             fpSpread1.ActiveSheet.Columns[0].CanFocus = false;
  5.             InputMap im = fpSpread1.GetInputMap(InputMapMode.WhenFocused);
  6.             ActionMap am = fpSpread1.GetActionMap();
  7.             im.Put(new Keystroke(Keys.Home, Keys.Control), "NewControlHomeAction");
  8.             am.Put("NewControlHomeAction", new NewControlHomeAction());
  9.         }
  10.     }

  11.     ///<summary>
  12.     ///Ctrl + Home 即选择Cell[0,0]
  13.     ///</summary>
  14.     public class NewControlHomeAction : FarPoint.Win.Spread.Action
  15.     {
  16.         public override void PerformAction(object source)
  17.         {
  18.             if (source is SpreadView)
  19.             {
  20.                 SpreadView SpreadView = (SpreadView)source;
  21.                 SpreadView.Sheets[SpreadView.ActiveSheetIndex].SetActiveCell(0, 0);
  22.                 SpreadView.ShowActiveCell(VerticalPosition.Top, HorizontalPosition.Left);
  23.             }
  24.         }
  25.     }
复制代码
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-7-2 20:05:00
板凳
回复 1楼softroad的帖子

问题3:可以通过以下代码实现

  1.             FarPoint.Win.Spread.CellType.TextCellType HeaderCell=new FarPoint.Win.Spread.CellType.TextCellType();
  2.             HeaderCell.WordWrap = false;
  3.             fpSpread1.Sheets[0].ColumnHeader.Columns[0].CellType = HeaderCell;
  4.             fpSpread1.Sheets[0].ColumnHeader.Cells[0, 0].Text = &quot;fsdfdsdsfdsfdsfdsf&quot;;
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部