当前位置: 代码迷 >> .NET组件控件 >> 关于 MessageBox弹出死机的有关问题
  详细解决方案

关于 MessageBox弹出死机的有关问题

热度:193   发布时间:2016-05-04 23:26:43.0
关于 MessageBox弹出死机的问题
我在代码的按钮事件里面 弹出MessageBox 不知道 为什么就一直处于死机状态, 是不是因为重绘的原因,

我有个pictureBox触发了paint, 里面画图重绘,可是我觉得没有关联呀
paint 代码如下 大概就是利用 graphics绘图没啥别的

  private void pCanvas_Paint(object sender, PaintEventArgs e)
        {
            ////////////////////////
            if (isTextChanged) 
            {
                isTextChanged = false;
                return;
            }

            string distEndStr = string.Empty;

            List<PointF> listLPPf = new List<PointF>(); //逻辑坐标点
            List<Single> listX = new List<Single>();
            List<Single> listY = new List<Single>();
            PointF tempPf = new PointF();

            PointF middleEndPf = new PointF();
            Graphics graphics = e.Graphics;
            Single maxY = 0f;
            Single minY = 0f;
            Single maxX = 0f;
            Single minX = 0f;

            listPf.Clear(); //在添加之前清除

            foreach (string vertex in listVertex)
            {
                tempPf.X = MathForPrice.CovertStrToFloat(vertex.Split(new char[] { ' ' })[0]); //取出X坐标点
                tempPf.Y = MathForPrice.CovertStrToFloat(vertex.Split(new char[] { ' ' })[1]);//取出Y坐标点

                listX.Add(tempPf.X); //x 坐标集合
                listY.Add(tempPf.Y); // Y 坐标集合
                listPf.Add(tempPf);
            }

            maxX = listX.Max(); //取出x坐标集合中最大的坐标
            minX = listX.Min();
            maxY = listY.Max();
            minY = listY.Min();

            centerPf.X = (maxX + minX) / 2; //虚拟坐标的中心位置
            centerPf.Y = (maxY + minY) / 2;


            Single coefX = this.pCanvas.Width / (maxX - minX);
            Single coefY = this.pCanvas.Height / (maxY - minY);
            zoom = coefX > coefY ? coefY : coefX; //按最小比例
            zoom = zoom * 0.9f;// 由于显示的太边缘了,所以缩放90%

            for (int i = 0; i < listPf.Count; i++)
            {
                tempPf = LPtoDP(listPf[i], centerPf, pCanvas, zoom); //将 逻辑坐标转换为设备坐标
                listLPPf.Add(tempPf);

                if (!dictForIndexAndPoint.ContainsKey(i))
                {
                    dictForIndexAndPoint.Add(i, tempPf); //添加顶点 和顶点对应的坐标
  相关解决方案