找回密码
 立即注册

QQ登录

只需一步,快速开始

szld

论坛元老

38

主题

94

帖子

2万

积分

论坛元老

积分
29978

活字格认证

[已处理] Spread取值

szld
论坛元老   /  发表于:2013-7-12 09:34  /   查看:5411  /  回复:3
版主,现在的开发环境是winform,项目需求是当前鼠标在第一列移动,想要根据当前鼠标所有在第一列的位置取对应的第二列的值,怎么取?

3 个回复

倒序浏览
Ally
葡萄城公司职员   /  发表于:2013-7-12 14:24:00
沙发
您可以尝试以下代码:
public Form1()
        {
            InitializeComponent();
            for (int i = 0; i < fpSpread2.ActiveSheet.RowCount; i++ )
            {
                fpSpread2.ActiveSheet.Cells[i, 1].Value = "this is row" + i.ToString();

            }
            fpSpread2.MouseMove += new MouseEventHandler(fpSpread2_MouseMove);

        }

        void fpSpread2_MouseMove(object sender, MouseEventArgs e)
        {
            int rowIndex;
            HitTestInformation hti;
            ViewportHitTestInformation vi;
            hti = fpSpread2.HitTest(e.X, e.Y);           
            if (hti != null && hti.Type == HitTestType.Viewport)
            {
                vi = hti.ViewportInfo;
                if(vi.Column == 0)
                {
                    rowIndex = vi.Row;
                    MessageBox.Show(fpSpread2.ActiveSheet.Cells[rowIndex, 1].Value.ToString());
                }               
            }   
        }
运行以上代码后,当鼠标移动到第一列时,弹出的对话框显示第二列对应Cell的值。
回复 使用道具 举报
szld
论坛元老   /  发表于:2013-7-12 14:36:00
板凳
如果第一列里有合并单元格时取到的值不对啊,鼠标在合并单元格上移动时,取到的值一直是合并单元格的第一行对应的第二列的值
回复 使用道具 举报
山水
初级会员   /  发表于:2013-7-12 17:57:00
地板
把 fpSpread2_MouseMove()的代码稍改以下就可以了:      
void fpSpread2_MouseMove(object sender, MouseEventArgs e)
        {
            int rowIndex;
            HitTestInformation hti;
            ViewportHitTestInformation vi;
            hti = fpSpread1.HitTest(e.X, e.Y);
            
            if (hti != null && hti.Type == HitTestType.Viewport)
            {
                vi = hti.ViewportInfo;
                if (vi.Column == 0)
                {
                    rowIndex = vi.Row;
                    if (fpSpread1.ActiveSheet.Cells[rowIndex, 0].RowSpan > 1)
                    {
                        CellRange cellRange = fpSpread1.GetCellFromPixel(0, 0, e.X, e.Y);
                        rowIndex = cellRange.Row;
                    }

                    MessageBox.Show(fpSpread1.ActiveSheet.Cells[rowIndex, 1].Value.ToString());
                }
            }
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部