منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[سؤال] عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [سؤال] عايز اعرف ايه السبب وايه الحل؟ RaiseEvent (/showthread.php?tid=24892)



عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - الماجيك مسعد - 10-05-18



السلام عليكم

ممكن مساعدة عايز اعرف ايه السبب وايه الحل؟


RE: عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - عبدالله الدوسري - 10-05-18

الـ Delegate لا ينادى بالـ RaiseEvent
ولا يمكن إستخدامها مباشرتاً كـ Expressions

المفروض تستخدم Invoke من متغير نفس نوع الـ Delegate 


RE: عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - الماجيك مسعد - 10-05-18

(10-05-18, 03:53 PM)عبدالله الدوسري كتب : الـ Delegate لا ينادى بالـ RaiseEvent
ولا يمكن إستخدامها مباشرتاً كـ Expressions

المفروض تستخدم Invoke من متغير نفس نوع الـ Delegate 

طيب ممكن تقلي تعديل الكود هيكون ايه؟


RE: عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - silverlight - 10-05-18

الواضح انك مترجم الكود من #C ولكن بشكل خاطئ فقط لا غير 
عموما الكود أسهل مما تتخيل بسرط يكون عندك Event , EventArgs المناسبة لكي تطلق الحدث

الكود الخاص بك يجب ان يكون كالتالي ......


كود :
       Try
           If od.ShowDialog <> DialogResult.Cancel Then
               If IO.File.Exists(Me.od.FileName) Then
                   Dim fc As String = IO.File.ReadAllText(Me.od.FileName)
                   If fc.Contains("@") Then
                       'RaiseEvent
                   End If
               End If
           End If
       Catch ex As Exception

       End Try



RE: عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - الماجيك مسعد - 10-05-18

بالفعل انا محول الكود من سي شارب ببرنامج instant vb
لو تعرف برنامج افضل منه يريت تقول اسمه

واشكرك جزيلا


RE: عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - silverlight - 10-05-18

هذا هو الكود الأكثر دقة و الذي لا تكتبه لك برامج مثل Reflector او جتي حين تستخدم برامج تترجم من #C الي الفيجوال


كود :
Public Class Form1

   Private ofd As OpenFileDialog

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Try
           If ofd.ShowDialog <> DialogResult.Cancel Then
               If IO.File.Exists(Me.ofd.FileName) Then
                   Dim fc As String = IO.File.ReadAllText(Me.ofd.FileName)
                   If fc.Contains("@") Then
                       Me.OnSourceSlected(New SourceSelectedEventArgs(True, fc))
                   End If
               Else
                   ' أظهر الرسالة
               End If
           End If
       Catch ex As Exception

       End Try
   End Sub

   Protected Overridable Sub OnSourceSlected(e As SourceSelectedEventArgs)
       Dim handler As SelectedEventHandler = CType(Me.Events("SourceSelectedEvent"), SelectedEventHandler)
       If (handler IsNot Nothing) Then
           RaiseEvent SourceSelected(Me, e)
       End If
   End Sub

   Public Custom Event SourceSelected As SelectedEventHandler
       AddHandler(value As SelectedEventHandler)
           Me.Events.AddHandler("SourceSelectedEvent", value)
       End AddHandler
       RemoveHandler(value As SelectedEventHandler)
           Me.Events.RemoveHandler("SourceSelectedEvent", value)
       End RemoveHandler
       RaiseEvent(sender As Object, e As SourceSelectedEventArgs)
           CType(Me.Events("SourceSelectedEvent"), SelectedEventHandler).Invoke(sender, e)
       End RaiseEvent
   End Event

End Class

Public Delegate Sub SelectedEventHandler(sender As Object, e As SourceSelectedEventArgs)

Public Class SourceSelectedEventArgs
   Inherits EventArgs
   Private _isImported As Boolean
   Private _ids As String

   Public Sub New(isImported As Boolean, ids As String)
       Me._isImported = isImported
       Me._ids = ids
   End Sub

   Public Property IsImported As Boolean
       Get
           Return Me._isImported
       End Get
       Set(value As Boolean)
           Me._isImported = value
       End Set
   End Property

   Public Property IDS As String
       Get
           Return Me._ids
       End Get
       Set(value As String)
           Me._ids = value
       End Set
   End Property

End Class



RE: عايز اعرف ايه السبب وايه الحل؟ RaiseEvent - الماجيك مسعد - 11-05-18

(10-05-18, 06:34 PM)silverlight كتب : هذا هو الكود الأكثر دقة و الذي لا تكتبه لك برامج مثل Reflector او جتي حين تستخدم برامج تترجم من #C الي الفيجوال


كود :
Public Class Form1

   Private ofd As OpenFileDialog

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       Try
           If ofd.ShowDialog <> DialogResult.Cancel Then
               If IO.File.Exists(Me.ofd.FileName) Then
                   Dim fc As String = IO.File.ReadAllText(Me.ofd.FileName)
                   If fc.Contains("@") Then
                       Me.OnSourceSlected(New SourceSelectedEventArgs(True, fc))
                   End If
               Else
                   ' أظهر الرسالة
               End If
           End If
       Catch ex As Exception

       End Try
   End Sub

   Protected Overridable Sub OnSourceSlected(e As SourceSelectedEventArgs)
       Dim handler As SelectedEventHandler = CType(Me.Events("SourceSelectedEvent"), SelectedEventHandler)
       If (handler IsNot Nothing) Then
           RaiseEvent SourceSelected(Me, e)
       End If
   End Sub

   Public Custom Event SourceSelected As SelectedEventHandler
       AddHandler(value As SelectedEventHandler)
           Me.Events.AddHandler("SourceSelectedEvent", value)
       End AddHandler
       RemoveHandler(value As SelectedEventHandler)
           Me.Events.RemoveHandler("SourceSelectedEvent", value)
       End RemoveHandler
       RaiseEvent(sender As Object, e As SourceSelectedEventArgs)
           CType(Me.Events("SourceSelectedEvent"), SelectedEventHandler).Invoke(sender, e)
       End RaiseEvent
   End Event

End Class

Public Delegate Sub SelectedEventHandler(sender As Object, e As SourceSelectedEventArgs)

Public Class SourceSelectedEventArgs
   Inherits EventArgs
   Private _isImported As Boolean
   Private _ids As String

   Public Sub New(isImported As Boolean, ids As String)
       Me._isImported = isImported
       Me._ids = ids
   End Sub

   Public Property IsImported As Boolean
       Get
           Return Me._isImported
       End Get
       Set(value As Boolean)
           Me._isImported = value
       End Set
   End Property

   Public Property IDS As String
       Get
           Return Me._ids
       End Get
       Set(value As String)
           Me._ids = value
       End Set
   End Property

End Class

بارك الله فيك استاذي الفاضل