تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[كود] كود history للمتصفحات المصنوعة علي الفيجوال بيسك
#11
(30-07-16, 05:29 PM)silverlight كتب :
كود :
Public Class Form1

   Private history As BrowserHistory = Nothing
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Dim historyLink As String = "أي رابط يتم استرداده من المتصفح"
       Dim historyDatetime As DateTime = DateTime.Now

       history = New BrowserHistory(historyLink, historyDatetime)

       Label1.Text = history.HistroryLink
       Label2.Text = history.HistoryDateTiem.ToString
   End Sub
End Class

الكدين الي انت ادتهملي ليس لهم اي علاقة بسوالي انا كل الي انا عايز عباراة عن ListBox فيها روابط الي زارها مستخدم متصفحي وعندما يضغط عليها تعمل في متصفحي وعندما يخرج من البرنامج لا تختفي الروابط بل تبقي حتي يضغط هو علي مسح الايتمز المحدد  ويكون بجانب كل رابط موجود التاريخ الذي تصفح فيه الموقع فقط
موقعي (مدونتي):-
هنا

[url=https://sobertgueni.blogspot.com.eg/][/url]: )
الرد }}}
تم الشكر بواسطة:
#12
سؤالك هكذا أخذ منحني أخر أو أخذ شكل أخر تماما عموما سهلة إن شاء الله
بس ياريت تجاوبني علي سؤالي
هل تستطيع استرداد الرابط من المتصفح لأن أنا لم اتعامل مع أداة WebBrowser الموجودة في الفيجوال استوديو و أيضا لا اعلم هل الأداة بها حدث ما يمكن من خلاله و حين يتغير الرابط نستطيع الجصول علي الرابط ام لا
الرد }}}
تم الشكر بواسطة:
#13
(30-07-16, 05:55 PM)silverlight كتب : سؤالك هكذا أخذ منحني أخر أو أخذ شكل أخر تماما عموما سهلة إن شاء الله
بس ياريت تجاوبني علي سؤالي
هل تستطيع استرداد الرابط من المتصفح لأن أنا لم اتعامل مع أداة WebBrowser الموجودة في الفيجوال استوديو و أيضا لا اعلم هل الأداة بها حدث ما يمكن من خلاله و حين يتغير الرابط نستطيع الجصول علي الرابط ام لا

نعم هو يستطيع استراد الرابط من المتصفح وغير كدة انا عن نفسي قبل كدة خالتو يسترد الرابط من اداة كومبو بوكس
موقعي (مدونتي):-
هنا

[url=https://sobertgueni.blogspot.com.eg/][/url]: )
الرد }}}
تم الشكر بواسطة:
#14
عظيم .... الأن أصبحت الصورة أكثر وضوحا و حسب ما فهمت  حتي الأن هو أنك تريد استرداد الرابط من المتصفح ثم تحفظ الروابط كلها في ملف و عند بداية برنامجك تقرأها و تضعها في ListBox اخر مثلا بحيث تمثل History الخاص بالمتصفح
الرد }}}
تم الشكر بواسطة:
#15
(30-07-16, 06:14 PM)silverlight كتب : عظيم .... الأن أصبحت الصورة أكثر وضوحا و حسب ما فهمت  حتي الأن هو أنك تريد استرداد الرابط من المتصفح ثم تحفظ الروابط كلها في ملف و عند بداية برنامجك تقرأها و تضعها في ListBox اخر مثلا بحيث تمثل History الخاص بالمتصفح

نعم بس علي شرط ListBox يكون موجود في فورم 2 وعند غلق البرنامج الروابط لا تختفي وعند الضغط علي الروابط يشغلها في المتصفح
موقعي (مدونتي):-
هنا

[url=https://sobertgueni.blogspot.com.eg/][/url]: )
الرد }}}
تم الشكر بواسطة:
#16
بعد وضوح الأمر بشكل جيد هنا نحتاج ان نقوم بالتعديل علي الكلاس الأصلي قليلا حتي نستطيع مقارنة الروابط عند الحاجة إلي ذلك و الهدف هنا أن نتجنب أن يوجد رابط يحمل نفس الإسم


