PDA

View Full Version : آموزش: كدهاي كاربردي VB.net



tolid123456789
دوشنبه 07 اسفند 1391, 13:14 عصر
سلام دوستان عزيز

در اين تاپيك قصد دارم كدهاي كاربردي در خصوص VB.net رو براتون بزارم

اميدوارم مفيد واقع بشه


لطفا همكاري كنيد

tolid123456789
دوشنبه 07 اسفند 1391, 13:15 عصر
شماره سریال و مدل CPU و هارد در VB.net

ابتدا بايد به قسمت References
system.management رو حتما اضافه كنيد
آدرس Dll مربوط به اين مطلب C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Syst em.Management.dll است .فرمي ايجاد مي كنيم كه اشياء زير رو داشته باشه
سه عدد تكست باكس به نام هاي
HDD_Model_txt
HDD_Serial_txt
CPU_Serial_txt
در اين مرحله كد هاي زير رو اضافه مي كينم

Imports System.Management
Public Class Form1
Private Sub GetHDDSerialNumber()
Dim searcher As ManagementObjectSearcher
Dim query1 As String = "SELECT * FROM Win32_DiskDrive"
Dim query2 As String = "SELECT * FROM Win32_PhysicalMedia"
searcher = New ManagementObjectSearcher(query1)
For Each wmi_HD As ManagementObject In searcher.Get()
If Not wmi_HD("Model") Is Nothing Then
HDD_Model_txt.Text = wmi_HD("Model").ToString()
End If
Next
searcher = New ManagementObjectSearcher(query2)
For Each wmi_HD As ManagementObject In searcher.Get()
If Not wmi_HD("SerialNumber") Is Nothing Then
HDD_Serial_txt.Text = wmi_HD("SerialNumber").ToString()
End If
Next
End Sub
Public Shared Function GetCPUId() As String
Dim cpuInfo As String = String.Empty
Dim mgmt As ManagementClass = New ManagementClass("Win32_Processor")
Dim objCol As ManagementObjectCollection = mgmt.GetInstances()
For Each obj As ManagementObject In objCol
If cpuInfo = String.Empty Then
cpuInfo = obj.Properties("ProcessorId").Value.ToString()
End If
Next
Return cpuInfo
End Function

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
CPU_Serial_txt.Text = GetCPUId()
GetHDDSerialNumber()
End Sub
End Class

tolid123456789
دوشنبه 07 اسفند 1391, 13:23 عصر
جستجو در ListBox در VB.net

