C#ToolStrip System.StackOverflowException未处理

C#ToolStrip System.StackOverflowException未处理,c#,windows,exception,stack-overflow,toolstrip,C#,Windows,Exception,Stack Overflow,Toolstrip,我使用toolstrip控制显示PDF文档。 但我有一个键盘或任何关于键盘的东西。 我的应用程序显示错误消息: [System.StackOverflowException was unhandled] [An handled exception of type 'System.stackOverflowException' occurred in System.Windows.Forms.dll] 我使用.net的pdf工具 using MigraDoc; using PdfSharp.P

我使用toolstrip控制显示PDF文档。 但我有一个键盘或任何关于键盘的东西。 我的应用程序显示错误消息:

[System.StackOverflowException was unhandled]
[An handled exception of type 'System.stackOverflowException' occurred in 
System.Windows.Forms.dll]
我使用.net的pdf工具

using MigraDoc;
using PdfSharp.Pdf;
using PDFLibNet;
救命啊!谢谢你

我的代码 公共部分类frm\U showpdf:表格 {

intpageindex=0;
int pagecount=0;
int def_pagewidth,def_pageheight=0;
公共字符串filename=“”;
int workingnow=0;
公共财政司司长(PDF)
{
初始化组件();
}
私有void updateUI()
{
ts_pageindex.Text=Convert.ToString(pageindex);
ts_pagetotal.Text=Convert.ToString(页面计数);
}
私人作废显示页面PDF(int indexpage)
{
PDFLibNet.PDFWrapper pdfview=新的PDFLibNet.PDFWrapper();
workingnow=1;
pdfview.LoadPDF(filename.ToString());
pdfview.CurrentPage=indexpage;
pageindex=pdfview.CurrentPage;
pagecount=pdfview.pagecount;
pdfview.usemuff=true;
pdfview.FitToWidth(图1.Handle);
pdfview.RenderPage(pictureBox1.Handle);
pdfview.CurrentX=0;
pdfview.CurrentY=0;
如果(def_pagewidth==0)
{
def_pagewidth=pdfview.pagewidth;
def_pageheight=pdfview.pageheight;
}
pdfview.ClientBounds=新矩形(0,0,def_pagewidth,def_pageheight);
pagecount=pdfview.pagecount;
updateUI();
位图_backbuffer=新位图(定义页面宽度、定义页面高度);
使用(Graphics g=Graphics.FromImage(_backbuffer))
{
//pdfview.RenderHDC(g.GetHdc);
pdfview.DrawPageHDC(g.GetHdc());
g、 释放hdc();
}
pictureBox1.SizeMode=PictureBoxSizeMode.AutoSize;
pictureBox1.Image=\u backbuffer;
workingnow=0;
pdfview.Dispose();
}
私有void显示文件(对象发送方、事件参数e)
{
布尔hasfilename=false;
if(pictureBox1.Image!=null)
{
pictureBox1.Image.Dispose();
}
如果(filename.ToString().Trim()!=“”)hasfilename=true;
如果(hasfilename==false)
{
openFileDialog1.Filter=“PDF文件|*.PDF”;
DialogResult=openFileDialog1.ShowDialog();
if(result==DialogResult.OK)//测试结果。
{
hasfilename=true;
pgpdf1.Text=openFileDialog1.FileName;
filename=pgpdf1.Text.ToString();
}
其他的
{
//pgpdf1.Text=“”;
filename=pgpdf1.Text.ToString();
}
}
如果(hasfilename==true)
{
显示页面PDF(1);
}
}
私有void frm\u showpdf\u加载(对象发送方,事件参数e)
{
toolStrip1.Cursor=System.Windows.Forms.Cursors.Hand;
}
私有void panel1_MouseEnter(对象发送方,事件参数e)
{
小组1.焦点();
}
私有void pictureBox1\u MouseEnter(对象发送方,事件参数e)
{
小组1.焦点();
}
private void ts_首次单击(对象发送者,事件参数e)
{
显示页面PDF(1);
}
私有无效返回单击(对象发送方,事件参数e)
{
如果(pageindex>1){show_pagepdf(pageindex-1);};
}
私有void ts_下一步单击(对象发送者,事件参数e)
{
如果(pageindex

}

我发现错误并将代码更改为:

    private void frm_showpdf_KeyDown(object sender, KeyEventArgs e)
    {
       switch (e.KeyCode)
       {
          case Keys.Up:
             ts_back.PerformClick();
             e.Handled = true;
             break;
          case Keys.Left:
             ts_back.PerformClick();
             e.Handled = true;
             break;
          case Keys.Right:
             ts_next.PerformClick();
             e.Handled = true;
             break;
          case Keys.Down:
             ts_next.PerformClick();
             e.Handled = true;
             break;
       }
    }
为什么第行出现C#错误:

    if (!e.Handled)
       base.OnKeyDown(e);

请告诉我。

请添加您正在使用的调用base的代码。OnKeyDown()再次触发了相同的方法。它使方法递归,没有基本情况。
    if (!e.Handled)
       base.OnKeyDown(e);