本文介绍了升级的Pictureclip上的InvalidActiveXStateException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我已经将这个有趣的小拼图应用程序从vb6转换为vb2008. 它有两个框架9a和9b. Frame9a包含9个图片框 和一个图片剪辑. Frame9b有9个图片框.用户单击 开始,所有Frame9a的图片将被 随机分为9个部分.然后,用户将每个 图片框拖放到frame9b中,以将图片放回原处.我 没有包含任何拖放操作,因为我需要 重写它,并且需要克服此问题:我得到一个错误 表示:未处理InvalidActiveXStateExeption.引发了类型为System.Windows.Forms.AxHost + InvalidActiveXStateException的异常 .我在第9行找到它:picture9a(X).Image = PictureClip9.get_GraphicCell(liRandomIndex) 我认为错误消息指向get_GraphicCell. 此应用程序在vb6中可完美运行,与我一起工作的孩子 真的很喜欢它.我真的很希望能在vb2008中使用它. 选项严格关闭显式选项朋友班frmPuzzlePB 继承System.Windows.Forms.Form Dim Puzzle9(8)作为简短的'9个元素 Dim userPlay9(8)作为'9短元素 私有Sub frmPuzzlePB_Load(ByVal eventSender作为 System.Object,ByVal eventArgs作为System.EventArgs)处理 MyBase.Load PictureClip9.CreateControl() cmdStart.PerformClick()'(cmdStart,New System.EventArgs()) cmdSolve.PerformClick()'(cmdSolve,New System.EventArgs()) cmdSolve.Enabled =假 PictureClip9.Picture = System.Drawing.Image.FromFile (frmMain.StoryTitles.Fields(5).Value) Randomize() Solve9() 结束子 私人Sub cmdStart_Click(ByVal eventSender作为System.Object, ByVal eventArgs作为System.EventArgs)处理cmdStart.Click cmdStart.Enabled = False cmdSolve.Enabled = True 如果opt9Parts.Checked = True,则 Initialize_Puzzle9() Frame9a.Visible = True Frame9b.Visible = True 结束子 公共子Initialize_Puzzle9() 暗淡X短 昏暗的内部循环为短 Dim liRandomIndex短 昏暗的lb用作布尔值 Dim lbFoundDup为布尔值 '初始化Puzzle9组件 对于X = 0到8 拼图9(X)= 99 下一个X 对于X = 0到8 userPlay9(X)= 99 下一个X 对于X = 0到8 picture9a(X).Enabled =真 下一个X 对于X = 0到8 picture9a(X).BackColor = System.Drawing.Color.Blue 下一个X 对于X = 0到8 Picture9b(X).Enabled =真 下一个X 对于X = 0到8 Picture9b(X).Image =什么都没有 下一个X 对于X = 0到8 Picture9b(X).BackColor = System.Drawing.Color.White 下一个X '为每个图片分配一个随机的图片单元 对于X = 0到8 '确保图片不会收到重复的图片 '单元格 lbUsed = True 直到lbUsed = False为止 liRandomIndex = Int(9 * Rnd()) lbFoundDup =假 对于innerLoop = 0到8 如果Puzzle9(innerLoop)= liRandomIndex然后 lbFoundDup =真 万一 下一个内部循环 如果lbFoundDup = False,则 picture9a(X).Image = PictureClip9.get_GraphicCell(liRandomIndex) Puzzle9(X)= liRandomIndex lbUsed =假 退出做 万一 环形 下一个X 结束子 私有Sub cmdSolve_Click(ByVal eventSender作为System.Object, ByVal eventArgs作为System.EventArgs)处理cmdSolve.Click Solve9() 结束子 公开Sub Solve9() 暗淡X短 cmdSolve.Enabled =假 对于X = 0到8 picture9a(X).Image = PictureClip9.get_GraphicCell(X) 下一个X 对于X = 0到8 picture9a(X).Enabled = False 下一个X 对于X = 0到8 Picture9b(X).Enabled =假 下一个X cmdStart.Enabled = True 结束Sub 解决方案 I've converted this fun little puzzle app from vb6 to vb2008. It has two frames 9a and 9b. Frame9a contains 9 pictureboxes and a pictureclip. Frame9b has 9 pictureboxes. The user clicksstart and all of the Frame9a are filled with the picture divided into 9 parts randomly. The user then drags and drops each picturebox into frame9b to put the picture back together. I haven't included any of the drag and drop because I need to rewrite it and I need to get past this issue: I get an errorthat says: InvalidActiveXStateExeption was unhandled. Exceptionof type System.Windows.Forms.AxHost+InvalidActiveXStateException was thrown. I get this at line: picture9a(X).Image = PictureClip9.get_GraphicCell(liRandomIndex)I'm think the error message is pointing to get_GraphicCell.This app works perfectly in vb6 and the kids that I work with really love it. I'm really hoping to get it working in vb2008.Option Strict OffOption Explicit OnFriend Class frmPuzzlePB Inherits System.Windows.Forms.Form Dim Puzzle9(8) As Short '9 elements Dim userPlay9(8) As Short '9 elements Private Sub frmPuzzlePB_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load PictureClip9.CreateControl() cmdStart.PerformClick() '(cmdStart, New System.EventArgs()) cmdSolve.PerformClick() '(cmdSolve, New System.EventArgs()) cmdSolve.Enabled = False PictureClip9.Picture = System.Drawing.Image.FromFile (frmMain.StoryTitles.Fields(5).Value) Randomize() Solve9() End Sub Private Sub cmdStart_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdStart.Click cmdStart.Enabled = False cmdSolve.Enabled = True If opt9Parts.Checked = True Then Initialize_Puzzle9() Frame9a.Visible = True Frame9b.Visible = True End Sub Public Sub Initialize_Puzzle9() Dim X As Short Dim innerLoop As Short Dim liRandomIndex As Short Dim lbUsed As Boolean Dim lbFoundDup As Boolean 'initialize puzzle9 components For X = 0 To 8 Puzzle9(X) = 99 Next X For X = 0 To 8 userPlay9(X) = 99 Next X For X = 0 To 8 picture9a(X).Enabled = True Next X For X = 0 To 8 picture9a(X).BackColor = System.Drawing.Color.Blue Next X For X = 0 To 8 Picture9b(X).Enabled = True Next X For X = 0 To 8 Picture9b(X).Image = Nothing Next X For X = 0 To 8 Picture9b(X).BackColor = System.Drawing.Color.White Next X 'assign a random picture cell to each picture For X = 0 To 8 'ensure a picture doesn't receive a duplicate picture 'cell lbUsed = True Do Until lbUsed = False liRandomIndex = Int(9 * Rnd()) lbFoundDup = False For innerLoop = 0 To 8 If Puzzle9(innerLoop) = liRandomIndex Then lbFoundDup = True End If Next innerLoop If lbFoundDup = False Then picture9a(X).Image = PictureClip9.get_GraphicCell(liRandomIndex) Puzzle9(X) = liRandomIndex lbUsed = False Exit Do End If Loop Next X End Sub Private Sub cmdSolve_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles cmdSolve.Click Solve9() End Sub Public Sub Solve9() Dim X As Short cmdSolve.Enabled = False For X = 0 To 8 picture9a(X).Image = PictureClip9.get_GraphicCell(X) Next X For X = 0 To 8 picture9a(X).Enabled = False Next X For X = 0 To 8 Picture9b(X).Enabled = False Next X cmdStart.Enabled = True End Sub 解决方案 这篇关于升级的Pictureclip上的InvalidActiveXStateException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!
10-29 17:04