استفاده از ویژگی AutoComplete در ComboBox

یکی از ویژگی های Net Framework 2. به ComboBox اضافه شده ، ویژگی AutoComplete هستش . این ویژگی این امکان رو برای ما فراهم میکنه که هنگام تایپ کردن مقداری در ComboBox نزدیکترین معادل رو برای ما از لیست پیدا کند و به روشهای مختلفی که در ادامه توضیح داده میشه اون رو به مقدار وارد شده توسط ما اضافه کنه .
مطمئنا بسیاری از شما دوستان با این ویژگی آشنا هستید . من خودم تا قبل از این یه سری کد اضافی مینوشتم تا بتونم این ویژگی رو به ComboBox اضافه کنم و تصادفا متوجه شدم که ای دل غافل آب در کوزه و ما تشنه لبان میگردیم نیشخند می زنیم ، خود ComboBox این ویژگی رو داره و ما بی خبر . واسه همین گفتم شاید بعضی از دوستان هم مثل من از این ویژگی بی خبر باشن ، گفتم یه توضیحی بدم شاید مفید واقع بشه .
خوب بحث رو شروع کنیم .
ComboBox دارای سه Property با نامه های AutoCompleteCustom،AutoCompleteMode و AutoCompleteSource هستش که مربوط به این ویژگی میباشد که به ترتیب یه توضیح مختصری درباره این Property ها میدم .
AutoCompleteCustom: با استفاده از این Property شما میتوانید یک لیست انتخابی ایجاد کنید تا هنگامی که متنی در داخل ComboBox تایپ میشه نزدیکترین معادل رو از این لیست جستجو کنه . البته برای اینکه این لیست به عنوان مرجع قرار بگیره ، شما میبایست مقدار پراپرتی AutoCompleteSource رو برابر با CustomSource قرار بدید .
AutoCompleteMode: این پراپرتی دارای چهار مقدار Suggest ، Append ، SuggestAppend و None میباش که مقدار None مقدار پیش فرض میباشد .
در صورتی که مقدار این پراپرتی برابر با Suggest باشد ، در صورتی که معادلی نزدیک به مقدار تایپ شده در منبع تعیین شده پیدا شود ، لیستی در پائین ComboBox باز شده و معادلها در آن لیست نمایش میشود و شما میتوانید به دلخواه مقدار موردنظر خود را انتخاب کنید.
در صورتی که مقدار این پراپرتی برابر با Append باشد، نزدیکترین معادل به متن تایپ شده به ادامه متنی که شما تایپ کرده اید اضافه میشه .
در صورتی که مقدار این پراپرتی برابر با SuggestAppend باشد ، نزدکیترین معادل به متن تایپ شده به ادامه متنی که شما تایپ کرده اید اضافه شده و لیستی در زیر ComboBox باز میشود و سایر معادلها را در آن نمایش میدهد .
نکته: در صورتی که مقدار این پراپرتی برابر با SuggestAppend باشد و مقدار پراپرتی AutoCompleteSource برابر با ListItems باشد چند رفتار مختلف بصورت زیر بوجود میاد :
1. در صورتی که لیست خالی باشد ، فشار دادن کلیدهای Delete و Backspace هیچ کاری انجام نمیدهند .
2. در صورتی که Backspace در کمتر از یک ثانیه فشار داده شود ، گزینه قبل انتخاب میشود ، و یا درصورتی که لیست خالی باشد ، هیچ مقداری انتخاب نمیشود .
3. درصورتی که Backspace در بیشتر از یک ثانیه فشار داده شود ، اولین گزینه انتخاب میشود .
4. در صورتی که کلید Delete فشار داده شود ، اولین مقدار انتخاب میشود .

AutoCompleteSource: این پراپرتی دارای مقادیر زیر میباشد که درباره هر کدوم یه توضیحی میدم
AllSystemSources: تمام معادلهای موجود در FileSystem و URL ها را به عنوان منبع معادلگیری قرار میدهد.
AllUrl: معادلهای موجود در HistoryList و RecentlyUsedList را به عنوان منبع قرار میدهد .
CustomSource: مقدارهای وارد شده در AutoCompleteStringCollection(مقدارهائی که در پراپرتی AutoCompleteCustom وارد میکنیم) را به عنوان منبع معادل گیری قرار میدهد .
FileSystem:این یکی توضیح نمیخوادنیشخند می زنیم
FileSystemDirectories: تنها نام شاخه ها را به عنوان منبع قرار میدهد .
HistoryList: های موجود در History را به عنوان منبع قرار میدهد .
ListItems: مقدارهای ComboBox (مقدارهائی که در پراپرتی Items میتوان اضافه کرد) را به عنوان منبع قرار میدهد .
None: مقدار پیش فرض این پراپرتی که ویژگی AutoComplete را غیرفعال میکند .
RecentlyUsedList:آخرین URL های بازدید شده را به عنوان منبع قرار میدهد .

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

