VB2008的表單呼叫完程式有衝突

Home Home
引用 | 編輯 天之心
2011-07-18 23:40
樓主
推文 x0
請問各位大大.表單Form1呼叫Form2之後程式有2個地方衝突.
(一)cnt = offset Mod ImageList1.Images.Count
(二)e.Graphics.DrawImage(ImageList1.Images(cnt), dstRect, srcRect, GraphicsUnit.Pixel)
把這2個關掉之後便可以呼叫表單.要如何時這2個程式能夠完整運轉

有建立 ImageList1 元件
 ImageList1 裡面有圖片

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.Show()
    End Sub


Public Class Form2
    ..

訪客只能看到部份內容,免費 加入會員



獻花 x0
引用 | 編輯 ebolaman
2011-07-19 08:21
1樓
  
根據

(一)cnt = offset Mod ImageList1.Images.Count
(二)e.Graphics.DrawImage(ImageList1.Images(cnt), dstRect, srcRect, GraphicsUnit.Pixel)

推斷


Mod 會發生錯誤通常都是因為 後面的數值是 0
例如 cnt = 100 Mod 0  就會發生錯誤
或是根本沒有 ImageList1 這個物件,這兩行的共通點就是都有使用到 ImageList1 這個物件


你有建立 ImageList1 元件嗎?
你的 ImageList1 裡面有圖片嗎?


如果以上都沒問題,希望你能給一下 ImageList1 的圖片,以及 offset 值

並給錯誤的敘述 (例如 溢位...)

獻花 x0
引用 | 編輯 ebolaman
2011-07-19 23:58
2樓
  
由於環境條件不足,我無法推斷錯誤發生的原因 (剛剛用你的 程式碼+圖片 模擬,並沒有任何錯誤發生)


請在錯誤發生的時候,選取錯誤的敘述文字,並且複製 (例如: 嘗試以零除。)

並在此貼上,並且敘述 發生錯誤在 哪行程式碼,以及什麼動作導致這個錯誤發生,以及時間點 (例如:剛開 Form2 的時候...或是跑一陣子,或是 Timer.Interval=300 的情況下,跑了 10 次...)


另外你可以插入一些 Debug 文字,例如

在發生問題的程式碼前插入這一行,並且 點選 功能表 >> Debug >> Windows >> Immediate (Ctrl + G)

複製程式
Debug.Print("offset=" & offset & ", cnt=" & cnt & " [dst] X=" & dstRect.X & ", Y=" & dstRect.Y)

則可以進一步釐清 問題的真相

獻花 x0
引用 | 編輯 天之心
2011-07-20 21:25
3樓
  
請問大大 這一段在VB內我找不到 點選 功能表 >> Debug >> Windows >> Immediate (Ctrl + G)

(一)cnt = offset Mod ImageList1.Images.Count
(一)[偵錯]嘗試以零除。
(二)e.Graphics.DrawImage(ImageList1.Images(cnt), dstRect, srcRect, GraphicsUnit.Pixel)
(二)[偵錯]InvalidArgument='0' 不是 'index' 的有效值。 參數名稱: index

Form2表單 單獨呼叫是可以正常運作.但是Form1表單呼叫Form2表單就會出現2個錯誤
正常表單呼叫表單應該是不會有錯誤訊息.我想會不會是呼叫表單不可以用Form2.Show()
類型呼叫

獻花 x0
引用 | 編輯 ebolaman
2011-07-20 22:20
4樓
  
下面是引用 天之心 於 2011-07-20 21:25 發表的 : 到引言文
請問大大 這一段在VB內我找不到 點選 功能表 >> Debug >> Windows >> Immediate (Ctrl + G)

(一)cnt = offset Mod ImageList1.Images.Count
(一)[偵錯]嘗試以零除。
(二)e.Graphics.DrawImage(ImageList1.Images(cnt), dstRect, srcRect, GraphicsUnit.Pixel)
(二)[偵錯]InvalidArgument='0' 不是 'index' 的有效值。 參數名稱: index

Form2表單 單獨呼叫是可以正常運作.但是Form1表單呼叫Form2表單就會出現2個錯誤
正常表單呼叫表單應該是不會有錯誤訊息.我想會不會是呼叫表單不可以用Form2.Show()
類型呼叫


你是不是把 ImageList1 放在 Form1 了?

我在 1樓有提過 這個錯誤

獻花 x0
引用 | 編輯 天之心
2011-07-21 18:30
5樓
  
Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form2.Show()
  End Sub


Form1 表單只有這個
另外我傳上圖片

本帖包含附件
檔名: zip VB2008.rar   (2022-06-09 14:18 / 1008 KB)   下載次數:3


獻花 x0
引用 | 編輯 ebolaman
2011-07-21 19:42
6樓
  
下面是引用 天之心 於 2011-07-21 18:30 發表的 : 到引言文
Public Class Form1

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Form2.Show()
  End Sub


Form1 表單只有這個
另外我傳上圖片



在 Form2 的程式碼使用以下兩行

(一)cnt = offset Mod ImageList1.Images.Count
(一)[偵錯]嘗試以零除。
(二)e.Graphics.DrawImage(ImageList1.Images(cnt), dstRect, srcRect, GraphicsUnit.Pixel)
(二)[偵錯]InvalidArgument='0' 不是 'index' 的有效值。 參數名稱: index


時候會發生錯誤就明顯的代表著 ImageList1.Images.Count 這個值 是 0

也就代表著 ImageList1 這個物件的圖片的 總數是 0

就是說,沒有圖片在 ImageList1 裡面


請檢查一下 Form2 ImageList1



獻花 x1