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();
}
}
}
}
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具