实现鼠标点击单元格显示...按钮,点击按钮,弹出对话框,选中后在相应的单元格显示Text,并绑定单元格Value值。

1.创建子编辑器,该编辑器可以创建一个form,然后设计好form界面,并编写相应代码。

2.创建子编辑器类

 public class mySubEdit : Form1, FarPoint.Win.Spread.CellType.ISubEditor
    {
        public event EventHandler ValueChanged;
        public event EventHandler CloseUp;
        public Form1 frm;
        public mySubEdit_GoodsChice()
        {
            this.View1.DoubleClick += new EventHandler(View1_DoubleClick);
        }
        private void View1_DoubleClick(object sender, EventArgs e)
        {
            if (this.View1.Rows.Count > 0)
            {
                if (ValueChanged != null)
                    ValueChanged(this, EventArgs.Empty);
                if (CloseUp != null)
                    CloseUp(this, EventArgs.Empty);
            }
        }
        public Point GetLocation(Rectangle rect)
        {
            Point pt = new Point(0);
            Size sz = GetPreferredSize();
            pt.Y = 0;// (Screen.PrimaryScreen.WorkingArea.Height / 2) - (sz.Height / 2);
            pt.X = (Screen.PrimaryScreen.WorkingArea.Width / 2) - (sz.Width / 2);
            return pt;
        }
        public Control GetSubEditorControl()
        {
            return this;

        }
        public object GetValue()
        {
            return  "1,一达软件"; //

        }
        public void SetValue(object value)
        {
            // value = "";
        }

        public Size GetPreferredSize()
        {
            return new Size(this.Width, Screen.PrimaryScreen.WorkingArea.Height);
        }
    }

3.在Form_Load事件对fpSpread进行初始化设置

   fpSpread1.HorizontalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded;//只有当需要的时候才显示水平滚动条
            fpSpread1.VerticalScrollBarPolicy = FarPoint.Win.Spread.ScrollBarPolicy.AsNeeded; //只有当需要的时候才显示垂直滚动条
            fpSpread1.ActiveSheet.GrayAreaBackColor = Color.White; //整个sheet表的背景设置成白色

            fpSpread1.ActiveSheet.ColumnCount = 2;
            fpSpread1.ActiveSheet.Rows.Count = 10;
            fpSpread1.ActiveSheet.Columns[0].Visible = false;
   
            fpSpread1.ActiveSheet.ColumnHeader.Columns[0].Label = "存酒名称";
            fpSpread1.ActiveSheet.ColumnHeader.Columns[1].Label = "存酒数量";

            fpSpread1.ActiveSheet.Columns[0].Width = 200;
            fpSpread1.ActiveSheet.Columns[1].Width = 100;

            FarPoint.Win.Spread.CellType.NumberCellType NumberCellType = new FarPoint.Win.Spread.CellType.NumberCellType();
            NumberCellType.DecimalPlaces = 1;

            fpSpread1.ActiveSheet.Columns[1].CellType = NumberCellType;

            FarPoint.Win.Spread.CellType.TextCellType TextCellType = new FarPoint.Win.Spread.CellType.TextCellType();
            mySubEdit subEditor = new mySubEdit();
            TextCellType.SubEditor = subEditor;

            fpSpread1.ActiveSheet.Columns[0].CellType = TextCellType;

编写fspRead的以下两个事件代码:

    private void fpSpread1_EditModeOn(object sender, EventArgs e)
        {
            if (fpSpread1.ActiveSheet.ActiveCell.Column.Index == 1)
            {
                FarPoint.Win.Spread.CellType.GeneralEditor c = this.fpSpread1.EditingControl as FarPoint.Win.Spread.CellType.GeneralEditor;
                c.ButtonStyle =FarPoint.Win.ButtonStyle.PopUp;  //用于显示...效果的按钮
            }
        }

        private void fpSpread1_SubEditorClosed(object sender, FarPoint.Win.Spread.SubEditorClosedEventArgs e)
        {
           //当子编辑器被关闭时,将子编辑器的Text属性值拆分数组,并分别绑定到单元格的Text和Value属性
            string[] arr = e.EditingControl.Text.ToString().Split(',');
            fpSpread1.ActiveSheet.ActiveCell.Value = arr[0];
            fpSpread1.ActiveSheet.ActiveCell.Text = arr[1];
        }

 

Ok,Enjoy it.

posted @ 2012-02-22 22:49  丹东一达软件  阅读(757)  评论(0编辑  收藏  举报