PDA

View Full Version : کامپوننت ها چطوری نوشته میشن



mrstar
جمعه 23 مهر 1389, 22:10 عصر
با سلام خدمت اساتید

کامپوننت ها چطوری نوشته میشن ؟با vb.net
اگه مرجعی هست راهنمایی بفرمایید ؟
چه سطح معلوماتی نیاز داره ؟

ali_najari
شنبه 24 مهر 1389, 10:15 صبح
دوستان منم ميخوام چندتا كامپونت آماده كنم كه توي اون TextBox يا ComboBox وجود داره

ميخوام تمام Property هاي مربوط به Control هايي كه به كامپونت اضافه ميكنم رو كاربر داشته باشه ولي نميدونم چيكار بايد بكنم

كسي ميتوني راهنمايي كنه؟

shahab2025
شنبه 24 مهر 1389, 11:39 صبح
من هم به این موضوع علاقه مندم
اگر کسی مرجعی داره معرفی کنه

با تشکر

alimanam
شنبه 24 مهر 1389, 18:36 عصر
با سلام

دوستان منم ميخوام چندتا كامپونت آماده كنم كه توي اون TextBox يا ComboBox وجود داره
ميخوام تمام Property هاي مربوط به Control هايي كه به كامپونت اضافه ميكنم رو كاربر داشته باشه ولي نميدونم چيكار بايد بكنم | كسي ميتوني راهنمايي كنه؟ سوال شما خودش یه مقاله یا یه آموزش کامل رو می طلبه :اشتباه:

به اختصار :

قبل از هر کاری باید تشخیص بدی که هدف این کامپوننت چیه ؟ ( قراره چکاری رو برای ما انجام بده ) بعد از اینکه هدف مشخص شد باید نوع پروژه رو به تناسب همون هدف ایجاد کنی ( New Project ) که میتونه از نوع Class Library یا Windows Form Control Library باشه .

مثلاً برای اینکه یه TextBox جدید که دارای قابلیتهای بیشتری به نسبت به TextBox خود VS بنویسی باید پروژه رو از نوع Class Library انتخاب کنی . به صورت پیش فرض VS در این نوع پروژه ها این انتظار رو داره که شما می خواین یک رفرنس ( Dynamic Link Library ) بنویسی و یه کلاس به نام Class1 برای نوشتن کدهای توابع و متدها و ..... آماده میکنه . خوب اما ما در این مثال میخوای یه کاره دیگه که همان ایجاد یه Textboxبا قابلیتهای بیشتره بنویسیم . در گام اول باید فضای کار System.Windows.Forms رو به پروژه خودمون اضافه کنیم . در گام بعدی نام کلاس رو به یک نام متناسب با کامپوننت خودمون که یه تکس باکسه تغییر میدیم مثلاً SupetTextbox حالا وارد محیط کد نویسی کامپوننت میشیم .

هدف ما ایجاد یک تکس باکس استاندارد VS + ویژگیهای بیشتر به دلخواه خودمون
پس کلاس رو طبق قانون وراثت , به یک تکس باکس نسبت میدیم :

Public Class SuperTextBox
Inherits System.Windows.Forms.TextBox

End Class

خوب حالا هر ویژگی که لازمه واسه این تکس باکس جدید خودمون می نویسیم . مثلاً اگه بخوایم یه Property جدید واسه این کامپوننت تکس باکس خودمون پیاده سازی کنیم اینجوری میشه :

Public Class SuperTextBox
Inherits System.Windows.Forms.TextBox

Public ReadOnly Property SuperTextLength() As Integer
Get
Return MyBase.Text.Length
End Get
End Property

End Class

کار این Property اینه که تعداد کاراکترهای ورودی در کامپوننت Textbox رو به ما اطلاع میده ( البته این یه نمونه بود و هدف یادگیری اضافه کردن یه Property به کامپوننت ما هستش ) همون طور که میدانیم این ویژگی باید فقط خواندنی باشد چون ذاتش اینجوریه ( ما فقط می خوایم بدونیم تعداد کاراکترهای وارد شده چندتاست و قابل دستکاری توسط کاربر نیست )

