farpoint spread问题,求大神来,又追加分!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了farpoint spread问题,求大神来,又追加分!!!相关的知识,希望对你有一定的参考价值。

是这样的,我要照着样本做一个项目。

1.form里有一个FpSpread控件,单击第2列的单元格,此单元格就进入待输入的状态。
2.我搞了半天也没弄明白怎么才能实现单击就能待输入,于是只能改变做法。可是双击单元格的时候,我又取不到这个单元格的Text,因为我不会确定这个单元格。求确定此单元格的方法。

求大神们帮忙解决这两个问题,有追加分!

你好, 可以利用 Spread 的 CellClick 事件和 CellDoubleClick事件实现上述两个功能。
1. CellClick 事件实现点击第二列单元格,单元格进入编辑状态:
private void fpSpread1_CellClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)

int row = e.Row;
int col = e.Column;
if (!e.ColumnHeader)

if (!e.ColumnFooter)

if (e.Column == 1)

e.Cancel = true;
e.View.GetSheetView().SetActiveCell(row,col);
e.View.EditMode=true;




2.CellDoubleClick 事件实现双击第二列单元格,获取单元格文本:
private void fpSpread1_CellDoubleClick(object sender, FarPoint.Win.Spread.CellClickEventArgs e)

int row = e.Row;
int col = e.Column;
string cellText = "";
if (!e.ColumnHeader)

if (!e.ColumnFooter)

if (e.Column == 1)

cellText = this.fpSpread1.ActiveSheet.Cells[row, col].Text;




3.顺便提醒下,Spread 有专门的技术支持论坛,可以百度-葡萄城产品技术社区,相信你在那里可以得到专业快速的解答,希望我的回答对你有帮助~
参考技术A 有两种可能,第一种只是我的一个猜想,(因为你是鼠标操作嘛)通过设置Spread快捷键来指定鼠标左键按下的功能是开始编辑,这种做法我设置过按键盘F2的。
第二种肯定可行,就是在CellClick事件里处理,参数e可以取到对应的ColumnIndex和RowIndex,还有就是要判断是否为ColumnHeader或RowHeader,这些都e里都有对应的属性可以查询。
参考技术B int Sort(struct Student ar[], int len)

int i,j;
struct Student tmp;
for(i = 0; i < len -1; ++i)
for(j = i; j < len; ++j)

if(ar[i].point < ar[j].point)

tmp = ar[i];
ar[i] = ar[j];
ar[j] = tmp;


//for(i = 0; i < len; ++i)
//
// printf("%d %20s %-7.2f \n", ar[i].number, ar[i].name, ar[i].point);
//
本回答被提问者采纳

FarPoint.Win.Spread 常规操作

            FarPoint.Win.Spread.FpSpread fSpread = new FarPoint.Win.Spread.FpSpread();
           
