找回密码
 立即注册

QQ登录

只需一步,快速开始

xiwu

中级会员

97

主题

445

帖子

910

积分

中级会员

积分
910

活字格认证

xiwu
中级会员   /  发表于:2012-5-29 13:01  /   查看:5767  /  回复:7
一个窗体里有两个spread,分别为fpspread1,fpspread2,在点在任一个里点右键,右键菜单事件怎么判断是点的是fpspread1,还是fpspread2?
private void fpSpread1_MouseDown1(object sender, MouseEventArgs e)
        {
        //如何判断在哪个fp点的右键????
            //右键,弹出右键菜单
            if (e.Button == MouseButtons.Right)
            {
                if (fpSpread1.ActiveSheet != null)
                {
                    SpreadView spreadView = fpSpread1.GetRootWorkbook();
                    if (spreadView != null)
                    {
                        FpSpreadModel.CellRange cellRange = spreadView.GetCellFromPixel(e.X, e.Y);

                        FpSpreadModel.CellRange[] oldRanges = fpSpread1.ActiveSheet.GetSelections();
                        bool skip = false;
                        if (oldRanges != null)
                        {
                            foreach (FpSpreadModel.CellRange cr in oldRanges)
                            {
                                if (cr.Contains(cellRange.Row, cellRange.Column))
                                {
                                    skip = true;
                                    break;
                                }
                            }
                        }
                        if (cellRange != null && !skip)
                        {
                            FpSpreadModel.CellRange cellRange1 = new FarPoint.Win.Spread.Model.CellRange(-1, -1, -1, -1);
                            if (cellRange == cellRange1)
                            {
                                if (cellRange.Row != -1)
                                {
                                    fpSpread1.ActiveSheet.SetActiveCell(oldRanges[0].Row, 0);
                                }
                                else if (cellRange.Column != -1)
                                {
                                    fpSpread1.ActiveSheet.SetActiveCell(0, oldRanges[0].Column);
                                }
                            }
                            else
                            {

                                fpSpread1.ActiveSheet.SetActiveCell(cellRange.Row, cellRange.Column);
                            }
                        }
                    }
                    //弹出右键菜单
                    contextMenuStrip1.Show(fpSpread1, e.X, e.Y);
                }
            }

        }

7 个回复

倒序浏览
xiwu
中级会员   /  发表于:2012-5-29 13:15:00
沙发
补充一个问题:spread默认是选中第一个单元格状态,如何让它初始状态不选中任何单元格?
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2012-5-29 14:48:00
板凳
原帖由 xiwu 于 2012-5-29 13:15:00 发表
补充一个问题:spread默认是选中第一个单元格状态,如何让它初始状态不选中任何单元格?

可以设置如下代码:
  1.             this.fpSpread1.FocusRenderer = null;
复制代码
回复 使用道具 举报
xiwu
中级会员   /  发表于:2012-5-30 12:43:00
地板
第一个问题呢?
回复 使用道具 举报
xiwu
中级会员   /  发表于:2012-5-30 12:50:00
5#
刚才试了下, this.fpSpread1.FocusRenderer = null; 设置后,点击选择单元格,也看不到选择框,这不是我想要的结果 ,我只是想在刚启动窗体时不选中任何单元格
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-5-30 13:38:00
6#

回复 5# xiwu 的帖子

第一个问题:
可以通过(sender as FarPoint.Win.Spread.FpSpread).Name来取到是有哪个Spread触发的

第二个问题:
Spread默认都会有一个焦点单元格,而且没法取消这个焦点单元格。不过可以通过以下方法来模拟没有焦点单元格:
可以在Form_Load中设置this.fpSpread1.FocusRenderer = null;然后在Spread的其它事件中来调用fpSpread1.ResetFocusRenderer();重新设置焦点单元格的样式;
回复 使用道具 举报
xiwu
中级会员   /  发表于:2012-6-1 12:50:00
7#
按楼上方法,问题解决了
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-1 15:49:00
8#
好的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部