كود :
Imports System.Globalization

Public Class BrowserHistory
   Implements ICloneable, IComparable

#Region "Field"
   Private historyName As String
   Private historyDate As String
#End Region

#Region "Constructor"

   Public Sub New()
       Me.New(CType(Nothing, String), CType(Nothing, DateTime))
   End Sub

   Public Sub New(historyLinkNname As String, historyDateTime As DateTime)
       historyName = historyLinkNname
       historyDate = historyDateTime
   End Sub

#End Region

#Region "Property"

   Public Property HistroryLink As String
       Get
           Return historyName
       End Get
       Set(value As String)
           historyName = value
       End Set
   End Property

   Public Property HistoryDateTime As DateTime
       Get
           Return historyDate
       End Get
       Set(value As DateTime)
           historyDate = value
       End Set
   End Property

#End Region

#Region "Method"

   Public Function Clone() As Object Implements ICloneable.Clone
       Return MyBase.MemberwiseClone()
   End Function

   Public Function CompareTo(obj As Object) As Integer Implements IComparable.CompareTo
       If TypeOf obj Is BrowserHistory Then
           Dim history As BrowserHistory = CType(obj, BrowserHistory)
           If Me.HistoryDateTime > history.HistoryDateTime Then
               Return 1
           End If
           If Me.HistoryDateTime < history.HistoryDateTime Then
               Return -1
           End If
       End If
       Return 0
   End Function

   Public Shared Operator =(firstHistory As BrowserHistory, secondHistroy As BrowserHistory) As Boolean
       Return firstHistory.Equals(secondHistroy)
   End Operator

   Public Shared Operator <>(firstHistory As BrowserHistory, secondHistroy As BrowserHistory) As Boolean
       Return Not (firstHistory Is secondHistroy)
   End Operator

   Public Shared Operator <(firstHistory As BrowserHistory, secondHistroy As BrowserHistory) As Boolean
       Return firstHistory.CompareTo(secondHistroy) < 0
   End Operator

   Public Shared Operator >(firstHistory As BrowserHistory, secondHistroy As BrowserHistory) As Boolean
       Return firstHistory.CompareTo(secondHistroy) > 0
   End Operator

   Public Shared Function HistoryToDateTime(history As BrowserHistory) As DateTime
       If history IsNot Nothing Then

           Return history.HistoryDateTime
           ' You may use the below code instead
           ' You may add more paramters to the returned value based on your requirements
           'Return New DateTime(CType(history.HistoryDateTime.Day, Integer), CType(history.HistoryDateTime.Hour, Integer), CType(history.HistoryDateTime.Minute, Integer))
       End If
       Return Nothing
   End Function

   Public Shared Function HistoryToList(history As BrowserHistory) As List(Of String)
       If history IsNot Nothing Then
           Return New List(Of String) From {history.historyName, history.HistoryDateTime.ToString}
       End If
       Return Nothing
   End Function

   Public Shared Function HistoryToLink(history As BrowserHistory) As String
       If history IsNot Nothing Then
           Return history.HistroryLink
       End If
       Return CType(Nothing, String)
   End Function

   Public Shared Function HistoryToUri(history As BrowserHistory) As Uri
       If history IsNot Nothing Then
           Return New Uri(history.HistroryLink)
       End If
       Return Nothing
   End Function

   Public Overrides Function GetHashCode() As Integer
       Return Me.HistoryDateTime.GetHashCode()
   End Function

   Public Overrides Function Equals(obj As Object) As Boolean
       Return TypeOf obj Is BrowserHistory AndAlso Me.Equals(CType(obj, BrowserHistory))
   End Function

   Public Overloads Function Equals(history As BrowserHistory) As Boolean
       Return Me.HistoryDateTime.Equals(history.HistoryDateTime)
   End Function

   Public Overrides Function ToString() As String
       Return String.Concat(New String() {Me.historyName.ToString(CultureInfo.CurrentCulture), Me.HistoryDateTime.ToString(CultureInfo.CurrentCulture)})
   End Function

