(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 فيها روابط الي زارها مستخدم متصفحي وعندما يضغط عليها تعمل في متصفحي وعندما يخرج من البرنامج لا تختفي الروابط بل تبقي حتي يضغط هو علي مسح الايتمز المحدد ويكون بجانب كل رابط موجود التاريخ الذي تصفح فيه الموقع فقط
سؤالك هكذا أخذ منحني أخر أو أخذ شكل أخر تماما عموما سهلة إن شاء الله
بس ياريت تجاوبني علي سؤالي
هل تستطيع استرداد الرابط من المتصفح لأن أنا لم اتعامل مع أداة WebBrowser الموجودة في الفيجوال استوديو و أيضا لا اعلم هل الأداة بها حدث ما يمكن من خلاله و حين يتغير الرابط نستطيع الجصول علي الرابط ام لا
(30-07-16, 05:55 PM)silverlight كتب : [ -> ]سؤالك هكذا أخذ منحني أخر أو أخذ شكل أخر تماما عموما سهلة إن شاء الله
بس ياريت تجاوبني علي سؤالي
هل تستطيع استرداد الرابط من المتصفح لأن أنا لم اتعامل مع أداة WebBrowser الموجودة في الفيجوال استوديو و أيضا لا اعلم هل الأداة بها حدث ما يمكن من خلاله و حين يتغير الرابط نستطيع الجصول علي الرابط ام لا
نعم هو يستطيع استراد الرابط من المتصفح وغير كدة انا عن نفسي قبل كدة خالتو يسترد الرابط من اداة كومبو بوكس
عظيم .... الأن أصبحت الصورة أكثر وضوحا و حسب ما فهمت حتي الأن هو أنك تريد استرداد الرابط من المتصفح ثم تحفظ الروابط كلها في ملف و عند بداية برنامجك تقرأها و تضعها في ListBox اخر مثلا بحيث تمثل History الخاص بالمتصفح
(30-07-16, 06:14 PM)silverlight كتب : [ -> ]عظيم .... الأن أصبحت الصورة أكثر وضوحا و حسب ما فهمت حتي الأن هو أنك تريد استرداد الرابط من المتصفح ثم تحفظ الروابط كلها في ملف و عند بداية برنامجك تقرأها و تضعها في ListBox اخر مثلا بحيث تمثل History الخاص بالمتصفح
نعم بس علي شرط ListBox يكون موجود في فورم 2 وعند غلق البرنامج الروابط لا تختفي وعند الضغط علي الروابط يشغلها في المتصفح
بعد وضوح الأمر بشكل جيد هنا نحتاج ان نقوم بالتعديل علي الكلاس الأصلي قليلا حتي نستطيع مقارنة الروابط عند الحاجة إلي ذلك و الهدف هنا أن نتجنب أن يوجد رابط يحمل نفس الإسم
كود :
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
في المشاركات التالية سأكتب لك بقية الكود
يعني يا اخي الكود دي يوضع في كلاس صح وانت في بقية الكود هتديني الي يربط الكود بي الفورم
أولا : الكلاس أعلاه لو أجدت استحدامه سوف يساهم في حل مشكلتك تماما
ثانيا : دعني أوضح لك كيف تستفيد من الكلاس اعلاه
المرحلة الثانية
هناك إتجاهان لتنفذ المرحلة الثانية
الإتجاه الأول هو أن تبني مصفوفة لهذا الكلاس و بما ان الوقت ضيق فلن نستخدم هذا الاسلوب و ربما لاحقا ان كان لدي وقت اكتب لك المصفوفة
الإتجاه الثاني هو ان تستخدم أي من المصفوفات الموجودة في الدوت نت ثم نملاها بالكلاس الخاص وبما انك سوف تستخدم المصفوفة لاحقا لكي تقوم بنقل البيانات الموجودة بها من الفورم الموجود به المتصفح و يمثله هنا الفورم الأول ثم تقوم بإظهار البيانات الموجودة في المصفوفة في الفورم الثاني لذلك من لأفضل وعند تعريف المصفوفة يتم تعريفها علي انها من النوع 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
للأسف و بسبب بطء النت عندي لم اختبر الكود تماما لكن و بشكل اتمني ان الفكرة تكون وضحت لك و ان شاء الله تؤتي ثمارها معك
اخي دلوخ في 2 مشكلة
مشكلة واحد :
عند الخروج من البرنامج تختفي الروابط الي المستخدم زارها
مشكلة 2 :
عند الضغط علي الرابط لا يظهر في الويب بروزر
يا ريت حل وشكرا للاخ
silverlight علي التعب معي