منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
ادراج ارتباط تشعبي في RichTextBox - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : ادراج ارتباط تشعبي في RichTextBox (/showthread.php?tid=26041)



ادراج ارتباط تشعبي في RichTextBox - معاذ العامري - 09-08-18

السلام عليكم اخواني استاذتي الكرام 
ارجو منكم المساعده في هذا السؤال الذي هو موضح من عنوانه ادراج ارتباط تشعبي في richtextBox مثل برنامج الدفتر او الورد خطرت ببالي هذه الفكره عندما كنت اعبث ببرنامجي قمت بنسخ ملف فيديو من احدا المجلدات ثم قمت بتشغيل برنامجي وقمت بالتحديد على اداه RichTextBox ثم قمت بلصق هذا الملف  فوجت بانه قام بلصق ملف الفيديو كا ارتباط تشعبي مثل الورد 
ان محتاج جدا لخبراتكم في هذا الكود ارجو ان تكونو كما عهدناكم وشكرا


RE: ادراج ارتباط تشعبي في RichTextBox - elgokr - 09-08-18

اخى معاذ العامري

بخصوص الاداء RichTextBox
فهو عبارة ان واجهة برنامج WordPad الموجود باى جهاز كمبيوتر

حيث ان هذا البرنامج وهو الاشبح لواجهة Microsoft Office Word
لذلك التعامل مع الاداء فى النسخ واللصق سيكون مفعل تلقائي كما لو انك تستخدم البرنامج

تحياتى لك
وتمنياتى لك التوفيق



RE: ادراج ارتباط تشعبي في RichTextBox - Finish - 09-08-18

إن كان القصد حدث الضغط على الارتباط التشعبي فهو الحدث LinkClicked للأداة RichTextBox
وتجد الرابط في e.LinkText داخل الحدث
PHP كود :
Private Sub RichTextBox1_LinkClicked(sender As ObjectAs LinkClickedEventArgsHandles RichTextBox1.LinkClicked
    Process
.Start(e.LinkText)
End Sub 
RichTextBox.LinkClicked Event - System.Windows.Forms



RE: ادراج ارتباط تشعبي في RichTextBox - معاذ العامري - 09-08-18

شاكرا جدا تعاونكما معي استاذي elgokr و  finish 
شكرا جزيلاً لكما


RE: ادراج ارتباط تشعبي في RichTextBox - elgokr - 09-08-18

(09-08-18, 06:57 PM)معاذ العامري كتب : شاكرا جدا تعاونكما معي استاذي elgokr و  finish 
شكرا جزيلاً لكما

الشكر لله


تحياتى لك
وتمنياتى لك التوفيق



RE: ادراج ارتباط تشعبي في RichTextBox - Dev Saeed - 09-08-18

وعليكم السلام أخ معاذ

كما فهمت من سؤالك هو أنك تريد آلية إضافة روابط إلى الـ RichTextBox عن طريق الكود.

كما تلاحظ أن أداة RichTextBox في الدوت-نت  تمتلك خاصية Controls  ( لحسن الحظ تمت وراثتها وعمل تكامل لها مع RichTextBox Smile  ) .

كما تلاحظ أداة LinkLabel هي الأداة الخاصة بالروابط في الدوت-نت  ( عبارة عن Label كـرابط )،

هنا نستنتج أنه يمكن إضافة LinkLabel إلى RichTextBox  كـ ( Control ) :-



كالمثال التالي  ( نفترض أن لديك RichTextBox في  Form1  وقمت بوضع الكود التالي داخل Form1_Load ) :

PHP كود :
Private Sub Form1_Load(sender As ObjectAs EventArgsHandles MyBase.Load
        Dim lb 
As New LinkLabel

        lb
.Text "Hello"

 
       RichTextBox1.Controls.Add(lb)
 
   End Sub 



 كما تلاحظ استطعنا إضافة رابط داخل الـ RichTextBox ، ولكن قد تلاحظ بأن الحدث RichTextBox1_LinkClicked  ( الحدث الخاص بتنفيذ شيء ما عند الضغط على الروابط ) ، بأنه لايعمل !! Undecided


لحل مثل هذه الإشكالية، فسأستخدم مفهوم ( وراثة الكائنات 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 ObjectAs EventArgsHandles 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 ObjectAs EventArgsHandles MyBase.Load
        Dim lb 
As New RichTextBoxLinkItem

        lb
.Text "Hello"
 
       lb.LinkOrURL "http://vb4arb.com"

 
       RichTextBox1.Controls.Add(lb)
 
   End Sub 

لاحظ أصبح المتغير RichTextBoxLinkItem بدل من LinkLabel   في السطر الأول،

الآن لديك ميزة وهي إضافة ( رابط + نص مختلف عن الرابط )،  لتتمكن من إضافة روابط مثل  "إضغط_هنا" مثلًا     ( أعتقد أن هذا من ضمن ما تبحث عنه Smile )


المثال كامل بالمرفقات ، وأعتذر عن الإطالة لأن التعليمات البرمجية بلا شرح لا تساوي شيء .


وشكرًا !