#End Region

End Class


في المشاركات التالية سأكتب لك بقية الكود
الرد }}}
تم الشكر بواسطة:
#17
يعني يا اخي الكود دي يوضع في كلاس صح وانت في بقية الكود هتديني الي يربط الكود بي الفورم
موقعي (مدونتي):-
هنا

[url=https://sobertgueni.blogspot.com.eg/][/url]: )
الرد }}}
تم الشكر بواسطة:
#18
أولا : الكلاس أعلاه لو أجدت استحدامه سوف يساهم في حل مشكلتك تماما
ثانيا : دعني أوضح لك كيف تستفيد من الكلاس اعلاه


المرحلة الثانية
هناك إتجاهان لتنفذ المرحلة الثانية
الإتجاه الأول هو أن تبني مصفوفة لهذا الكلاس و بما ان الوقت ضيق فلن نستخدم هذا الاسلوب و ربما لاحقا ان كان لدي وقت اكتب لك المصفوفة

الإتجاه الثاني هو ان تستخدم أي من المصفوفات الموجودة في الدوت نت ثم نملاها بالكلاس الخاص وبما انك سوف تستخدم المصفوفة لاحقا لكي تقوم بنقل البيانات الموجودة بها من الفورم الموجود به المتصفح و يمثله هنا الفورم الأول ثم تقوم بإظهار البيانات الموجودة في المصفوفة في الفورم الثاني لذلك من لأفضل وعند تعريف المصفوفة يتم تعريفها علي انها من النوع Shared

ثم وعلي ما اعتقد وفي داخل الحدث WebborwserNaviagted  تستطيع استراد اسم الرابط من الخاصية Webbrowser1.Url.ToString

شكل الكود في الفورم الأول سيكون تقريبا هكذا و انا هنا اضفت بعض الكونترول من اجل الاختبار لا غير


كود :
Public Class Form1

   Friend Shared histories As List(Of BrowserHistory) = New List(Of BrowserHistory)()

   Private Sub Navigate(ByVal address As String)

       If String.IsNullOrEmpty(address) Then Return
       If address.Equals("about:blank") Then Return
       If Not address.StartsWith("http://") And
       Not address.StartsWith("https://") Then
           address = "http://" & address
       End If

       Try
           WebBrowser1.Navigate(New Uri(address))
       Catch ex As System.UriFormatException
           Return
       End Try

   End Sub


   Private Sub WebBrowser1_Navigated(sender As Object, e As WebBrowserNavigatedEventArgs) Handles WebBrowser1.Navigated
       Dim urlString As String = WebBrowser1.Url.ToString()
       Dim enteringTime As DateTime = DateTime.Now
       Dim history As New BrowserHistory(urlString, enteringTime)
       histories.Add(history)
   End Sub

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

   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       Navigate("https://msdn.microsoft.com/")
   End Sub

End Class


شكل الكود في الفورم الثاني سيكون تقريبا مشابه لهذا الكود



كود :
Public Class Form2
   Private Shared historiesCopyList As List(Of BrowserHistory)
   Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       historiesCopyList = New List(Of BrowserHistory)(Form1.histories.ToList)
       For Each history In historiesCopyList
           Me.ListBox1.Items.Add(history.ToString)
       Next
   End Sub
End Class


للأسف و بسبب بطء النت عندي لم اختبر الكود تماما لكن و بشكل اتمني ان الفكرة تكون وضحت لك و ان شاء الله تؤتي ثمارها معك
الرد }}}
تم الشكر بواسطة:
#19
اخي دلوخ في 2 مشكلة
مشكلة واحد : 
عند الخروج من البرنامج تختفي الروابط الي المستخدم زارها
مشكلة 2 :
عند الضغط علي الرابط لا يظهر في الويب بروزر
يا ريت حل وشكرا للاخ 
silverlight علي التعب معي
موقعي (مدونتي):-
هنا

[url=https://sobertgueni.blogspot.com.eg/][/url]: )
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم