[ad_1]
मैंने माउस होवर और माउस लीव इवेंट का उपयोग करके VB.Net में फॉर्म1 के लिए कोड नियंत्रण बॉक्स हैंडलिंग लिखी, लेकिन यह काम नहीं कर रहा है। क्या कोई बता सकता है कि गलती क्या है?
मैंने क्या प्रयास किया है:
Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles MyBase.MouseLeave Me.ControlBox = False End Sub Private Sub Form1_MouseHover(sender As Object, e As EventArgs) Handles MyBase.MouseHover Me.ControlBox = True End Sub
समाधान 1
मेरे लिए यह कोड अच्छा काम कर रहा है।
मेरा मानना है कि आपके फॉर्म पर भी कई नियंत्रण हैं। यदि माउस इनमें से किसी एक पर घूमता है तो यह फॉर्म छोड़ देता है।
यदि आप चाहते हैं कि वे आपके कंट्रोलबॉक्स को भी दृश्यमान बनाएं तो आपको इस कंट्रोल से प्रत्येक होवर-इवेंट को फॉर्म1_माउसहोवर-मेथड में भी जोड़ना होगा।
शायद आपको यह भी देखना चाहिए कि क्या फॉर्म1_माउसलीव वास्तव में लीव-इवेंट का पता लगाता है।
मेरा सुझाव है कि आप एक ऐसी विधि बनाएं जो “जानती” हो कि माउस फॉर्म या उनके नियंत्रणों में से एक पर है…
यहां एक आसान-निर्मित कोड-नमूना है जो फॉर्म से संबंधित टाइमर के साथ काम करता है:
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick Dim p As Point = PointToClient(MousePosition) If (p.X >= 0) And (p.X < Width) And (p.Y >= 0) And (p.Y < Height) Then CheckBox1.Checked = True Else CheckBox1.Checked = False End Sub
मैंने टाइमर को एक छोटा अंतराल (100 एमएस) दिया – केवल एक चीज जो आपको पता होनी चाहिए वह यह है कि फॉर्म-हेडर और बॉर्डर फॉर्म से आकार-परिभाषा से संबंधित नहीं हैं। उनका आकार चयनित फॉर्मबॉर्डर स्टाइल पर निर्भर करता है। इसके साथ आपको कैलकुलेशन भी करना होगा…
और दूसरा :
Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick Dim p As Point = MousePosition Dim r As Rectangle = Me.ClientRectangle r.X += Location.X r.Y += Location.Y If (p.X >= r.Left) And (p.X <= r.Right) And (p.Y >= r.Top) And (p.Y <= r.Bottom) Then CheckBox1.Checked = True Else CheckBox1.Checked = False End Sub
[ad_2]
コメント