(Dim i As Integer = ListBox1.FindString(TextBox1.Text
ListBox1.SelectedIndex = i
If TextBox1.Text = "" Then
ListBox1.SelectedIndex = -1
End If

tolid123456789
دوشنبه 07 اسفند 1391, 13:33 عصر
اتصال به SQL از طریق VB.NET

Imports System.Data
Imports System.Data.SqlClient
Public Class Form1
Dim con as new sqlconnection("datasource=.; initial catalog=database_Name; integrated security=true")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class

tolid123456789
دوشنبه 07 اسفند 1391, 13:36 عصر
در برخی موارد لازم است شما از روال مورد نظر خودتان قبل از اتمام تمام کدها خارج شوید و اجازه ندهید کدهای بعدی اجرا شوند برای این کار از کد زیر استفاده می کنیم.


Exit Sub

tolid123456789
دوشنبه 07 اسفند 1391, 13:36 عصر
برای خروج از برنامه در VB.net
Application.Exit()

tolid123456789
دوشنبه 07 اسفند 1391, 13:37 عصر
بدست آوردن طول رشته داخل TextBox در VB.net

MsgBox(TextBax1.text.Length)

tolid123456789
دوشنبه 07 اسفند 1391, 13:42 عصر
شمارش تعداد سطرهای Datagrid در VB.net
DGV.rowcount()-1

tolid123456789
دوشنبه 07 اسفند 1391, 13:43 عصر
بستن فرم با کلیک بر روی Escape در VB.net
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.LoadMe.KeyPreview = True
End Sub

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
If e.KeyCode.ToString = "Escape" Then
Me.KeyPreview = False
Me.close()
End If
End Sub

tolid123456789
دوشنبه 07 اسفند 1391, 13:46 عصر
بدست آوردن مسیر برنامه در VB.net
MsgBox(Application.ExecutablePath)

tolid123456789
دوشنبه 07 اسفند 1391, 13:47 عصر
جلوگیری از بسته شدن فرم در VB.net

در رویداد FormClosing کد زیر را بنویسید

e.cancel=True

tolid123456789
دوشنبه 07 اسفند 1391, 13:48 عصر
استفاده از کد داخل یک Button در Button دیگر در VB.net

Button1_Click(sender,e)

tolid123456789
دوشنبه 07 اسفند 1391, 13:49 عصر
جلوگیری از نوشتن متن در ComboBox توسط کاربر در VB.net


پس از ایجاد شی کامبو به قسمت تنظیمات آن می رویم و تغییرات زیر را اعمال می کنیم:
DropDownStyle=DropDownList

tolid123456789
دوشنبه 07 اسفند 1391, 13:50 عصر
جلوگیری از اجرای مجدد برنامه در VB.net


Project/Properties/Make Single Instance application=true

tolid123456789
دوشنبه 07 اسفند 1391, 13:51 عصر
انتخاب آخرین رکورد در Datagrid در VB.net

DGV1.Row(DGV1.Rowcount-1).select=true

tolid123456789
دوشنبه 07 اسفند 1391, 13:52 عصر
قطع اتصال به اینترنت در VB.net



shell("rasdial/disconnect")

tolid123456789
دوشنبه 07 اسفند 1391, 13:54 عصر
اعتبار سنجی تکست باکس برای ورود فقط عدد در رویداد key Pres

IF NOT char.isnumber(e.keychar) and e.keychar <> convert.tochar(keys.back) thene.handle=true
msgbox("لطفا عدد وارد کنید")
End IF

tolid123456789
دوشنبه 07 اسفند 1391, 13:55 عصر
تشخیص ارتباط کاربر به اینترنت در VB.net

if my.computer.network.isavalable then
Msgbox ("connect")
Else
Msgbox ("NO connect")
End if

tolid123456789
دوشنبه 07 اسفند 1391, 13:57 عصر
بدست آوردن نام کامپیوتر در VB.net



TextBox1.text=system.environment.machinename.tostr ing

tolid123456789
دوشنبه 07 اسفند 1391, 13:59 عصر
برای اتصال Link Lable به اینترنت یا فایل داخل کامپیوتر
اتصال به سایت(اینترنت)


System.Diagnostics.Process.start("http:www.google.com") (http://www.google.com/)
اتصال به فایل (کامپیوتر)


System.Diagnostics.Process.start("Winword.exe","c:\mytext.doc")

tolid123456789
دوشنبه 07 اسفند 1391, 14:01 عصر
توابع LEFT و Right در VB.net
دو کاراکتر سمت چپ از متن داخل تکست باکس 1 را نگه می دارد


Microsoft.VisualBasic.Left(TextBox1.Text,2)
دو کاراکتر سمت راست از متن داخل تکست باکس 1 را نگه می دارد

Microsoft.VisualBasic.Right(TextBox1.Text,2)

tolid123456789
دوشنبه 07 اسفند 1391, 14:02 عصر
تشخیص روشن یا خاموش بودن Caps Lock



If My.Computer.Keyboard.CapsLock = True Then
MsgBox("Caps Lock is true")
Else
MsgBox("Caps Lock is False")

End If

tolid123456789
دوشنبه 07 اسفند 1391, 14:04 عصر
تغییر زبان سیستم در VB.net

Dim Persian_Lang As new Globalization.Cultureinfo ("fa-IR")
inputlanguage.currentinputlanguage=inputlanguage.f romculture(Persian_Lang)

tolid123456789
دوشنبه 07 اسفند 1391, 14:05 عصر
برای ایجاد فرم های مادر و فرزند در VB.net
ابتدا فرم اصلی را انتخاب کرده (Mainfrm)و در قسمت تنظیمات گزینه IsMDIContainer را True می کنیمفرمی که قرار است داخل فرم اصلی باز شود (Frm2)را از طریق فرم اصلی با کد زیر فراخوانی می کنیم:

Frm2.mdiparent=Me

Frm2.Show()

tolid123456789
دوشنبه 07 اسفند 1391, 14:07 عصر
اجرای نرم افزار کاربردی از داخل VB.net
برای باز کردن ماشین حساب


System.Diagnostics.Process.Start("Calc")
برای باز کردن اکسل


System.Diagnostics.Process.Start("Excel.exe")

tolid123456789
دوشنبه 07 اسفند 1391, 14:08 عصر
حرکت بین اشیاء با کمک ENTER
در یک فرم دو تکست باکس داریم اگر بخواهیم زمانی که فوکوس روی تکست باکس اولی است با زدن اینتر به تکست باکس دوم برویم باید در رویداد Key Press تکست اول کد زیر را بنویسیم:



If ASC(e.Keychar)=13 Then Textbox2.Focus

Hossis
دوشنبه 07 اسفند 1391, 17:48 عصر
توابع LEFT و Right در VB.net
دو کاراکتر سمت چپ از متن داخل تکست باکس 1 را نگه می دارد

Microsoft.VisualBasic.Left(TextBox1.Text,2)

دو کاراکتر سمت راست از متن داخل تکست باکس 1 را نگه می دارد
Microsoft.VisualBasic.Right(TextBox1.Text,2)

این جوری هم میشه

strings.right
strings.left

y.saied
دوشنبه 07 اسفند 1391, 20:36 عصر
سلام
دوست عزیز، من امتحان کردم خطا داد
میشه یه مثال هم بذارین
ممنون



شماره سریال و مدل CPU و هارد در VB.net

Imports System.Management
Public Class Form1
Private Sub GetHDDSerialNumber()
Dim searcher As ManagementObjectSearcher
Dim query1 As String = "SELECT * FROM Win32_DiskDrive"
Dim query2 As String = "SELECT * FROM Win32_PhysicalMedia"
searcher = New ManagementObjectSearcher(query1)
For Each wmi_HD As ManagementObject In searcher.Get()
If Not wmi_HD("Model") Is Nothing Then
TextBox1.Text = wmi_HD("Model").ToString()
End If
Next
searcher = New ManagementObjectSearcher(query2)
For Each wmi_HD As ManagementObject In searcher.Get()
If Not wmi_HD("SerialNumber") Is Nothing Then
TextBox2.Text = wmi_HD("SerialNumber").ToString()
End If
Next
End Sub

----------

Public Shared Function GetCPUId() As String
Dim cpuInfo As String = String.Empty
Dim mgmt As ManagementClass = New ManagementClass("Win32_Processor")
Dim objCol As ManagementObjectCollection = mgmt.GetInstances()
For Each obj As ManagementObject In objCol
If cpuInfo = String.Empty Then
cpuInfo = obj.Properties("ProcessorId").Value.ToString()
End If
Next
Return cpuInfo
End Function

-----------

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GetHDDSerialNumber()
TextBox3.Text = GetCPUId()
End Sub
End Class

tolid123456789
سه شنبه 08 اسفند 1391, 09:33 صبح
سلام
دوست عزیز، من امتحان کردم خطا داد
میشه یه مثال هم بذارین
ممنون

سلام
ممنون از دقت نظرتون من مطلب فوق رو با تمامي جزئيات مي نويسم
كد شماره سريال هارد و CPU اصلاح شد.
كد اشتباه نبود ولي اولا بايد System.management رو به قسمت رفرنس ها اضافه كنيد
ثانيا من اين كد رو در پروژه اي استفاده كرده بودم كه بايد اعداد موجود در سريال هارد و CPU رو بر مي گردوندم
در كد جديد نوشته شده سريال هارد و cpu بر مي گرده
روش ارائه شده و تصحيح شده رو مرحله به مرحله اجرا كنيد. همين الان تست كردم جواب داد (پست 2)
اگر لازم مي دونيد برنامه رو اينجا قرار بدم تا مشاهده كنيد

اگر سئوالي بود در خدمتيم

tolid123456789
سه شنبه 08 اسفند 1391, 11:37 صبح
ذخيره داده هاي داخل ديتا گريد در فايل txt
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim numCols As Integer = DataGridView1.ColumnCount
Dim numRows As Integer = DataGridView1.RowCount - 1
Dim strDestinationFile As String = "c:\\output.txt"
Dim tw As TextWriter = New StreamWriter(strDestinationFile)

'writing the header
For count As Integer = 0 To numCols - 1
tw.Write(DataGridView1.Columns(count).HeaderText)
If (count <> numCols - 1) Then
tw.Write(", ")
End If
Next
tw.WriteLine()

For count As Integer = 0 To numRows - 1
For count2 As Integer = 0 To numCols - 1
tw.Write(DataGridView1.Rows(count).Cells(count2).V alue)
If (count2 <> numCols) Then
tw.Write(", ")
End If
Next
tw.WriteLine()
Next
tw.Close()
End Sub

y.saied
سه شنبه 08 اسفند 1391, 19:35 عصر
سلام
دوست عزیز میشه یه مثال هم بذارین؟؟
ممنون



سلام
ممنون از دقت نظرتون من مطلب فوق رو با تمامي جزئيات مي نويسم
كد شماره سريال هارد و CPU اصلاح شد.
كد اشتباه نبود ولي اولا بايد System.management رو به قسمت رفرنس ها اضافه كنيد
ثانيا من اين كد رو در پروژه اي استفاده كرده بودم كه بايد اعداد موجود در سريال هارد و CPU رو بر مي گردوندم
در كد جديد نوشته شده سريال هارد و cpu بر مي گرده
روش ارائه شده و تصحيح شده رو مرحله به مرحله اجرا كنيد. همين الان تست كردم جواب داد (پست 2)
اگر لازم مي دونيد برنامه رو اينجا قرار بدم تا مشاهده كنيد

اگر سئوالي بود در خدمتيم

y.saied
سه شنبه 08 اسفند 1391, 19:49 عصر
میشه بفرمایین چرا اینو تو قسمت فرم لود نوشتین؟
GetHDDSerialNumber()

tolid123456789
سه شنبه 08 اسفند 1391, 22:32 عصر
میشه بفرمایین چرا اینو تو قسمت فرم لود نوشتین؟
GetHDDSerialNumber()

سلام دوست عزیز
تکست با کس های مربوط به HDD_Modelو HDD_Serialدرقسمت GetHDDSerialNumber مقدار دهی میشند
کافیه GetHDD رو در رویداد لود فرم بنویسیم اونوقت با لود فرم تکست باکس های مورد نظر پر می شند

اینم نمونه برنامه
100598
-----

tolid123456789
شنبه 12 اسفند 1391, 13:56 عصر
بدست آوردن مشخصات كامپيوتر
نام كامپيوتر
textBox1.text=system.environment.machinename.tostr ing()
تشخيص اتصال به اينترنت

if My.Computer.Network.IsAvailable then
msgbox("connect")
else
msgbox("No connect")
endif

tolid123456789
سه شنبه 15 اسفند 1391, 15:27 عصر
نمايش داده هاي يك جدول در ديتا گريد
ابتدا مانند كد پست شماره 4 همين تاپيك يك كانكشن به sql متصل مي كنيم
سپس با كدهاي زير داده هاي جدول فرضي T1 را در Datagrid1 نمايش مي دهيم
اين كار را در رويداد Load فرم انجام مي دهيم

dim cmd as new sqlcommand
dim da as new sqldataadapter
dim dt as new datatable
cmd.connection=con
cmd.commandtext="select * from T1"
da.selectcommand=cmd
da.fill(dt)
Datagrid1.datasource=dt
con.close()

k_k797
سه شنبه 15 اسفند 1391, 23:34 عصر
اين كد براي استفاده در اولين بار مناسب است
ولي مشكل زماني است كه به جدول مربوط به ديتا ست اين گريد يك ركورد اضافه ميشه. اگه اين كد رو دوباره اجرا كنيم سطري كه قبل از ريفرش روي آن فكوس شده ام ، انتخابش رو به اولين ركورد موجود در گريد انتقال مي دهد.
آيا راهي بغير از ذخيره سطر و ستون اخرين انتخاب در متغير، و ست كردن آن بعد از ريفرش وجود دارد؟
چيزي پيدا نكردم!!!!:ناراحت:

tolid123456789
چهارشنبه 16 اسفند 1391, 12:15 عصر
سلام دوست عزيز
يعني شما مي خواي پس از ايجاد ركورد جديد ديتا گريد با كد بالا اطلاعات آن ركورد را انتخاب كنه ؟؟؟؟؟؟؟؟؟؟؟؟ و به اول ديتا گريد نياد ؟؟؟؟؟؟؟؟؟؟؟؟

swallow.pa
چهارشنبه 16 اسفند 1391, 13:11 عصر
يك سوال
اگه ركوردي توي ديتاگريد باشه مثلا رديف صدم بر اساس اي دي چطور اونو پيدا كنيمو فوكوس روي اون انجام بديم

tolid123456789
چهارشنبه 16 اسفند 1391, 18:13 عصر
سلام
اگر بخواهيم روي ركورد صدم فوكوس كنيم از كد زير استفاده مي كنيم(البته اگه منظورتون همينه؟)
dgv1.Rows(100).Cells(1).Selected = True

swallow.pa
چهارشنبه 30 اسفند 1391, 16:00 عصر
لطفا آموزشی در رابطه با دیتاگرید رو بزارید ممنون

tolid123456789
یک شنبه 20 اردیبهشت 1394, 15:03 عصر
سلام
تابع بدست آوردن اختلاف بین دو تاریخ شمسی

Public Function date_diff_persian(ByVal d1 As String, ByVal d2 As String) As Integer
Dim y, m, d, r As String
Dim g As New Globalization.PersianCalendar
Dim in_date1, in_date2 As Date
If d1.Length <> 10 Or d2.Length <> 10 Then
MsgBox("فرمت تاریخ صحیح نیست", MsgBoxStyle.Information, "")
Return -1000000
End If
Try
y = Microsoft.VisualBasic.Left(d1, 4) 'جدا سازی 4 رقم عدد سال
m = Mid(d1, 6, 2) 'جدا سازی دو رقم عدد ماه
d = Microsoft.VisualBasic.Right(d1, 2) 'جدا سازی 2 رقم عدد روز
'-------------------------------------------------
in_date1 = g.ToDateTime(Val(y), Val(m), Val(d), 0, 0, 0, 0)
'**********************
y = Microsoft.VisualBasic.Left(d2, 4) 'جدا سازی 4 رقم عدد سال
m = Mid(d2, 6, 2) 'جدا سازی دو رقم عدد ماه
d = Microsoft.VisualBasic.Right(d2, 2) 'جدا سازی 2 رقم عدد روز
'-------------------------------------------------
in_date2 = g.ToDateTime(Val(y), Val(m), Val(d), 0, 0, 0, 0)
'***********************
r = DateDiff(DateInterval.Day, in_date1, in_date2)
Catch ex As Exception
MsgBox("بروز خطا هنگام محاسبه تاریخ _ " + ex.ToString)
r = -1000000
End Try
Return r
End Function

mohammads_1347
دوشنبه 04 خرداد 1394, 20:03 عصر
سلام
لطفا میتوانید بفرمایید این تاریخ را 1394/3/3 چطوری می توانیم بصورت ذیل بنویسیم
1394/03/03

gilsoft
سه شنبه 05 خرداد 1394, 07:23 صبح
سلام
لطفا میتوانید بفرمایید این تاریخ را 1394/3/3 چطوری می توانیم بصورت ذیل بنویسیم
1394/03/03

سلام دوست عزیز
Dim YY As UShort
Dim MM, DD As Byte
Dim pDate As String


YY = 1394
MM = 3
DD = 5
pDate = String.Format("{0}/{1:00}/{2:00}", YY, MM, DD)

موفق باشید .....

hadi-110
چهارشنبه 27 خرداد 1394, 20:36 عصر
سلام من یه کد دارم ک برای هر کاراکتر از کلمه یک خط تیره میزاره مثه "حمید حسنی" میشه "---------"!!
ولی مشکل اینجاست ک میخام بعد از اسپیس در کلمه دیگه دش نذاره مثه این"---- ----"
اما نمیتونم میتونین منو راهنمایی کنین؟

pbm_soy
پنج شنبه 28 خرداد 1394, 02:05 صبح
کدتان را اینجا میگذاشتید تا دوستان بهتر بتونند راهنمائی کنند

pbm_soy
پنج شنبه 28 خرداد 1394, 02:16 صبح
سلام من یه کد دارم ک برای هر کاراکتر از کلمه یک خط تیره میزاره مثه "حمید حسنی" میشه "---------"!!
ولی مشکل اینجاست ک میخام بعد از اسپیس در کلمه دیگه دش نذاره مثه این"---- ----"
اما نمیتونم میتونین منو راهنمایی کنین؟

کد موردنظرات میتواند به این شکل باشد
ابتدا کلمات داخل تکست باکس را جدا کردم بعد به اندازه طول هر کلمه دش اضافه کردم به تکست باکس دوم و هر کلمه که تمام شد یک فضای خالی به تکست باکس اضافه کردم


Dim myWords() As String = TextBox1.Text.Split(" ")
For i = 0 To myWords.Length - 1
For j = 0 To myWords(i).Length - 1
TextBox2.Text = TextBox2.Text + "-"
Next
TextBox2.Text = TextBox2.Text + " "
Next