خوب حالا پروژه خودمون رو Build میکنیم تا شاهکار خودمون که یه کامپوننه رو ببینیم . وقتی این کار رو انجام دادین VS به ما اطلاع میده که فایل کامپوننت که یه فایل dll هستش ایجاد گردیده . خوب حالا یه پروژه جدید از نوع Windows Application به همین پروژه کامپوننت خودتون اضافه کنین تا نتیجه کار رو تست کنیم . حالا روی در پروژه جدید در فرمی که در اختیارمون هست از Toolbox ویژوال استودیو اون بالا یه کنترل جدید به نام همان کامپوننت ایجاد شده با درگ کردن اون به فرم می بینیم که یه تکس باکس به فرم مااضافه میشه ( چون ما در کد نویسی کامپوننت خودمون اون رو یه فرزند از پدر TextBox معرفی کرده بودیم که همون کد زیر هستش :

Inherits System.Windows.Forms.TextBox

خوب حالا کنترل یا همون کانپوننت خودمون رو انتخاب می کنیم و در ویژگیهای اون به دنبال SuperTextLength که واسش تعریف کردیم میگردیم مشاهده میکنیم که مقدارش 0 هستش و غیر قابل دستکاری ( فقط خواندنی ) . خوب حالا یه لیبل هم به فرم اضافه کنید در ادامه با دبل کردن کامپوننت خودمون کد زیر رو در رویداد TextChanged کامپوننت می نویسیم :

Private Sub SuperTextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SuperTextBox1.TextChanged
Label1.Text = SuperTextBox1.SuperTextLength
End Sub

خوب با Build کردن پروژه اضافه شده ( Windows Application ) کار ما تمومه . با ذخیره کردن کل کارهایی که تا حالا انجام دادیم میتونیم نتیجه رو در پوشه مورد نظر مشاهده کنیم .

اگه بخوایم از چندین کنترل یا چندین راهکار رو در اختیار برنامه نویس قرار بدیم به طور معمول نوع پروژه رو Windosw Forms Control Library انتخاب میکنیم و در محیطی که در اختیار ما میزاره به طراحی کامپوننت خودمون می پردازیم و هر نوع ویژگی ( Property ) یا تابع یا هرچیزی که مورد نظر ماست در محیط کد نویسی کامپوننت خودمون پیاده سازی میکنیم و .....

اگه سوالی در هر زمینه ایی برای ایجاد هر نوع کامپوننتی داشتین در همین جا مطرح کنین تا جایی که برسم و بلدم میتونم راهنمایی کنم .

امیدوارم که مفید واقع شده باشه . در فایل ضمیمه همین تمرین رو میتونین مشاهده کنین . موفق باشید .

mrstar
شنبه 24 مهر 1389, 22:39 عصر
ممنون آیا مرجع فارسی تو این زمینه وجود داره ؟

mrstar
شنبه 24 مهر 1389, 23:27 عصر
اامیدوارم که مفید واقع شده باشه . در فایل ضمیمه همین تمرین رو میتونین مشاهده کنین . موفق باشید . میدوارم که مفید واقع شده باشه . در فایل ضمیمه همین تمرین رو میتونین مشاهده کنین . موفق باشید .

من اون فایل ها رو باز کردم اما نتونستم تو vb.net 2005 بازشون کنم کدوم فایل اصلیه و باید دابل کلیکش کنم

اگه ممکنه راهنمایی کنید چون تو باز کردن پروژه هایی که دانلود میکنم مشکل دارم
ممنون

alimanam
یک شنبه 25 مهر 1389, 10:23 صبح
با سلام


من اون فایل ها رو باز کردم اما نتونستم تو vb.net 2005 بازشون کنم کدوم فایل اصلیه و باید دابل کلیکش کنم
اگه ممکنه راهنمایی کنید چون تو باز کردن پروژه هایی که دانلود میکنم مشکل دارم

نمونه تمرینی که ضمیمه هستش با VS 2008 نوشته شده و با ورژن پایین تر قابل باز شدن نیست . من که گام به گام توضیح دادم اگه شما هم خودتون گام به گام با مقاله پیش برین هم دستتون رون تر میشه هم بهتر یاد میگیرین . ( خودتون یه پروژه جدید بسازین ( از مقاله کمک بگیرین و پیش برین ))


ممنون آیا مرجع فارسی تو این زمینه وجود داره ؟

من ندیدم . میتونین در وب سرچ کنی شاید منابعی به فارسی پیدا بشه . اما اگه زبان بلدی بیخیال منابع فارسی . موفق باشید .

alimanam
یک شنبه 25 مهر 1389, 11:51 صبح
با سلام

برای اینکه مثالی هم از Windows Forms Control Library زده باشم تا دوستان نحوه طراحی این نوع کامپوننت ها رو هم یاد بگیرن یک نمونه دیگه آماده کردم . فایل نمونه ضمیمه هست و کدهای این کامپوننت که یک دانلود کننده فایل از اینترنت هست به شرح زیر است و برای یاد گیری به طرز ساده ایی نوشته شده :

Public Class MyDownloader
Dim wc As System.Net.WebClient
Private _theme As Integer = ThemeNum.Blue
Private _url As String = "http://manam.noads.biz/downloads/ps-27.rar"
Private _saveOn As String = My.Computer.FileSystem.SpecialDirectories.Desktop
Public Enum ThemeNum
Black = 0
Blue = 1
Green = 2
Red = 3
End Enum
Public Property Url() As String
Get
Return _url
End Get
Set(ByVal value As String)
_url = value
End Set
End Property
Public Property SaveIn() As String
Get
Return _saveOn
End Get
Set(ByVal value As String)
_saveOn = value
End Set
End Property
Public Property Theme() As ThemeNum
Get
Return _theme
End Get
Set(ByVal value As ThemeNum)
_theme = value
Select Case _theme
Case Is = 0 ' Black
Me.BackgroundImage = My.Resources.black
Case Is = 1 ' Blue
Me.BackgroundImage = My.Resources.blue
Case Is = 2 ' Green
Me.BackgroundImage = My.Resources.green
Case Is = 3 ' Red
Me.BackgroundImage = My.Resources.red
End Select
End Set
End Property
Private Sub OnDownloadProgressChanged(ByVal sender As Object, ByVal e As System.Net.DownloadProgressChangedEventArgs)

Dim totalSize As Long = e.TotalBytesToReceive
Dim downloadedBytes As Long = e.BytesReceived
Dim percentage As Integer = e.ProgressPercentage
lblFileSize.Text = " حجم فایل : " & e.TotalBytesToReceive & " بایت "
ProgressBar1.Value = percentage

End Sub

Private Sub OnFileDownloadCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.AsyncCompletedEventArgs)