بدست آوردن سایز فایل

Public Shared Function FileSize(ByVal path As String) As String
Dim myFile As FileInfo
Dim mySize As Single

Try
myFile = New FileInfo(path)

If Not myFile.Exists Then
mySize = 0
Else
mySize = myFile.Length
End If

Select Case mySize
Case 0 To 1023
Return mySize & " bytes"
Case 1024 To 1048575
Return Format(mySize / 1024, "###0.00") & " kB"
Case 1048576 To 1043741824
Return Format(mySize / 1024 ^ 2, "###0.00") & " mB"
Case Is > 1043741824
Return Format(mySize / 1024 ^ 3, "###0.00") & " gB"
End Select

Return "0 bytes"

Catch ex As Exception
Return "0 bytes"
End Try
End Function

ساخت یک کنترل در زمان اجرا

ساخت یک کنترل در زمان اجرا
گاهی از اوقات در برنامه احتیاج هست که یک کنترل ( برای مثال یک Button یا یک Image ) را در هنگام اجرا بوجود آوربد . این کار در vb6 با استفاده از توابع API صورت می گرفت ولی در VB.NET این کار را به راحتی آب خوردن می توان درون برنامه انجام داد
ساخت یک کنترل در زمان اجرا
گاهی از اوقات در برنامه احتیاج هست که یک کنترل ( برای مثال یک Button یا یک Image ) را در هنگام اجرا بوجود آوربد . این کار در vb6 با استفاده از توابع API صورت می گرفت ولی در VB.NET این کار را به راحتی آب خوردن می توان درون برنامه انجام داد.
در .NET کافیست که یه نمونه از کنترل مورد نظر را در حافظه تعریف کنید و بعد از تنطیم خصوصیات با استفاده از متد Controls.Add() آن را روی فرم ظاهر کنید.
برای مثال یک نمونه از Button اینگونه ساخته می شود:


کد:



Dim btn As New Button() 'Declare a New Instance of an Button
With btn 'Set Control Properties
.Text = "Created at Run time"
.Width = 150
.Height = 20
.Location = New Point(100, 200)
End With
Me.Controls.Add(btn) 'Add the Control to Form


تا اینجا دکمه ساخته شده و روی فرم قرار گرفته است ، ولی چگونه می توان برای رویدادهای این دکمه نیز برنامه نوشت؟
برای این منظور ابتدا باید یک روال برای رویداد مورد نظر و با همان پارامترهایی که برای یک دکمه معمولی بکار می رود نوشت ، برای مثال رویداد کلیک یک دکمه :


کد:



Sub onclick(ByVal sender As Object, ByVal e As EventArgs)
'Insert Event Code Here
End Sub


و سپس این رویداد را به روال مورد نظر نسبت می دهیم به صورت زیر :
AddHandler رویداد مربوط به کنترل, AddressOf نام روال نوشته شده برای رویداد
برای مثال:


کد:



AddHandler btn.Click, AddressOf onclick 'Set the Control Event With Its Sub

با استفاده از دستور RemoveHandler می توان ارتباط میان رویداد و کنترل را از میان برداشت. برای مثال:


کد:



RemoveHandler btn.Click, AddressOf onclick


با دستور Me.Controls.Remove() نیز می توانید یک کنترل را در زمان اجرا از فرم حذف کنید.
در مثال زیر ابتدا دکمه ای را در حافظه تعریف کرده و سپس به کنترل های روی فرم اضافه می کند ، با یک روال نیز در رویداد کلیک می گوئیم که کادر پیام با مضمون کلیک شدن روی دکمه ظاهر گردد و در پایان نیز دکمه مورد نظر را حذف می کنیم:


کد:




Dim btn As New Button()
Overloads Sub onclick(ByVal sender As Object, ByVal e As EventArgs)
MsgBox("You Click :" & CType(sender, Button).Text)
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Handles MyBase.Load
With btn 'Set Control Properties
.Text = "Created at Run time"
.Width = 170
.Height = 20
.Location = New Point(100, 200)
End With

'Set the Control Event With Its Sub
AddHandler btn.Click, AddressOf onclick
'Add the Control to Form
Me.Controls.Add(btn)
End Sub

'Button1 Created in Design View
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
RemoveHandler btn.Click, AddressOf onclick
Me.Controls.Remove(btn)
End Sub