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