If e.Cancelled Then
btn_download.Enabled = True
ElseIf Not e.Error Is Nothing Then
'Error occured
btn_download.Enabled = True
Else
ProgressBar1.Value = 0
btn_download.Enabled = True : txtLink.Enabled = True
lblFileSize.Text = String.Empty
End If

End Sub
Private Sub MyDownloader_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Me.Height = 75
End Sub
Private Sub btn_download_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs ) Handles btn_download.LinkClicked
wc = New System.Net.WebClient()
AddHandler wc.DownloadProgressChanged, AddressOf OnDownloadProgressChanged
AddHandler wc.DownloadFileCompleted, AddressOf OnFileDownloadCompleted

Dim filename As String = txtLink.Text.Split("/"c)(txtLink.Text.Split("/"c).Length - 1)
wc.DownloadFileAsync(New Uri(txtLink.Text), SaveIn & "\" & filename)
btn_download.Enabled = False : txtLink.Enabled = False
End Sub

Private Sub MyDownloader_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
txtLink.Text = Url
End Sub
End Class

موفق باشید .

DoDoklak
یک شنبه 25 مهر 1389, 11:51 صبح
من قبلا به قول دوستمون یه Super TextBox طراحی کردم که به صورت کامپونینت در اختیار دوستان قرار دادم.حالا جهت آموزش بهتر اینجا یکبار دیگه توضیح میدم.

http://www.lookpictures.net/photos/anonymous_photos/3818-farsidall.png

هم من هم شما مطمئنن با چند کامپونینت فارسی کار کردیم که همه شون تاریخ رو درست تبدیل میکنند ولی من تا حالا با یک کامپونینت فارسی کار نکردم که User friendly یا کاربر پسندی تو کار کردن داشته باشه و از اکثر اونا که استفاده کردم کاربرهای برنامه ام از نحوی وارد کردن تاریخ گله مند بودند بنابراین سعی کردم که یک TextBox که توانایی کار با تاریخ هجری شمسی داشته باشه و خیلی هم بشه باهاش راحت کار کرد روطراحی کنم.
اسم این کامپونینت رو FarsiDate.dll گذاشتم که با VB.NET 2008 نوشته شده است.
تواناییها:
1-با کلید Space تاریخ حال سیستم محاسبه و در داخل Textbox نوشته میشود
2-با کلید Delete تاریخ پاک میشود
3-با کلید Home چهار رقم سال انتخاب میشود
4-با کلید End دو رقم روز انتخاب میشود
5-با کلیدهای Left ,Right مکانمای صفحه کلید حالت انتخاب از سال به ماه و از ماه به روز و از روز به سال و برعکس عوض میشود
6- با کلیدUp اگر روز انتخاب شده باشد 1 روز جلوتر و اگر ماه انتخاب شده باشد 1 ماه جلوتر و اگر سال انتخاب شده باشد 1 سال جلوتر میرود
7- با کلیدDown اگر روز انتخاب شده باشد 1 روز عقب تر و اگر ماه انتخاب شده باشد 1 ماه عقب تر و اگر سال انتخاب شده باشد 1 سال عقب تر میرود
8-با کلید page Up اگر روز انتخاب شده باشد 10 روز جلوتر و اگر ماه انتخاب شده باشد 3 ماه جلوتر و اگر سال انتخاب شده باشد 2 سال جلوتر میرود
9-با کلید page Down اگر روز انتخاب شده باشد 10 روز عقب تر و ماه انتخاب شده باشد 3 ماه عقب تر و اگر سال انتخاب شده باشد 2 سال عقب تر میرود
10-اگر روی Textbox کلیک سمت چپ کنید در هر کجا باشد آن قسمت انتخاب میشود
11-با DoubleClick سال انتخاب میشود
12-میتوانید تاریخ را با صفحه کلید تایپ کنید به این صورت که در هر قسمت از تاریخ باشید مثلا روز ، ماه یا سال تایپ از آنجا شروع میشود به اینصورت که هر عددی فشار میدهید بعد از صحت آن در جای مناسب قرار گرفته و مکانما به طرف عدد بعدی حرکت می کند
13-مقدار تاریخ را میتوانید با تابع GetValue()و یا ThisText بخوایند مثلا MessageBox.Show(FarsiDate1.Getvalue()) یا MessageBox.Show(FarsiDate1.ThisText())
14-مقدار تاریخ را میتوانید با تابع SetValue(strDate) یا ThisText تغییر دهید مثلاFarsiDate1.Setvalue(“1388/05/07”) و یا FarsiDate1.ThisText="1388/05/07"
15-در رویداد KeyDowned میتونید کلید را گرفته و عملیات لازم مثل فوکوس شدن را انجام دهید
16-تابع About هم مشخصات منو داره http://forum.p30world.com/images/New-smile/N_aggressive%20%284%29.gif MessageBox.Show(FarsiDate1.About())

alimanam
یک شنبه 25 مهر 1389, 12:28 عصر
من قبلا به قول دوستمون یه Super TextBox طراحی کردم که به صورت کامپونینت در اختیار دوستان قرار دادم.حالا جهت آموزش بهتر اینجا یکبار دیگه توضیح میدم.

دوست عزیز شما الان آموزش دادین ؟ :متعجب: اگه سورس رو در تاپیکی قرار دادین به دوستان لینک بدین که دوستانی که علاقمند به یاد گیری هستن با دیدن سورس چیزی متوجه بشن اگر هم جواب منفی هست پس کلمه آموزش دیگه چی بود که ذکر کردین ؟ !!!

DoDoklak
دوشنبه 26 مهر 1389, 09:12 صبح
بحث آموزش در جواب به این مسئله بود



قبل از هر کاری باید تشخیص بدی که هدف این کامپوننت چیه ؟ ( قراره چکاری رو برای ما انجام بده )


هدف این بود که علت طراحی یک کامپونینت چیه

در مورد سورس هم قبلا گذاشته بودم البته مربوط به یک سال پیشه.سرچ کنید به احتمال زیاد پیدا میشه

crying sphere
پنج شنبه 29 مهر 1389, 12:26 عصر
با سلام :
من در مورد ساخت یک Textbox سفارشی سوالی داشتم اینکه چجور میشه در خاصیت GotFocus آن رنگ زمینه اش را تغییر بدم؟
(در کل اینکه چطور میشه برای متدهایی مثل کلیک, دابل کلیک, LostFocus و ... آن کدی را تعریف کرد؟)

alimanam
پنج شنبه 29 مهر 1389, 23:17 عصر
با سلام

دوست عزیز اگه مقاله پست 4 رو مطالعه کرده باشی دقیقاً جواب سوالتون رو میگیرین . اینم کدهاش دقیقاً گام به گام با مقاله پست 4 که پیش برین متوجه میشین . م.فق باشید .

Public Class myTextBox
Inherits System.Windows.Forms.TextBox
Private Sub myTextBox_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
' Any code u like here !!!
End Sub
Private Sub myTextBox_Enter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Enter
Me.BackColor = Drawing.Color.White
End Sub
Private Sub myTextBox_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.LostFocus
Me.BackColor = Drawing.Color.Pink
End Sub
End Class

crying sphere
چهارشنبه 05 آبان 1389, 14:18 عصر
سلام

آقا تو سيستم من اين نمياد :
system.windows.forms

يعني از system به بعدش نمياد و به طبع آن هم system.Drawing.Color.Pink نمياد.

چكار كنم؟؟

ali_najari
چهارشنبه 05 آبان 1389, 14:25 عصر
سلام

آقا تو سيستم من اين نمياد :
system.windows.forms

يعني از system به بعدش نمياد و به طبع آن هم system.Drawing.Color.Pink نمياد.

چكار كنم؟؟

دوست عزيز براي اينكه اين مشكل حل بشه فقط كافيه كه نام كلاست رو عوض كني يعني اگر در حال حاضر اسم كلاست اينطوري هست Public Class MyTest كامل كلاست رو پاك كن و مثلا اين رو بنويس Public Class MyTest1 اينطوري مشكل حل ميشه

crying sphere
چهارشنبه 05 آبان 1389, 14:48 عصر
آقا نميشه !!! به جان خودم !!!

اسمشو عوض كردم، پاكش كردم دوباره ساختم بازم نشد :عصبانی++:

حالا چكار كنم؟

ali_najari
چهارشنبه 05 آبان 1389, 15:03 عصر
دوست عزيز نبايد كلاس رو پاك كني فقط بايد متن هاي داخل كلاس رو كاملا پاك كني و اون عملياتي رو كه گفتم انجام بدي

crying sphere
چهارشنبه 05 آبان 1389, 15:18 عصر
دوست عزيز نبايد كلاس رو پاك كني فقط بايد متن هاي داخل كلاس رو كاملا پاك كني و اون عملياتي رو كه گفتم انجام بدي

دوست خوبم من همون اول كه پروژه class library رو ايجاد مي كنم كه كدي تو كلاسش نيست. من چون وقتي اسم كلاسو عوض كردم جواب نداد حذفش كردم. الان كه روي سيستم هاي دانشگاه انجام مي دم بازم همين جوريه.

خيلي شمارو اذيت كردم اگه باز هم نظري داريد دريغ نكنيد.

ali_najari
چهارشنبه 05 آبان 1389, 15:49 عصر
دوست عزيز من با عكس توضيح ميدم شايد منظورم رو بهتر برسونم

crying sphere
چهارشنبه 05 آبان 1389, 16:35 عصر
حل نشد

يه فيلم گرفتم ببين

ali_najari
چهارشنبه 05 آبان 1389, 17:06 عصر
دوست عزيز مشكل شما اينه كه Classlibrary به پروژه اضافه ميكنيد شما بايد Windows UserControl به پروژت اضافه كني و اون عمليات رو انجام بدي
من يه فيلم براتون ميزارم اميدوارم مشكلتون حل بشه

crying sphere
چهارشنبه 05 آبان 1389, 17:12 عصر
احسنت ، درود بر شما ، حل شد :تشویق::تشویق::تشویق:

alimanam
سه شنبه 11 آبان 1389, 11:29 صبح
با سلام

ببخشید که تاپیک رو زنده کردم اما احساس کردم که دوستان یه مقدار دارن لقمه رو سر خودشون هی میچرخونن !!! پاک کردن کد و نمی دونم استفاده کردن از پروژه از نوع Windows Control Library و اینجور چیزا نیاز نیست که !!! هر چیزی رو بهر کاری ایجاد کردن Windows Control Library بحث با Class Library دو چیز متفاوته . برای این موضوع فقط کافیه به این فیلم آموزشی که تهیه کردم نگاه کنین تا متوجه بشین که بدون تمامی این کارهای اضافه و بی مورد میشه یک Class Library رو به یه شی ( کنترل سفارشی ) تبدیل کرد فقط باید قبلش فضای نام System.windows.Forms رو به پروژه خودمون اضافه کنیم . تا بتونیم کلاس رو به شی مورد نظر خودمون تبدیل کنیم . موفق باشید .

http://496657.20upload.net/files/1389/aban1/12886860761.gif

اگه فایل آموزش قابل روئیت نبود از این آدرس (http://496657.20upload.net/files/1389/aban1/12886860761.gif) میشه دانلودش کنین ( فایل Gif ) یا فایل فیلم آموزشی ضمیمه رو دانلود کنین .

آناهیتا_مولایی
سه شنبه 11 آبان 1389, 13:12 عصر
درود :لبخندساده:

از این بهتر نمیشد آموزش داد استاد :لبخند: مرسی خدا بهت عمر با عزت بده :تشویق: :قلب: :لبخند:

nowar1352
چهارشنبه 08 تیر 1390, 12:20 عصر
اين دستور كه ارور ميدهد
Inherits System.Windows.Forms.TextBox

alimanam
چهارشنبه 08 تیر 1390, 19:27 عصر
با سلام


اين دستور كه ارور ميدهد

باید قبلش رفرنس System.Windows.Forms رو به صورت Add Reference به پروژه خودت اضافه کنی .

موفق باشید ./

nowar1352
جمعه 31 تیر 1390, 00:52 صبح
استاد علي آقا من ميام يه ويندوزكلاس لايبرري ميسازم يه تكست باكس و يه باتم بغل هم ميزارم تو صفحه بعدشم ميخوام اين كنترل تركيبي از يه تكست باكس ارث بري كنه ولي اين خط ارور ميده

Inherits System.Windows.Forms.TextBox
Add Refrence iهم كردم ولي بازم ارور داده چكار كنم خيلي ببخشيد كه وقت تو ميگرم لطفآ كمكم كنيد سپاس گذارم

alimanam
جمعه 31 تیر 1390, 10:51 صبح
با سلام


علي آقا من ميام يه ويندوزكلاس لايبرري ميسازم يه تكست باكس و يه باتم بغل هم ميزارم تو صفحه بعدشم ميخوام اين كنترل تركيبي از يه تكست باكس ارث بري كنه ولي اين خط ارور ميده

Inherits System.Windows.Forms.TextBox
Add Refrence iهم كردم ولي بازم ارور داده چكار كنم خيلي ببخشيد كه وقت تو ميگرم لطفآ كمكم كنيد سپاس گذارم

دوست عزیز وقتی شما عملاً از این نوع پروژه (Windows Forms Control Library ) استفاده میکنین دیگه منطقی نیست اون رو یه تکس باکس معرفی کنی برای اینکه کنترل شما رخداد ها و ویژگیهای یک تکس باکس رو داشته باشه باید دستی اون رخدادها و ویژگیها رو کدنویسی کنین .

به این صورت که در کدنویسی کنترل خودتون مثلا میخواین ویژگی TextChanged تکس باکس رو داشته باشین :

Public Class UserControl1
Public Event TextChanged()

Public Property TextValue() As String
Get
Return TextBox1.Text
End Get
Set(ByVal value As String)
TextBox1.Text = value
End Set
End Property


Private Sub TextBox1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
RaiseEvent TextChanged()
End Sub

End Class

و برای استفاده از این ویژگی در برنامه خودتون به راحتی در رخداد زیر قابل دسترسی هستش :

Public Class Form1

Private Sub UserControl11_TextChanged() Handles UserControl11.TextChanged
Me.Text = UserControl11.TextValue
End Sub

End Class

موفق باشید ./