2016-04-09 7 views
2

Microsoft oyununun' Minesweeper 'sürümünü yapıyorum. Düğmeleri ve etiketleri programlı olarak yapıyorum ve düğmeler için iki işleyici ve etiketler için aşağıdaki gibi bir işleyici ekliyorum. Bir 'ınvalidcastexception' dönünce formun kendisi, düğmelerin ızgaranın dışında tıklayın dekFormun tıklanması, 'System.Windows.Forms.Button' türünü yazmak için '<Namespace.FormName>' nesnesine nesne atanamıyor '

Private Sub Button_MouseUp(sender As Button, e As MouseEventArgs) Handles Me.MouseUp 
Private Sub Button_MouseDown(sender As Button, e As MouseEventArgs) Handles Me.MouseDown 
Private Sub Label_MouseDown(sender As Label, e As MouseEventArgs) Handles Me.MouseClick 

Her şey iyi çalışır:

AddHandler Newbtn.MouseDown, AddressOf Button_MouseDown 
AddHandler Newbtn.MouseUp, AddressOf Button_MouseUp 
AddHandler Newlbl.MouseDown, AddressOf Label_MouseDown 

sonra üç prosedürlere sahip. VS2015 bir kırılma durumuna giriyor. Üst kısımda şöyle diyor:

"Uygulamanız bir kesinti durumuna girdi, ancak tüm iş parçacıkları harici kod (genellikle sistem veya çerçeve kodu) çalıştırdığı için gösterilecek kod yok."

Ek bilgi: 'System.Windows.Forms.Button' yazmak için 'Mines.MineSweeperPJS' türünde nesne dönüştürülemiyor.

Mines, Ad alanıdır. MineSweeperPJS formudur.

Bu sorunun nedeni ile ilgili herhangi bir öneri çok takdir edilecektir!

cevap

1

sorun

..... Handles Me.MouseUp 
      ^^^ 

Bu formu (Me) her mouseup veya mousedown olay belirtilen olay işleyicisi yansıtılması anlamına gelir etkinlik işleyicileri bu bölümünde yer almaktadır.
Ben size Form Designer bu

Private Sub Button_MouseUp(sender As Object, e As MouseEventArgs) Handles Newbtn.MouseUp 

formu motoru aramaları gibi bir şey ile bitirmek kendi şablonunu kullanmasına izin çünkü eğer bu olay işleyicisi elle Düğme Nesne dan parametresini sender değişen yazdım düşünüyorum Bu olay işleyicileri, bir Form mafsalına veya fare işaretine yanıt olarak, bir Düğmeye yapılan başvuruyu değil, Form'un kendisine (Me) başvuruyu iletir. Ve bu geçersiz dökümün sebebidir.

Sen zaten AddHandler kullanarak olay işleyicileri kurdunuz çünkü ...Handles Me.MouseUp kaldırıp da cevap için çok As Object

+0

sayesinde olmaya sender parametresini geri verebilir! Kulpları çıkardım ve her şey mükemmel çalışıyor. Kodlama eğitimim çoğunlukla bilmediğim şeyleri aradığım yer olan google'dan geliyor. Bu nedenle, işlem başlıklarının kopyalanması büyük olasılıkla buradan yapıştırıldı. Bu gibi siteleri ve katılımcıların sunduğu yardımı gerçekten takdir ediyorum. Pete. – Pete

+0

Aslında bunu düşünerek haklısın, göndericiyi düğmeye ve etikete değiştirdim. Çalışmaya çalışmak için çabalarımdan biri. Kulplarda birçok varyasyonu denedim ama asla kaldırmayı denemedim, ha :) – Pete

İlgili konular