//设置 行数、列数
            fSpread.ActiveSheet.Rows.Count = 90;
            fSpread.ActiveSheet.Columns.Count = 10;

            //获取行索引  列索引
            int rowIndex = fSpread.ActiveSheet.ActiveRowIndex;
            int colIndex = fSpread.ActiveSheet.ActiveColumnIndex;

            //追加行 追加列

            fSpread.ActiveSheet.Rows.Add(rowIndex,1);

            fSpread.ActiveSheet.Columns.Add(colIndex,1);

            //指定单元格获取焦点
            fSpread.ActiveSheet.SetActiveCell(rowIndex, colIndex);

            //隐藏列标题和序号
            fSpread.ActiveSheet.ColumnHeader.Visible = false;
            fSpread.ActiveSheet.RowHeaderVisible = false;
            fSpread.ActiveSheet.RowHeaderColumnCount = 0;
            fSpread.ActiveSheet.ColumnHeaderRowCount = 0;

            //不显示网格线            
            //方法一、属性:
            //GridShowHoriz = false;
            //GridShowHoriz = false;
            //方法二
            fSpread.ActiveSheet.HorizontalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None);
            fSpread.ActiveSheet.VerticalGridLine = new FarPoint.Win.Spread.GridLine(FarPoint.Win.Spread.GridLineType.None);

            //不可编辑
            fSpread.ActiveSheet.OperationMode = FarPoint.Win.Spread.OperationMode.ReadOnly;
            /*    
编辑模式
            0 - Normal               默认的表单操作都是可用的
 
            1 - ReadOnly            仅仅读的
 
            2 - RowMode            用户能够选择表单中的一行。而且能够通过双击来编辑该行任一单独的单元格
 
            3 - SingleSelect        用户仅能选择一行,而且不能编辑不论什么的单元格
 
            4 - MultiSelect         用户仅能选择多个连续行,可是不能编辑不论什么一个单元格
 
            5 - ExtendedSelect   用户仅能选择多个非连续行,可是不能编辑不论什么一个单元格*/

            //滚动栏(水平、垂直)  显示方式
            // Always      依据情况超出显示范围 显示滚动栏
            // AsNeeded  一直显示
            // Never        从不显示
            fSpread.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded;
            fSpread.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded;

           //左右居中
            fSpread.ActiveSheet.Cells[0, 0].HorizontalAlignment = FarPoint.Win.Spread.CellHorizontalAlignment.Center;
            //上下居中
            fSpread.ActiveSheet.Cells[0, 0].VerticalAlignment = FarPoint.Win.Spread.CellVerticalAlignment.Center;

            //单元格边框设置
            //边 的类型
            FarPoint.Win.ComplexBorderSide cBorderSide = new FarPoint.Win.ComplexBorderSide(FarPoint.Win.ComplexBorderSideStyle.ThinLine);
            //边框
            FarPoint.Win.ComplexBorder cBorder = new FarPoint.Win.ComplexBorder(cBorderSide, cBorderSide, cBorderSide, cBorderSide);
            fSpread.ActiveSheet.Cells[0, 0].Border = cBorder;

            //单元格 类型 比如:金额列  有千分位分隔符、两位小数
            FarPoint.Win.Spread.CellType.NumberCellType nct = new FarPoint.Win.Spread.CellType.NumberCellType();           
            nct.ShowSeparator = true;//分隔符
            nct.DecimalPlaces = 2;//小数位数
            nct.LeadingZero = FarPoint.Win.Spread.CellType.LeadingZero.UseRegional;
            fSpread.ActiveSheet.Cells[0, 0].CellType = nct;

            //设置字体
            fSpread.ActiveSheet.Cells[0, 0, 10, 10].Font = new System.Drawing.Font(fSpread.Font.Name, 10);
            fSpread.ActiveSheet.Cells[0, 0, 10, 10].Font = new System.Drawing.Font("Gerorgia", 10);

            //删除行   从索引为6開始删除2行
            fSpread.ActiveSheet.Rows.Remove(6, 2);
            //删除列   从索引为3開始删除1列
            fSpread.ActiveSheet.Columns.Remove(3, 1);

            //赋值
            fSpread.ActiveSheet.Cells[0, 0].Value = "赋值";

            //合并行  占3列2行
            fSpread.ActiveSheet.Cells[0, 0].ColumnSpan = 3;
            fSpread.ActiveSheet.Cells[0, 0].RowSpan = 2;
          
         
   //打印时 左右上下边距
            fSpread.ActiveSheet.PrintInfo.Margin.Left = 20;
            fSpread.ActiveSheet.PrintInfo.Margin.Right = 20;
            fSpread.ActiveSheet.PrintInfo.Margin.Top = 20;
            fSpread.ActiveSheet.PrintInfo.Margin.Bottom = 0;

            //打印时 纸张方向为横向
            fSpread.ActiveSheet.PrintInfo.Orientation = FarPoint.Win.Spread.PrintOrientation.Landscape;
            //纵向
            fSpread.ActiveSheet.PrintInfo.Orientation=FarPoint.Win.Spread.PrintOrientation.Portrait;
           
            //缩放比例
            fSpread.ActiveSheet.PrintInfo.ZoomFactor = 50/100;

                //纸张类型

                 SetPaperSize(fSpread,"A4");

        /// <summary>
        /// 设置纸张类型
        /// </summary>
        /// <param name="fspread"></param>
        /// <param name="PaperName">纸张类型名称 例:A3,A4</param>
        private void SetPaperSize(FarPoint.Win.Spread.FpSpread fspread,string PaperName)
        {
            System.Drawing.Printing.PrintDocument pdocumnet = new System.Drawing.Printing.PrintDocument();
            System.Drawing.Printing.PrinterSettings.PaperSizeCollection ps = pdocumnet.PrinterSettings.PaperSizes;
            foreach (System.Drawing.Printing.PaperSize p in ps)
            {
                if (p.PaperName.Equals(PaperName))
                {
                    fspread.ActiveSheet.PrintInfo.PaperSize = p;
                    return;
                }
            }
        }

//列宽自适应

 FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer ecr = new FarPoint.Win.Spread.CellType.EnhancedColumnHeaderRenderer();
            ecr.WordWrap = false;
            fSpread.Sheets[0].ColumnHeader.Columns[0].Renderer = ecr;
            this.fSpread.Sheets[0].DataAutoSizeColumns = true;
            this.fSpread.Sheets[0].Columns[0].Width = this.fSpread.Sheets[0].Columns[0].GetPreferredWidth();

以上是关于farpoint spread问题,求大神来,又追加分!!!的主要内容,如果未能解决你的问题,请参考以下文章

FarPoint.Win.Spread 常规操作

谁知道farpoint spread是干啥的

在VB6中,设置FARPOINT SPREAD控件的哪个属性,以锁定显示的内容,不能修改显示的数据

farpoint合计列不参与排序实现方法

FpSpread基本句法

Farpoint的简单用法