找回密码
 立即注册

QQ登录

只需一步,快速开始

cqtk

银牌会员

42

主题

79

帖子

2895

积分

银牌会员

积分
2895

活字格认证

cqtk
银牌会员   /  发表于:2012-6-13 17:18  /   查看:7840  /  回复:4
有关调用实时(JIT)调试而不是此对话框的详细信息,
请参见此消息的结尾。

************** 异常文本 **************
System.Exception: Exception handled in FpSpread.WndProc ---> System.Exception: Exception handled in FpSpread.OnPaint() ---> System.Exception: Exception handled in SpreadView.DoPaint ---> System.ArgumentOutOfRangeException: Invalid row index specified (must be between 0 and -1).
参数名: row
实际值是 26。
   在 FarPoint.Win.Spread.SheetView.IsRowExpanded(Int32 row)
   在 FarPoint.Win.Spread.SpreadView.a(Graphics A_0, Int32 A_1, Boolean A_2)
   在 FarPoint.Win.Spread.SpreadView.e(Graphics A_0)
   --- 内部异常堆栈跟踪的结尾 ---
   在 FarPoint.Win.Spread.SpreadView.e(Graphics A_0)
   在 FarPoint.Win.Spread.SpreadView.g(Graphics A_0)
   在 FarPoint.Win.Spread.FpSpread.OnPaint(PaintEventArgs e)
   --- 内部异常堆栈跟踪的结尾 ---
   在 FarPoint.Win.Spread.FpSpread.OnPaint(PaintEventArgs e)
   在 System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer, Boolean disposeEventArgs)
   在 System.Windows.Forms.Control.WmPaint(Message& m)
   在 System.Windows.Forms.Control.WndProc(Message& m)
   在 FarPoint.Win.Spread.FpSpread.WndProc(Message& m)
   --- 内部异常堆栈跟踪的结尾 ---
   在 FarPoint.Win.Spread.FpSpread.WndProc(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
请问要怎么解决呢?

4 个回复

倒序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-13 18:12:00
沙发
回复 1楼cqtk的帖子

cqtk 你好

通过jit信息很难推断出是什么原因,你是在进行什么操作时出现该错误,能否发一个demo给我们调试一下。谢谢。
回复 使用道具 举报
cqtk
银牌会员   /  发表于:2012-6-14 09:18:00
板凳

测试Demo

SpreadErrorDemo.rar (41.69 KB, 下载次数: 146)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-14 09:38:00
地板
收到,我先看一下代码,然后给你回复。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-6-14 10:34:00
5#
回复 3楼cqtk的帖子

从我这边的调试结果来看,因为使用多线程导致在重绘控件时出错,我对代码进行了一点改动,主要是修改了TestError方法
  1. namespace SpreadErrorDemo
  2. {
  3.     public partial class Form2 : Form
  4.     {
  5.         public Form2()
  6.         {
  7.             InitializeComponent();
  8.         }

  9.         BackgroundWorker backgroundWorker;
  10.         private delegate void InvokeCallback(BackgroundWorker backgroundWorker, DoWorkEventArgs e);
  11.         
  12.         private void Form2_Load(object sender, EventArgs e)
  13.         {
  14.             this.fpSpread1.ActiveSheet.ColumnHeader.AutoText = HeaderAutoText.Numbers;
  15.             backgroundWorker = new BackgroundWorker();
  16.             backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
  17.         }

  18.         private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
  19.         {
  20.             BackgroundWorker worker = sender as BackgroundWorker;
  21.             this.TestError(worker, e);
  22.         }

  23.         private void button1_Click(object sender, EventArgs e)
  24.         {
  25.             backgroundWorker.RunWorkerAsync();
  26.         }


  27.         public void TestError(BackgroundWorker backgroundWorker, DoWorkEventArgs e)
  28.         {
  29.             if (this.InvokeRequired)
  30.             {
  31.                 this.Invoke(new InvokeCallback(TestError), new object[] { backgroundWorker, e });
  32.             }
  33.             else
  34.             {
  35.                 this.fpSpread1.ActiveSheet.ColumnHeader.Columns.Clear();
  36.                 this.fpSpread1.ActiveSheet.ColumnHeader.Columns.Count = 10000;

  37.                 this.fpSpread1.ActiveSheet.RowHeader.Rows.Clear();
  38.                 this.fpSpread1.ActiveSheet.RowHeader.Rows.Count = 10000;

  39.                 //还原列行数
  40.                 this.fpSpread1.ActiveSheet.ColumnCount = 10000;
  41.                 this.fpSpread1.ActiveSheet.RowCount = 10000;
  42.                 int ttt = 0;
  43.                 for (int i = 0; i < 1000000000; i++)
  44.                 {
  45.                     ttt++;
  46.                 }
  47.             }
  48.         }
  49.     }
  50. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部