您的位置:首页 > 其它

Spread控件基础知识(基本常用属性事件等)

2016-12-01 16:33 369 查看
-----------------------基本用法

//取当前行号、列号

int row=e.Row; 

int count=e.Count;

或者:

int rowindex = fpSpread1.ActiveSheet.ActiveRowIndex;

int columnindex = fpSpread1.ActiveSheet.ActiveColumnIndex;

//单机行改变该行颜色

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)));

    }

   }

  }

//将Spread的单元格内容付值给一控件的Text,给指定单元格赋值

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

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

//通过光标改变行选中颜色

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))); 

   }

  }

//下拉列表加载数据

写死数据源

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;

  }

//焦点移动(跨列)

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);

//设定列的类型

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;

 }

//列单元格的锁定

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;

//追加、删除行列

追加行

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);

//删除行

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

//删除列

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

-------------------------事件(触发顺序:_Enter    _EnterCell      _EditModeOn      _EditChange      _EditModeOff      _LeaveCell)
 // 单元格编辑结束,焦点离开或者按回车键

private void fpSpread1_EditModeOff(object sender, System.EventArgs e) 

// 单元格得到焦点时触发                  

private void fpSpread1_EnterCell(object sender, FarPoint.Win.Spread.EnterCellEventArgs e)         

 // 编辑单元格时触发,单元格内容发生改变

 private void fpSpread1_EditChange(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e) 

// 编辑模式开始时触发

private void fpSpread1_EditModeOn(object sender, System.EventArgs e) 

// 单元格失去焦点时触发

   private void fpSpread1_LeaveCell(object sender, FarPoint.Win.Spread.LeaveCellEventArgs e) 

   { 

    if(this.spdSetList.ActiveSheet.RowCount ==0)         

    {         

     return;        

    }         

   }   



// 双击Spread时触发         一般用来付值,比如把选中行内容传给其他控件

private void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)      

// 单击Spread时触发         一般用来改变选中行的颜色

private void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)   

// 一般用来检测输入内容是否合法,比如检测输入的内容是否是数字  

private void fpSpread1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)   

  {  

     if(e.KeyChar >= '0' && e.KeyChar <= '9' || e.KeyChar == 8 || e.KeyChar == 13) 

     { 

      e.Handled = false;

     } 

     else 

     { 

      e.Handled = true;

     } 

   } 

 // 用来捕捉按钮列等属于按钮范畴的事件

private void spdSetList_ButtonClicked(object sender, FarPoint.Win.Spread.EditorNotifyEventArgs e) 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: