وعليكم السلام أخ معاذ
كما فهمت من سؤالك هو أنك تريد آلية إضافة روابط إلى الـ RichTextBox عن طريق الكود.
كما تلاحظ أن أداة RichTextBox في الدوت-نت تمتلك خاصية Controls ( لحسن الحظ تمت وراثتها وعمل تكامل لها مع RichTextBox
) .
كما تلاحظ أداة LinkLabel هي الأداة الخاصة بالروابط في الدوت-نت ( عبارة عن Label كـرابط )،
هنا نستنتج أنه يمكن إضافة LinkLabel إلى RichTextBox كـ ( Control ) :-
كالمثال التالي ( نفترض أن لديك RichTextBox في Form1 وقمت بوضع الكود التالي داخل Form1_Load ) :
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lb As New LinkLabel
lb.Text = "Hello"
RichTextBox1.Controls.Add(lb)
End Sub
كما تلاحظ استطعنا إضافة رابط داخل الـ RichTextBox ، ولكن قد تلاحظ بأن الحدث RichTextBox1_LinkClicked ( الحدث الخاص بتنفيذ شيء ما عند الضغط على الروابط ) ، بأنه لايعمل !!
لحل مثل هذه الإشكالية، فسأستخدم مفهوم ( وراثة الكائنات Inheritance )، سأجعل الحدث يتم تنفيذه عن طريق LinkLabel وليس عن طريق الـ RichTextBox ( سأورث الكائن LinkLabel إلى كائن جديد يكون به خصائص إضافية ).
نقوم بإنشاء كلاس كالتالي :
PHP كود :
Class RichTextBoxLinkItem
Inherits LinkLabel
Private _LinkOrUrl As String
Public Property LinkOrURL As String
Get
Return _LinkOrUrl
End Get
Set(value As String)
_LinkOrUrl = value
End Set
End Property
Private Sub RichTextBoxLinkItem_Click(sender As Object, e As EventArgs) Handles Me.Click
Process.Start("chrome", _LinkOrUrl)
End Sub
End Class
أسميته RichTextBoxLinkItem يرث الكائن LinkLable ، وعند الضغط عليه يقوم بفتح الرابط (المخزن في المتغير LinkOrURL ) عن طريق متصفح chrome :-
لاحظ بإمكانك تعديل السطر :
PHP كود :
Process.Start("chrome", _LinkOrUrl)
إلى
PHP كود :
Process.Start(_LinkOrUrl)
إذا كنت تريد فتح الرابط بالمتصفح الإفتراضي داخل النظام .
_______________________________________________________________________________________________________________________________
الآن نقوم بتعديل الـ Form1_Load ليصبح حسب التالي :-
PHP كود :
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim lb As New RichTextBoxLinkItem
lb.Text = "Hello"
lb.LinkOrURL = "http://vb4arb.com"
RichTextBox1.Controls.Add(lb)
End Sub
لاحظ أصبح المتغير RichTextBoxLinkItem بدل من LinkLabel في السطر الأول،
الآن لديك ميزة وهي إضافة ( رابط + نص مختلف عن الرابط )، لتتمكن من إضافة روابط مثل "إضغط_هنا" مثلًا ( أعتقد أن هذا من ضمن ما تبحث عنه
)
المثال كامل بالمرفقات ، وأعتذر عن الإطالة لأن التعليمات البرمجية بلا شرح لا تساوي شيء .
وشكرًا !