-
نکات، ایده ها و ترفندهای کوچک برنامه نویسی در vb.net
نکات این تاپیک با اجازه از کاربر sinpin از تاپیک نکات، ایده ها و ترفندهای کوچک برنامه نویسی در #C کپی شده و پس از تغییر زبان از سی شارپ به وی بی دات نت در این تاپیک نوشته شده است با درخواست ایشان تمام این نمونه کدها دارای لینکی به منبع اصلی انها در تالار سی شارپ است و من سعی کردم کدهای تا حد امکان بدون خطا تبدیل کنم اگر به هر نحوی خطایی در این کدها است لطفا با پیام خصوصی ان را به من متذکر شوید از نوشتن خطا ها در این تاپیک یا درخواستهای دیگر خودداری کنید نکاتی را که کاربر sinpin در تاپیک خودشان درج کردند را نیز من هم درج می کنم لطفا این نکات را رعایت فرمایید
باز هم از دوستانی که این نکات را در تالار سی شارپ قرار دادند تشکر می کنم نام کاربری این دوستان به ترتیب تبدیل کدsinpin
az_farzaneh-Masoud_TB-r.kiani- bermooda-razavi_university-saeid.yavary-danial82-pd_ze62-hassan razavi-shahali- dr_csharp-
کدها به مرور اضافه خواهند شد من تا حالا بیش از 80 پست را تبدیل کردم اگر از دوستان کسی می خواهد در این کار به من کمک کند پیام خصوصی برای من بفرستد
چند نکته قبل از فعالیت در این تاپیک:
امکان ادامه دار بودن حیات چنین تاپیکهایی مستلزم رعایت دقیق نظم و استاندارد توسط تمامی دوستان است که در غیراینصورت و با بیراهه رفتن، همواره شاهد قفل شدن تاپیکهایی از این دست بوده ایم. لذا از تمامی دوستان استدعا دارم با رعایت نکات زیر در نظم این تاپیک سهیم باشند :
0- سینتکس وی بی دات نت است
قابل توجه دوستانی که از سایر تالارها قصد فعالیت دارند : سینتکس پیشفرض ارسال کد در این تاپیک صرفا وی بی دات نت است.
1- چکیده نویسی
نکات و ترفندها رو بصورت کاملا خلاصه، مفید و ماژولار (تمرکز هر پست تنها روی یک نکته باشد) پست نمایید و از درج هرگونه نکته ی طولانی خودداری و چنانچه نکته ی قابل توجه ای سراغ دارید که نیاز به کدنویسی و توضیحات طولانی دارد؛ تنها به یک اشاره کوچک بسنده و فایل سورس و یا توضیحات کامل را ضمیمه فرمایید.
2- هر نکته ای مفید است
بدلیل تنوع کاربران تالار و گستردگی زبان و فریمورک؛ لزومی ندارد نکته ای که ارسال میکنید موضوعی غامض و یا بسیار پیچیده و چشمگیر باشد؛ در واقع هر نکته ای که به شکل صحیح ارسال شودمیتواند مفید باشد.
3- درج عنوان پست
عنوان مناسب و مختصری برای مطلب ارسالی خود پیدا کرده و آن را در قسمت عنوان پست بنویسید. (تغییر عنوان پستها در "حالت پیشرفته" قابل دسترسی میباشد)
عنوان پست را دقیق و قطعی انتخاب نمایید؛ برای مثال عنوان : "چند نکته مهم در سی شارپ" نامناسب است و یا بجای عنوان : "چند فیلم آموزشی مفید" بهتر است بنویسید : "معرفی لینک دانلود چند فیلم آموزشی ساده در مورد LINQ"
4- درج رفرنس اصلی
چنانچه نکته ارسالی را از منبعی برداشت میکنید لطفا لینک اصلی آن را نیز در انتهای مطلب درج فرمایید. (با اینکار دوستان میتوانند با مراجعه با اون لینک از جزییات نکته ارسالی نیز مطلع گردند.)
5- عدم ارسال نکات تکراری و ادامه دار
از ارسال نکات مشابه و تکراری و همچنین نکات "ادامه دار" خودداری فرمایید. هر نکته را فقط در یک پست معرفی و اعلام کنید.
6- ارسال نکات تست شده
تنها نکات و مطالبی رو ارسال کنید که خود شما تست کرده و از صحت عملکرد اونها مطلع هستید. از ارسال هرگونه شبه کد و سایر مطالبی که قابل استناد نیستند جدا خودداری فرمایید.
7- عدم نمایش امضا و تصاویر بزرگ
با توجه به ماهیت شلوغ این قبیل تاپیکها و جهت نظم بهتر؛ ترجیحا :
* پستهای خود را بدون درج امضا ارسال نمایید.
* جهت کند نشدن لودینگ صفحات از قرار دادن لینک تصاویر بزرگ خودداری و یا اینکه آنها را بصورت ضمیمه شده قرار دهید.
8- ماهیت تاپیک
این تاپیک محل مناسبی برای این موارد نیست :
آموزش برنامه نویسی، سئوال و جواب کردن، سعی در اثبات برتری یک روش خاص، بحث و ارسال توضیحات اضافی، خورده گیری از مطالب ارسالی دیگران، ارسال مطالب غیرفنی و نامرتبط، انتشار ادعاهای کاذب، تشکرهای بیمورد و ...
لذا چنانچه راجع به هر یک از نکات سئوال و یا مشکلی پیش آمد، لطفا موضوع رو از طریق ارسال پیام خصوصی به نویسنده مطلب و یا طرح در یک تاپیک مستقل، حل و فصل کنید.
9- نظم و استاندارد تاپیک
لطفا در نظم تاپیک کوشا باشید و چنانچه با پستی مواجه شدید که با توجه به بند شماره 9 به شکلی نامناسب ارسال شده بود؛ به جای تکرار اشتباه نویسنده قبلی، صرفا آن را به مدیران تالار گزارش کنید، قطعا آنان ما را در حفظ مسیر اصلی تاپیک یاری خواهند کرد.
_______________________________
از اینکه به حقوق خود و دیگران احترام میگذارید از شما متشکرم
موفق باشید.
-
اندکس
اصول اولیه OOP و دات نت فریمورک :
کار کردن با انواع داده ها :
کار با کنترلها و کامپوننتها :
آرایه ها و کالکشنها :
دیتابیس و بانکهای اطلاعاتی :
فایلها، استریمها (I/O) :
گرافیک : GDI, GDI+, DirectX, OpenGL
مالتی مدیا :
نکات سیستمی :
توزیع و Setup سازی:
اینترنت، شبکه، ... :
مباحث مختص دات نت فریمورک 3.0 و 3.5 :
میانبرها و ترفندهای IDE :
-
حاشیه دار کردن کنترل TextBox با یک رنگ دلخواه
منبع:https://barnamenevis.org/showpo...67&postcount=5
در کلاس TextBox خود (و یا سایر کنترلهای دلخواه : کامبوباکس، لیست باکس و ...) بنویسید :
کد:
Private Shared WM_NCPAINT As Integer = &H85
Private Shared WM_ERASEBKGND As Integer = &H14
Private Shared WM_PAINT As Integer = &HF
<DllImport("user32.dll")> _
Shared Function GetDCEx(ByVal hwnd As IntPtr, ByVal hrgnclip As IntPtr, ByVal fdwOptions As UInt32) As IntPtr
End Function
<DllImport("user32.dll")> _
Shared Function ReleaseDC(ByVal hwnd As IntPtr, ByVal hDC As IntPtr) As Integer
End Function
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
MyBase.WndProc(m)
If m.Msg = WM_NCPAINT Or m.Msg = WM_ERASEBKGND Or m.Msg = WM_PAINT Then
Dim hdc As IntPtr = GetDCEx(m.HWnd, CType(1, IntPtr), 1 Or &H20)
If (hdc <> IntPtr.Zero) Then
Dim graphics As Graphics = graphics.FromHdc(hdc)
Dim borderColor As Color = Color.Blue
Dim rectangle As Rectangle = New Rectangle(0, 0, Me.Width, Me.Height)
ControlPaint.DrawBorder(graphics, rectangle, borderColor, ButtonBorderStyle.Solid)
m.Result = CType(1, IntPtr)
ReleaseDC(m.HWnd, hdc)
End If
End If
End Sub
توجه داشته باشید که انجام اینکار صرفا بوسیله override کردن رویداد paint و رسم یک مستطیل امکانپذیر نیست.
-
محو شدن تدریجی یک فرم با تغییر دادن خاصیت Opacity
منبع:https://barnamenevis.org/showpo...68&postcount=6
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Me.Opacity = 1
Dim i As Integer
For i = 0 To 100
Me.Opacity -= 0.01
Application.DoEvents()
Next
End Sub
-
انتقال آیتمهای یک آرایه از اعداد به یک لیست باکس
منبع:https://barnamenevis.org/showpo...69&postcount=7
Dim numbers As Integer() = {12, 23, 34, 45, 56, 67}
Dim oNumbers(numbers.Length) As Object
numbers.CopyTo(oNumbers, 0)
listBox1.Items.AddRange(oNumbers)
-
پیاده سازی حالت ساده ی الگوی سینگلتون در یک کلاس
https://barnamenevis.org/showpo...71&postcount=8
Class SingletonClass
NotInheritable
' Static members are lazily initialized.
' .NET guarantees thread safety for static initialization
Private Shared ReadOnly instance As SingletonClass = New SingletonClass()
' Note: constructor is private.
Private Sub New()
End Sub
Public Shared Function GetInstance() As SingletonClass
Return instance
End Function
End Class
-
رسم یک چندضلعی توپر روی یک فرم
منبع:https://barnamenevis.org/showpo...72&postcount=9
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
' Create pen.
Dim blackPen As Pen = New Pen(Color.Black, 3)
' Create points that define polygon.
Dim point1 As Point = New Point(30, 50)
Dim point2 As Point = New Point(100, 25)
Dim point3 As Point = New Point(200, 5)
Dim point4 As Point = New Point(250, 50)
Dim point5 As Point = New Point(270, 100)
Dim point6 As Point = New Point(250, 250)
Dim curvePoints As Point() = {point1, point2, point3, point4, point5, point6}
' Draw polygon to screen.
g.DrawPolygon(blackPen, curvePoints)
' Fill polygon
g.FillPolygon(Brushes.Red, curvePoints)
End Sub
-
کشیدن نقاشی با توابع ساده گرافیکی و ذخیره خروجی در یک فایل
منبع:https://barnamenevis.org/showpo...1&postcount=10
Public Sub Draw2File()
Dim bmp As Bitmap = New Bitmap(500, 400)
Dim gr As Graphics = Graphics.FromImage(bmp)
Dim rect As Rectangle = New Rectangle(20, 20, 450, 350)
gr.DrawRectangle(Pens.Red, rect)
gr.FillRectangle(Brushes.Pink, rect)
gr.DrawString("Salam", New Font("Arial", 10), Brushes.Red, 50, 50)
gr.DrawArc(Pens.Red, 30, 30, 60, 60, 0, 180)
gr.DrawEllipse(New Pen(Color.Yellow, 3), New Rectangle(200, 100, 200, 200))
bmp.Save("C:\1.bmp")
bmp.Dispose()
gr.Dispose()
End Sub
-
بدست آوردن لیست نمونه های SQL Server موجود در شبکه
منبع:https://barnamenevis.org/showpo...0&postcount=11
Imports System.Data.Sql
Private Sub ShowSQLServerInstances()
Dim instance As SqlDataSourceEnumerator = SqlDataSourceEnumerator.Instance
Dim table As System.Data.DataTable = instance.GetDataSources()
dataGridView1.DataSource = (table)
End Sub
-
افزودن و حذف کردن یک برنامه به StartUp ویندوز از طریق کلیدهای رجیستری
منبع:https://barnamenevis.org/showpo...5&postcount=12
Private Sub AddStartUpKey(ByVal _name As String, ByVal _path As String)
Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Microso ft\Windows\CurrentVersion\Run", True)
key.SetValue(_name, _path)
End Sub
Private Sub RemoveStartUpKey(ByVal _name As String)
Dim key As RegistryKey = Registry.LocalMachine.OpenSubKey("Software\Microso ft\Windows\CurrentVersion\Run", True)
key.DeleteValue(_name, False)
End Sub
-
Hibernate و Standby کردن کامپیوتر
منبع:https://barnamenevis.org/showpo...5&postcount=13
' Hibernate
Application.SetSuspendState(PowerState.Hibernate, True, True)
'// Standby
Application.SetSuspendState(PowerState.Suspend, True, True)
-
قفل کردن کامپیوتر از طریق کدنویسی
منبع:https://barnamenevis.org/showpo...8&postcount=14
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'// Lock workstation
LockWorkStation()
End Sub
<DllImport("user32.dll")> _
Public Shared Sub LockWorkStation()
End Sub
-
شفاف کردن پشت زمینه ی کنترلها
منبع:https://barnamenevis.org/showpo...0&postcount=15
ایجاد شفافیت کامل پشت زمینه ی یک کنترل :
کد:
control.BackColor = Color.Transparent
تعیین میزان شفافیت یک کنترل:
کد:
control.BackColor = Color.FromArgb(trancparency, control.BackColor)
در کد بالا مقدار trancparency از 0 (برای کاملا شفاف) تا 255 (کاملا کدر) قابل تغییر است.
مثال : یک Label با شفافیت 50%
کد:
label1.BackColor = Color.FromArgb(127, label1.BackColor)
-
Shutdown، Restart و Logoff کردن یک کامپیوتر بوسیله کد
منبع:https://barnamenevis.org/showpo...2&postcount=16
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'// Log Off
ExitWindowsEx(0, 0)
'// Reboot
ExitWindowsEx(2, 0)
'// Shutdown
ExitWindowsEx(1, 0)
'/ Force LogOff
ExitWindowsEx(4, 0)
End Sub
<DllImport("user32.dll")> _
Public Shared Function ExitWindowsEx(ByVal uFlags As Integer, ByVal dwReason As Integer) As Integer
End Function
و یا:
'// Log Off
System.Diagnostics.Process.Start("ShutDown", "/l")
'// Reboot
System.Diagnostics.Process.Start("ShutDown", "/r")
'// Shutdown
System.Diagnostics.Process.Start("ShutDown", "/s")
-
بستن یک پروسه در حال اجرا
منبع:https://barnamenevis.org/showpo...4&postcount=17
Imports System.Diagnostics
For Each p As Process In Process.GetProcesses()
If p.ProcessName.ToLower() = "notepad" Then
p.Kill()
End If
Next
و یا :
کد:
System.Diagnostics.Process.Start("TaskKill", "/f /im Notepad.exe /t")
-
Ping کردن یک کامپیوتر تحت شبکه
منبع:https://barnamenevis.org/showpo...6&postcount=18
Imports System.Net.NetworkInformation
Dim remoteMachineNameOrIP As String = "127.0.0.1"
Dim timeOut As Integer = 5
Dim ping As Ping = New Ping()
'// Pinging remote maching
Dim reply As PingReply = ping.Send(remoteMachineNameOrIP, timeOut)
'// Displaying the result
Dim sb As StringBuilder = New StringBuilder()
sb.Append("Address:" + reply.Address.ToString())
sb.Append("\nStatus:" + reply.Status.ToString())
sb.Append("\nRoundtripTime:" + reply.RoundtripTime.ToString())
MessageBox.Show(sb.ToString(), "Ping Result: " + remoteMachineNameOrIP)
-
بدست آوردن مسیر دایرکتوری جاری برنامه
منبع:https://barnamenevis.org/showpo...8&postcount=19
کد:
MessageBox.Show(AppDomain.CurrentDomain.BaseDirect ory)
یا :
کد:
MessageBox.Show(System.IO.Directory.GetCurrentDire ctory())
یا :
کد:
MessageBox.Show(Application.StartupPath)
یا:
کد:
MessageBox.Show(System.IO.Path.GetDirectoryName(Ap plication.ExecutablePath))
کاربر bad_boy_2007 یاد اوری کردند با این کد هم می شود
My.Application.Info.DirectoryPath
-
برگرداندن تعدادی مشخص و اتفاقی از رکوردها بوسیله کوئری
منبع:https://barnamenevis.org/showpo...4&postcount=20
مثال : برگرداندن 10 رکورد اخری که به جدول اضافه شده از جدول myTable
کد:
SELECT TOP 10 id,title
FROM myTable
ORDER BY NEWID()
-
پاک کردن خاصیت Text گروهی از کنترلهای مشخص
منبع:https://barnamenevis.org/showpo...2&postcount=21
کاربرد : زمانی که نمیتوان از یک الگوریتم بازگشتی استفاده کرد؛ برای مثال کنترلها در Container های متفاوتی هستند و تنها تعداد خاصی از آنها باید Clear شوند.
کد:
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
ClearControls(TextBox1, textBox2, comboBox1)
End Sub
Public Sub ClearControls(ByVal ctls As Control())
For Each ct As Control In ctls
ct.Text = ""
Next
End Sub
-
عوض کردن نشانگر ماوس (cursor) روی یک کنترل
منبع:https://barnamenevis.org/showpo...4&postcount=22
استفاده از کرسرهای پیشفرض محیط :
کد:
Button1.Cursor = Cursors.Hand
لود کردن یک کرسر سفارشی از فایل :
کد:
button1.Cursor = new Cursor("C:\WINDOWS\Cursors\hibeam.cur")
-
پاک کردن خاصیت Text کنترلهای موجود در یک Container بصورت بازگشتی
منبع:https://barnamenevis.org/showpo...5&postcount=23
کد:
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
ClearControls(Me.controls)
End Sub
Public Sub ClearControls(ByVal _parent As Control)
_parent.Text = ""
If _parent.HasChildren = True Then
For Each ct As Control In _parent.Controls
ClearControls(ct)
Next
End If
End Sub
-
بدست آوردن آخرین Identity اضافه شده به جدول
منبع:https://barnamenevis.org/showpo...0&postcount=24
کد:
INSERT INTO Sales.Customer ([TerritoryID],[CustomerType]) VALUES (8,'S')
GO
SELECT SCOPE_IDENTITY()
-
ایجاد کردن یک Property
منبع:https://barnamenevis.org/showpo...2&postcount=25
برای اینکه خیلی سریع یک Property ایجاد کنی کافیه که کلمه prop رو تایپ کنین و دوباره Tab بزنین. بعد نوع داده ای , نام متغییر private و در نهایت نام Propety مورد نظرتون. با تایپ کردن 5 کلمه Property تون آمادست.
-
ایجاد فرمهایی با اشکال غیرمستطیلی
منبع:https://barnamenevis.org/showpo...4&postcount=31
ایجاد یک فرم دایره ای شکل :
کد:
Me.Height = 350
Me.Width = 350
'//Creating circle path
Dim path As System.Drawing.Drawing2D.GraphicsPath = New System.Drawing.Drawing2D.GraphicsPath()
path.AddEllipse(0, 0, 300, 300)
'//Creating the region from the circle path
Me.Region = New Region(path)
Me.Show()
-
قطع کردن اتصال اینترنت دایل آپ از طریق دستورات خط فرمان
منبع:https://barnamenevis.org/showpo...4&postcount=32
کد:
System.Diagnostics.Process.Start("rasdial", "/disconnect")
-
تغییر زبان پیشفرض ویندوز بصورت داینامیک در برنامه
منبع:https://barnamenevis.org/showpo...8&postcount=33
کد:
Public Shared Sub SetLanguage2English()
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(New CultureInfo("en-US"))
End Sub
Public Shared Sub SetLanguage2Farsi()
InputLanguage.CurrentInputLanguage = InputLanguage.FromCulture(New CultureInfo("fa-IR"))
End Sub
-
ایجاد طیف رنگ (Gradient) بعنوان پشت زمینه ی کنترلها
منبع:https://barnamenevis.org/showpo...3&postcount=34
کد:
Imports System.Drawing.Drawing2D
Imports System.Drawing
Public Sub PaintGradient(ByVal _control As Control, ByVal _direction As LinearGradientMode, ByVal _gradientColorStart As Color, ByVal _gradientColorEnd As Color)
Dim gradBrush As LinearGradientBrush
gradBrush = New LinearGradientBrush(New Rectangle(0, 0, _control.Width, _control.Height), _gradientColorStart, _gradientColorEnd, _direction)
Dim bmp As Bitmap = New Bitmap(_control.Width, _control.Height)
Dim g As Graphics = Graphics.FromImage(bmp)
g.FillRectangle(gradBrush, New Rectangle(0, 0, _control.Width, _control.Height))
_control.BackgroundImage = bmp
_control.BackgroundImageLayout = ImageLayout.Stretch
End Sub
حال این متود رو در رخداد Paint کنترلهای دلخواه (فرم، دکمه، پنل ...) بنویسید :
کد:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
PaintGradient(Me, LinearGradientMode.Vertical, Color.RoyalBlue, Color.DarkBlue)
End Sub
خصوصا ظاهر بهتر و مناسبتری برای دکمه های شما ایجاد میکند.
-
چگونه از یک فرم تنها یک عدد بتواند باز شود ؟ (توسط Generic Singleton)
منبع:https://barnamenevis.org/showpo...3&postcount=35
با استفاده از پیاده سازی ژنریک الگوی سینگلتون :
کد:
public class SingletonProvider(Of T As new)
Sub New()
End Sub
Public Shared ReadOnly Property Instance() As T
Get
Return SingletonCreator.Instance
End Get
End Property
Class SingletonCreator
Shared Sub New()
End Sub
Private Shared _instance As T
Public Shared ReadOnly Property Instance() As T
Get
Dim frm As System.Windows.Forms.Form = CType(CType(Instance, Object), Windows.Forms.Form)
If Instance Is Nothing Then
Instance = New T
End If
Return Instance
End Get
End Property
End Class
End Class
و برای استفاده :
کد:
Dim boat As Form = SingletonProvider(Of Form).Instance
boat.Show()
-
طریقه تغییر دادن خاصیت FontStyle یک کنترل در زمان اجرا
منبع:https://barnamenevis.org/showpo...5&postcount=36
کد:
TextBox1.Font = New Font(TextBox1.Font, FontStyle.Bold Or FontStyle.Italic Or FontStyle.Underline)
-
بدست آوردن مسیر فولدرهای ویژه
https://barnamenevis.org/showpo...0&postcount=38
برای مثال :
کد:
Dim path As String = Environment.GetFolderPath(Environment.SpecialFolde r.ProgramFiles)
سایر مسیرها قابل دستیابی با این روش :
کد:
Desktop, MyDocuments, System, ...
-
خواندن و نوشتن فایل به صورت unicode با استفاده از richTextBox
منبع:https://barnamenevis.org/showpo...2&postcount=39
کد:
'// read text file
richTextBox1.LoadFile("C:\Log.txt", RichTextBoxStreamType.UnicodePlainText)
'// save text file
richTextBox1.SaveFile("C:\Log.txt", RichTextBoxStreamType.UnicodePlainText)
-
جابجا کردن فرم با کلیک بر روی هر قسمت از آن - با استفاده از توابع API
منبع:https://barnamenevis.org/showpo...5&postcount=40
کد:
<DllImport("user32.dll")> _
Shared Function ReleaseCapture() As Integer
End Function
Declare Auto Function SendMessageA Lib "user32.dll" (ByVal hwnd As Integer, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Object) As Integer
Private Const WM_NCLBUTTONDOWN As Integer = 161
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
ReleaseCapture()
SendMessageA(Me.Handle.ToInt32(), WM_NCLBUTTONDOWN, 2, 0)
End Sub
-
یافتن شماره سریال و مدل تمامی هارددیسکهای موجود در یک سیستم
منبع:https://barnamenevis.org/showpo...2&postcount=41
ابتدا System.Management رو به References پروژه بیفزایید و سپس :
کد:
Imports System.Management
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
MessageBox.Show(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
MessageBox.Show(wmi_HD("SerialNumber").ToString())
End If
Next
End Sub
-
اجرا کردن یک فایل اجرایی با کدنویسی
منبع:https://barnamenevis.org/showpo...7&postcount=43
کد:
System.Diagnostics.Process.Start("mspaint.exe")
چنانچه فایل اجرایی نیاز به آرگومان خط فرمان داشته باشد :
کد:
System.Diagnostics.Process.Start("mspaint.exe", "c:\Test.bmp")
مثال بالا تصویر Test را در msPaint باز میکند.
-
ایجاد متن و رشته های چند سطری
منبع:https://barnamenevis.org/showpo...1&postcount=44
کد:
Dim myString1 As String = "This is the first line of my string." + vbCrLf _
+ "This is the second line of my string." + vbCrLf + _
"This is the third line of the string." + vbCrLf
-
روشهای Initialize کردن انواع آرایه ها
منبع:https://barnamenevis.org/showpo...7&postcount=45
'// Single-dimensional array (numbers).
Dim n1 As Integer() = {2, 4, 6, 8}
Dim n2() As Integer = {2, 4, 6, 8}
'// Single-dimensional array (strings).
Dim s1() As String = New String() {"John", "Paul", "Mary"}
Dim s3 As String() = {"John", "Paul", "Mary"}
'// Multidimensional array.
Dim n4 As Integer(,) = {{1, 2}, {3, 4}, {5, 6}}
Dim n6(,) As Integer = {{1, 2}, {3, 4}, {5, 6}}
' // Jagged array.
Dim n7 As Integer()() = {New Integer() {2, 4, 6}, New Integer() {1, 3, 5, 7, 9}}
Dim n9()() As Integer = {New Integer() {2, 4, 6}, New Integer() {1, 3, 5, 7, 9}}
-
ایجاد تصاویر Bitmap در زمان اجرا
منبع:https://barnamenevis.org/showpo...2&postcount=46
کد:
Private Function CreateBitmap() As Image
Dim flag As Bitmap = New System.Drawing.Bitmap(10, 10)
Dim x, y As Integer
For x = 0 To flag.Height
For y = 0 To flag.Width
flag.SetPixel(x, y, Color.White)
Next
Next
For x = 0 To flag.Height
flag.SetPixel(x, x, Color.Red)
Next
Return flag
End Function
-
فراخونی یک رویداد از داخل رویداد دیگر
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MessageBox.Show(sender.Text)
End Sub
و
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim arg As New System.EventArgs
Form1_Load(Button1, arg)
End Sub
-
نقل قول:
نوشته شده توسط
ghafoori
منبع:
https://barnamenevis.org/showpo...66&postcount=4
این کد را در کلاس مربوط به کنترل TextBox خود بنویسید :
کد:
Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Return Then
SendKeys.Send("{TAB}")
End If
Return MyBase.ProcessDialogKey(keyData)
End Function
و در مورد استفاده در کنترلهای استاندارد :
کد:
Private Sub TextBox1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyCode = Keys.Return Then
SendKeys.Send("{TAB}")
End If
End Sub
من هم از این کد تو فرمهام استفاده میکنم ولی یک مشکل دارم اونم اینه که اگه بخوام Shift + Tab رو بزنم چطور باید کار کنم ؟؟؟
نقل قول:
نوشته شده توسط
raravaice
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
MessageBox.Show(sender.Text)
End Sub
و
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim arg As New System.EventArgs
Form1_Load(Button1, arg)
End Sub
بجای این کد میتونید از کد زیر هم استفاده کنید که مختصر تره :
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Form1_Load(New Object, New System.EventArgs)
End Sub
-
فرستادن کلیدهای ترکیبی با SendKeys
کد
'shift tab
SendKeys.Send("+{TAB}")
'ctrl tab
SendKeys.Send("^{TAB}")
'alt tab
SendKeys.Send("%{TAB}")
لطفا اشکالها و پیشنهاد ها را با پیام خصوصی ارسال کنید تا نظم تاپیک بهم نخورد
-
فرستادن کلیدهای ترکیبی با SendKeys (به صورت کامل)
با سلام
سال نو رو به شما دوستان عزیز تبریک عرض میکنم
با اجازه از آقای غقوری
این پست در واقع کامل کننده ی پست قبلی (پست آقای غفوری) هست
------------------------------------------------------------------------------
در صورتی که بخواهید بدون فشردن یک کلید از کیبورد کاری کنید که یک کلید خاص فشرده بشه میتونید از این دستور به صورت زیر استفاده میکنید :
((دقت کنید که هیچ تفاوتی بین فشردن یک کلید رو کیبورد و دستور sendkeys وجود نداره))
SendKeys String[,wait]
String : رشته ای که در واقع همون نویسه هایی هست که باید به عنوان کلید ارسال بشن
Wait : پارامتری منطقی است. اگر روی False تنظیم بشه (پیش فرض) ، روال اجرا کننده دستور Sendkeys بلافاصله بعد از ارسال نویسه ها مجددا کنترل برنامه رو در دست میگیره و به کار خودش ادامه میده. اما اگه رو True تنظیم بشه سیستم تا پردازش کامل نویسه ها ، کنترل رو به روال اجرا کننده ی دستور Sendkeys باز پس نمیده
توجه کنید که برای ارسال نویسه های خاص (~ , { , } , % , ( , ) , - , + , ^) باید اونا رو داخل {} قرار بدیم
به عنوال مثال :
SendKyes "+ {+} 4 {*} 6
کلیدهای ویژه در دستور Sendkeys :
- کلید TAB : معادل {TAB}
- کلید UP ARROW : معادل {UP}
- کلید F1 : معادل {F1}
- کلید F2 : معادل {F2}
- کلید F3 : معادل {F3}
- کلید F4 : معادل {F4}
- کلید F5 : معادل {F5}
- کلید F6 : معادل {F6}
- کلید F7 : معادل {F7}
- کلید F8 : معادل {F8}
- کلید F9 : معادل {F9}
- کلید F10 : معادل {F10}
- کلید F11 : معادل {F11}
- کلید F12 : معادل {F12}
- کلید F13 : معادل {F13}
- کلید F14 : معادل {F14}
- کلید F15 : معادل {F15}
- کلید F16 : معادل {F16}
- کلید BACKSPACE: معادل {BACKSPACE} یا {BS} یا {BKSP}
- کلید BREAK : معادل {BREAK}
- کلید CAPS LOCK : معادل {CAPSLOCK}
- کلید DELETE یا DEL : معادل {DELETE} یا {DEL}
- کلید DOWN ARROW : معادل {DOWN}
- کلید END : معادل {END}
- کلید ENTER : معادل {ENTER} یا {~}
- کلید ESC : معادل {ESC}
- کلید HELP : معادل {HELP}
- کلید HOME : معادل {HOME}
- کلید INS یا INSERT : معادل {INSERT} یا {INS}
- کلید LEFT ARROW : معادل {LEFT}
- کلید NUM LOCK : معادل {NUMLOCK}
- کلید PAGE DOWN : معادل {PGDN}
- کلید PAGE UP : معادل {PGUP}
- کلید PRINT SCREEN : معادل {PRTSC}
- کلید RIGHT ARROW : معادل {RIGHT}
- کلید SCROLL LOCK : معادل {SCROLLLOCK}
توجه کنید که تنها کلیدی که نمیتونیم اون رو به برنامه ها بفرستیم ، کلید Print Screen هست (شماره ی 34)
برای استفاده از کلید های Alt , Ctrl , Shift همون طور که آقای غفوری گفتند میتونید از معادل های زیر استفاده کنید
- کلید Shift : معادل {+}
- کلید Ctrl : معادل {^}
- کلید Alt : معادل {%}
به عنوان مثال :
Sendkeys "+(ES)"
یعنی فشردن کلید Shift به همراه کلید های E , S
Sendkeys "+ES"
یعنی فشرن کلید Shift به همراه E و پس از رها کردن ، فشردن کلید S است
توجه : اگه میخواین کلیدی رو چندین بار تکرار کنید میتونید از این الگو استفاده کنید :
SendKeys "{key num}"
که در اینجا key کلیدی است که میخواهید به برنامه بفرستید و num تعداد تکرار آن کلید هست
با تشکر
-
If Like و کاربرد آن
If "Barnamenevis" Like "*name*" Then
Console.Write("Ok")
End If
'Result = Ok
If "Barnamenevis" Like "*evis" Then
Console.Write("Ok")
End If
'Result = Ok
If "Barnamenevis" Like "*Barna*" Then
Console.Write("Ok")
else
Console.Write("Err")
End If
'Result = Err
-
پرینت با استفاده از PrintDocument
این کد از کتاب کوروش مقدسی با یکم دخل و تصرف عملیات پرینت رو انجام میده و نیازی هم به افزودن کنترل به فرم نیست و کافیه فقط کد رو کپی کنید :
PublicClass Form1
Inherits Windows.Forms.Form
FriendWithEvents PrintDocument1 AsNew System.Drawing.Printing.PrintDocument
FriendWithEvents TextBox1 AsNew System.Windows.Forms.TextBox
FriendWithEvents Button1 AsNew Windows.Forms.Button
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDocument1.Print()
EndSub
PrivateSub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
Dim pfont AsNew Font("Arial", 20)
e.Graphics.DrawString(TextBox1.Text, pfont, Brushes.AliceBlue, 0, 0)
Dim lmargin, Rmargin, Tmargin, Bmargin AsInteger
With PrintDocument1.DefaultPageSettings.Margins
lmargin = .Left
Rmargin = .Right
Tmargin = .Top
Bmargin = .Bottom
EndWith
Dim printWidth, PrintHeight AsInteger
With PrintDocument1.DefaultPageSettings.PaperSize
printWidth = .Width - lmargin - Rmargin
PrintHeight = .Height - Tmargin - Bmargin
EndWith
Dim r As Rectangle
r = New Rectangle(lmargin, Tmargin, printWidth, PrintHeight)
e.Graphics.DrawRectangle(Pens.Black, r)
EndSub
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
TextBox1.Left = 0
TextBox1.Width = Me.Width
TextBox1.Top = 0
Button1.Top = TextBox1.Top + TextBox1.Height + 10
Button1.Left = 0
Button1.Width = Me.Width
Button1.Text = "پ©یë¢"
Me.Controls.Add(Button1)
Me.Controls.Add(TextBox1)
EndSub
EndClass
-
پرینت فرم
با این کد میتونید یک فرم رو مستقیما به پرینتر بفرستید تو 2008 کار میکنه ولی تو 2005 یا 2003 رو تست نکردم
Public
Class Form1
FriendWithEvents TXTBox1 AsNew TextBox
FriendWithEvents PrintForm1 As Microsoft.VisualBasic.PowerPacks.Printing.PrintFor m
FriendWithEvents BTN AsNew Button
PrivateSub btn_Click(ByVal a AsObject, ByVal b As System.EventArgs) Handles BTN.Click
PrintForm1.Print()
EndSub
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Me.PrintForm1 = New Microsoft.VisualBasic.PowerPacks.Printing.PrintFor m(Me.components)
Me.PrintForm1.DocumentName = "document"
Me.PrintForm1.Form = Me
Me.PrintForm1.PrintAction = System.Drawing.Printing.PrintAction.PrintToPrinter
Me.PrintForm1.PrintFileName = Nothing
'Design New Text Box To Form
TXTBox1.Multiline =
True
TXTBox1.Left = 10
TXTBox1.Top = 10
TXTBox1.Height =
Me.Height - 20
TXTBox1.Width = Me.Width - 20
TXTBox1.Text = "This is Sample Code For Test Print Form " & vbCrLf & "Designer : -_- MHM (Ict_Boy_2005@yahoo.com)" & _
vbCrLf & "Publisher WWW.BarnameNevis.ORG"
Me.Controls.Add(TXTBox1)
'Design new Button to form
Me.Height += 100
BTN.Left = 0
BTN.Width = Me.Width
BTN.Top = TXTBox1.Top + TXTBox1.Height
Me.Controls.Add(BTN)
BTN.Height = 100
BTN.Text = "Do Print"
EndSub
EndClass
-
افزودن کنترل در زمان اجرا
https://barnamenevis.org/showpo...2&postcount=47
مثال: یک تکست باکس به فرم اضافه میکند:
کد:
Dim myText As TextBox = New TextBox()
myText.Location = New Point(25, 25)
Me.Controls.Add(myText)
-
یافتن MAC آدرس کارت شبکه
https://barnamenevis.org/showpo...3&postcount=49
ابتدا System.Management رو به References پروژه بیفزایید و سپس :
کد:
Imports System.Management
Private Sub GetMACAddress()
Dim searcher As ManagementObjectSearcher
Dim qry As String = "select * FROM Win32_NetworkAdapter"
searcher = New ManagementObjectSearcher(qry)
For Each wmi_HD As ManagementObject In searcher.Get()
If Not wmi_HD("MacAddress") Is Nothing Then
MessageBox.Show(wmi_HD("MacAddress").ToString())
End If
Next
End Sub
-
نمایش تصاویر در Windows picture and fax viewer از طریق کدنویسی
https://barnamenevis.org/showpo...0&postcount=50
کد:
' //Open with the 'Windows picture and fax viewer':
System.Diagnostics.Process.Start("C:\Windows\syste m32\rundll32.exe ", _
"C:\Windows\system32\shimgvw.dll,ImageView_Fullscr een " + "filename")
اینهم که آسونه اما شاید واسه دوستانی مفید باشه :
کد:
'//Open with the 'Microsoft Paint':
System.Diagnostics.Process.Start("C:\Windows\syste m32\MSPaint.exe ", " filename")
-
وادار کردن لیست باکس به اسکرول تا یک آیتم مشخص
https://barnamenevis.org/showpo...3&postcount=51
مثال - برای آخرین آیتم :
کد:
'// Set the TopIndex property of the ListBox to ensure the
'// most recently added items are visible.
ListBox1.TopIndex = ListBox1.Items.Count - 1
ListBox1.SelectedIndex = ListBox1.Items.Count - 1
-
جابجا کردن فرم با کلیک بر روی هر قسمت از آن - بدون استفاده از توابع API
https://barnamenevis.org/showpo...5&postcount=52
کد:
Private dragging As Boolean
Private pointClicked As Point
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If (e.Button = MouseButtons.Left) Then
'// Turn drag mode on and store the point clicked.
dragging = True
pointClicked = New Point(e.X, e.Y)
Else
dragging = False
End If
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If dragging Then
Dim pointMoveTo As Point
'// Find the current mouse position in screen coordinates.
pointMoveTo = Me.PointToScreen(New Point(e.X, e.Y))
'// Compensate for the position the control was clicked.
pointMoveTo.Offset(-pointClicked.X, -pointClicked.Y)
'// Move the form.
Me.Location = pointMoveTo
End If
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
dragging = False
End Sub
-
انتقال مقادیر خاصیت Text دو تکست باکس از طریق Drag & Drop
کد:
ابتدا خاصیت allow drop را true کنید
Private Sub TextBox1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TextBox1.MouseDown
TextBox1.SelectAll()
TextBox1.DoDragDrop(TextBox1.Text, DragDropEffects.Copy)
End Sub
Private Sub TextBox2_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragEnter
If (e.Data.GetDataPresent(DataFormats.Text)) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
Private Sub TextBox2_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles TextBox2.DragDrop
TextBox2.Text = CType(e.Data.GetData(DataFormats.Text), String)
End Sub