• Spread 常用属性


     
    1 取得当前行号、列号。
     
    int row=e.Row;
    int count=e.Count;
    或者:
    int rowindex = fpSpread1.ActiveSheet.ActiveRowIndex;
    int columnindex = fpSpread1.ActiveSheet.ActiveColumnIndex;
     

    2 单击一行变颜色。

    private void spdResult_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)
      {
       //单击Spread列头时,什么也不处理

       if(!e.ColumnHeader)
       {
        if(spdResult.Sheets[0].Rows.Count!=0)
        {
         for(int i=0;i<spdResult.Sheets[0].Rows.Count;i++)
         {
          spdResult.Sheets[0].Rows[i].BackColor=System.Drawing.Color.White;
         }
         int row=e.Row;
         spdResult.Sheets[0].Rows[row].BackColor=System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(255)), ((System.Byte)(255)));
        }
       }
      }
     

    3 将Spread的单元格内容付值给一控件的Text

    txtItemCD.Text = spdResult.Sheets[0].Cells[row,count].Text;
     

    4 给Spread的指定单元格付值。

    spdResult.Sheets[0].Cells[row,count].Text = txtItemCD.Text;
     

    5 通过上下光标键改变选中行颜色

    private void spdResult_LeaveCell(object sender, FarPoint.Win.Spread.LeaveCellEventArgs e)
      {
       //首先检查spread行数是否为0
       if(spdResult.Sheets[0].Rows.Count==0)
       {
        return;
       }
       else
       {
        for(int i=0;i<spdResult.Sheets[0].Rows.Count;i++)
        {
         spdResult.Sheets[0].Rows[i].BackColor=System.Drawing.Color.White;
        }
        int row=e.NewRow;
        spdResult.Sheets[0].Rows[row].BackColor=System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(255)), ((System.Byte)(255)));
       }
      }
     

    6 下拉列表加载数据(ComBobox)
    ・ 列表追加(适合于数据量少的情况)

    FarPoint.Win.Spread.CellType.ComboBoxCellType cb4 = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
       cb4.ListWidth = 96;
       cb4.Editable = true;
       cb4.MaxDrop = 10;
       cb4.MaxLength = 1;
       string[] priceTagList = new string[]{" 0 无"," 1 有"};
       cb4.Items = priceTagList;
       this.spdSetList.ActiveSheet.Columns[4].CellType = cb4;
     

    ・ 从数据库追加

    FarPoint.Win.Spread.CellType.ComboBoxCellType cb12 = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
       cb12.ListWidth = 150;
       cb12.Editable = true;
       cb12.MaxDrop = 10;
       cb12.MaxLength = 8;

    //dsEmployee:数据集Dataset,已经加载好数据的Dataset
       string[] employeeList = DataSetToArray(dsEmployee, 8);
       cb12.Items = employeeList;
       this.spdSetList.ActiveSheet.Columns[12].CellType = cb12;

    private string[] DataSetToArray(DataSet ds, int BlankNum)
      {
       int i = 0;
       int NumLength = 0;
       string[] returnArray = new string[ds.Tables[0].Rows.Count];

       DataRow foundRows = ds.Tables[0].Rows[ds.Tables[0].Rows.Count -1];
       NumLength = foundRows[0].ToString().Length;

       foreach(DataRow dr in ds.Tables[0].Rows)
       {
        returnArray[i] = dr[0].ToString().PadLeft(BlankNum, ' ') + " " + dr[1].ToString();
        i++;
       }
       return returnArray;
      }
     

    7 Focus移动(跨列)

    public frmProdSetDetail()
      {
       InitializeComponent();
       IsMod = flag;

       FarPoint.Win.Spread.InputMap im;
       im = spdResult.GetInputMap(InputMapMode.WhenFocused);
       im.Put(new Keystroke(Keys.Enter,Keys.None),SpreadActions.MoveToNextColumnWrap);
       im.Put(new Keystroke(Keys.Tab,Keys.None),SpreadActions.MoveToNextColumnWrap);

       im = spdResult.GetInputMap(InputMapMode.WhenAncestorOfFocused);
       im.Put(new Keystroke(Keys.Enter,Keys.None),SpreadActions.MoveToNextColumnWrap);
       im.Put(new Keystroke(Keys.Tab,Keys.None),SpreadActions.MoveToNextColumnWrap);
      }
     

    指定单元格获得焦点     

    this.fpSpread1.ActiveSheet.SetActiveCell(row,column);
     

    8 事件触发顺序                           

     _Enter    _EnterCell      _EditModeOn      _EditChange      _EditModeOff      _LeaveCell

    9 用隐藏列保存原始数据 

    10 设定列类型

    private void SpreadSetting()
      {
       string[] ProductHandleTypeList = new string[]{" ","1 販売/仕入","2 販売","3 仕入"};
     
       FarPoint.Win.Spread.CellType.ComboBoxCellType cb3 = new FarPoint.Win.Spread.CellType.ComboBoxCellType();
       cb3.ListWidth = 100;
       cb3.Editable = true;
       cb3.MaxDrop = 5;
       cb3.MaxLength = 1;
       cb3.Items = ProductHandleTypeList;

       this.spdResult.ActiveSheet.Columns[5].CellType = cb3;
     
       //设置一般数据型

       FarPoint.Win.Spread.CellType.NumberCellType nmbrcell = new FarPoint.Win.Spread.CellType.NumberCellType();
       nmbrcell.ShowSeparator = false;
       nmbrcell.DecimalPlaces = 0;
       nmbrcell.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
       nmbrcell.MaximumValue = 9999;
       nmbrcell.MinimumValue = 1;
       this.spdResult.ActiveSheet.Columns[13].CellType = nmbrcell;

       //设置JAN

       FarPoint.Win.Spread.CellType.NumberCellType nmbrcellJan = new FarPoint.Win.Spread.CellType.NumberCellType();
       nmbrcellJan.ShowSeparator = false;
       nmbrcellJan.DecimalPlaces = 0;
       nmbrcellJan.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
       nmbrcellJan.MaximumValue = 9999999999999;
       nmbrcellJan.MinimumValue = 0;
       this.fpSpread1.ActiveSheet.Columns[0].CellType = nmbrcellJan;
       this.fpSpread1.ActiveSheet.Columns[0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Left;

       //

       FarPoint.Win.Spread.CellType.NumberCellType numberCellType1 = new FarPoint.Win.Spread.CellType.NumberCellType();
       numberCellType1.ShowSeparator = true;
       numberCellType1.DecimalPlaces = 0;
       numberCellType1.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
       numberCellType1.MaximumValue = 99999999;
       numberCellType1.MinimumValue = 0;
       this.spdResult.ActiveSheet.Columns[20].CellType = numberCellType1;

       //%数的设定

       FarPoint.Win.Spread.CellType.PercentCellType prctcell = new FarPoint.Win.Spread.CellType.PercentCellType();
       prctcell.PercentSign = "%";
       this.spdResult.ActiveSheet.Columns[33].CellType = prctcell;
      
       //日期的设定

       FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType();
       datecell.MaximumDate = new System.DateTime(2050, 12, 31, 0, 0, 0, 0);
       datecell.MinimumDate = new System.DateTime(2001, 1, 1, 0, 0, 0, 0);

       this.spdResult.ActiveSheet.Columns[27,30].CellType = datecell;
     }
     

    11 列、单元格锁定

    //锁定

    this.fpSpread1.ActiveSheet.Columns[0,4].Locked = true;//锁定列范围

    this.fpSpread1.ActiveSheet.Columns[0].Locked = true;//锁定单列


    //解锁

    this.fpSpread1.ActiveSheet.Columns[0,4].Locked = false;//解锁列范围

    this.fpSpread1.ActiveSheet.Columns[0].Locked = false;
     

    12 Spread追加行、列

    //追加行

    int rowindex = this.fpSpread1.ActiveSheet.Rows.Count;
       this.fpSpread1.ActiveSheet.Rows.Add(rowindex,1);

    //追加列

    int columnindex = this.fpSpread1.ActiveSheet.Columns.Count;
       this.fpSpread1.ActiveSheet.Columns.Add(columnindex,1);
     

    13 行、列删除

    //删除行

    this.fpSpread1.ActiveSheet.Rows.Remove(startindex,count);

    //追加列

    this.fpSpread1.ActiveSheet.Columns.Remove(startindex,count);
     

    14 button事件

    private void spdSetList_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e)
      {
       int rowCount = e.Row;
       int columnCount = e.Column;

       if (e.Column == 16)
       {
        if (message.ShowMessage("ConfirmDelete", "選択したライン") == DialogResult.Yes)
        {
         string DeleteTag = this.spdSetList.ActiveSheet.Cells[rowCount, columnCount+1].Text.Trim();
         if (DeleteTag == "0" || DeleteTag == "2")
         {
          this.spdSetList.ActiveSheet.Cells[rowCount, columnCount+1].Text = "3";
          this.spdSetList.ActiveSheet.Cells[rowCount,columnCount+1].BackColor = clrWater;
          this.spdSetList.ActiveSheet.Rows[rowCount].Visible = false;
         }
         else if (DeleteTag == "1")
         {
          this.spdSetList.ActiveSheet.Rows[rowCount].Remove();
         }
        }
       }
      }
     


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiezigege/archive/2009/08/26/4486642.aspx

  • 相关阅读:
    (转)OpenGL和D3D
    (转)海岸线提取完成, 海浪排岸效果
    (转)perlin噪声函数
    D3D 部分功能测试结论
    (转)学习directx遇到的问题
    D3D Lock Pool
    D3D渲染到纹理
    用Eclipse平台进行c/c++开发
    var读写和function读写,get/set读写效率比较
    flash fps游戏 fps多少为佳
  • 原文地址:https://www.cnblogs.com/zzh1236/p/1900757.html
Copyright © 2020-2023  润新知