PDA

View Full Version : کد خیلی ساده و کوچک



hhhhaaaa
سه شنبه 16 دی 1393, 22:00 عصر
سلام
فکر کنید یه تکست باکس ساختم که با دکمه اطلاعاتش وارد لیست باکس میشه... حالا می خوام اون اطلاعات لیست باکس همونطوری خط به خط داخل یه تکت تو درایو سیو ش چ دستوری می خواد؟
ممنون

gilsoft
سه شنبه 16 دی 1393, 22:51 عصر
سلام دوست عزیز

برای ذخیره در فایل از کد زیر استفاده کن:

Using SW As New IO.StreamWriter("D:\Items.txt", False, System.Text.UTF8Encoding.UTF8)
For Each itm As String In Me.ListBox1.Items
SW.WriteLine(itm)
Next
End Using


و برای خواندن از فایل و اضافه کردن به ListBox هم از این کد استفاده کن:

Dim Items As String() = IO.File.ReadAllLines("D:\Items.txt")
For Each itm As String In Items
ListBox1.Items.Add(itm)
Next


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

hhhhaaaa
چهارشنبه 17 دی 1393, 13:49 عصر
سلام دوست عزیز

برای ذخیره در فایل از کد زیر استفاده کن:

Using SW As New IO.StreamWriter("D:\Items.txt", False, System.Text.UTF8Encoding.UTF8)
For Each itm As String In Me.ListBox1.Items
SW.WriteLine(itm)
Next
End Using


و برای خواندن از فایل و اضافه کردن به ListBox هم از این کد استفاده کن:

Dim Items As String() = IO.File.ReadAllLines("D:\Items.txt")
For Each itm As String In Items
ListBox1.Items.Add(itm)
Next


موفق باشید ....
خیلی ممنون
من مکس گرفتن کاراکتر رو گذاشتم مثلا 6 تا بگیره... چی کار باید کرد که کمتر از 6 هم قبول نکنه؟؟
ممنون

gilsoft
چهارشنبه 17 دی 1393, 14:54 عصر
خیلی ممنون
من مکس گرفتن کاراکتر رو گذاشتم مثلا 6 تا بگیره... چی کار باید کرد که کمتر از 6 هم قبول نکنه؟؟
ممنون

سلام دوست عزیز

از کد زیر استفاده کن:

Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If TextBox1.Text.Trim.Length < 6 Then
'MessageBox.Show("طول رشته کمتر از 6 کاراکتر می‌باشد !", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Warning)
e.Cancel = True
End If
End Sub


و یا

Private Sub TextBox1_Validated(sender As Object, e As System.EventArgs) Handles TextBox1.Validated
If TextBox1.Text.Trim.Length < 6 Then
TextBox1.Focus()
End If
End Sub


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

hhhhaaaa
چهارشنبه 17 دی 1393, 18:53 عصر
سلام دوست عزیز

از کد زیر استفاده کن:

Private Sub TextBox1_Validating(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles TextBox1.Validating
If TextBox1.Text.Trim.Length < 6 Then
'MessageBox.Show("طول رشته کمتر از 6 کاراکتر می‌باشد !", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Warning)
e.Cancel = True
End If
End Sub


و یا

Private Sub TextBox1_Validated(sender As Object, e As System.EventArgs) Handles TextBox1.Validated
If TextBox1.Text.Trim.Length < 6 Then
TextBox1.Focus()
End If
End Sub


موفق باشید .....
ممنون
به فیلد تکست تول تیپ میشه داد آیا؟ اگه میشه چطوری؟
ممنون

hhhhaaaa
چهارشنبه 17 دی 1393, 19:02 عصر
یه مشکلی پیش اومد اینه که وقتی فیلد 1 که باید 6 رقم باشه پر میکنم دومی باید 10 رقم باشه پر میکنم ثبت میزنم ثبت میشه اما بعد ارور میده هی باید 10 رقم باشه فیلد 2 ...

gilsoft
چهارشنبه 17 دی 1393, 20:38 عصر
یه مشکلی پیش اومد اینه که وقتی فیلد 1 که باید 6 رقم باشه پر میکنم دومی باید 10 رقم باشه پر میکنم ثبت میزنم ثبت میشه اما بعد ارور میده هی باید 10 رقم باشه فیلد 2 ...

سلام دوست عزیز

من فقط یه کد ساده براتون گذاشتم ... بالاخره باید کنترل هاشو خودت بنویسی و تکمیلش کنی .... ( از نمونه کد دومی « TextBox1.Validated » استفاده کنی .. بهتره ... )

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

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

gilsoft
چهارشنبه 17 دی 1393, 20:50 عصر
ممنون
به فیلد تکست تول تیپ میشه داد آیا؟ اگه میشه چطوری؟
ممنون

و اما در مورد Tooltip

کد دوم رو به شکل زیر تغییر بده: ( احتمالا مشکل خطایی رو که ذکر کردی .. حل میشه )

Dim TP As ToolTip

Private Sub TextBox1_Validated(sender As Object, e As System.EventArgs) Handles TextBox1.Validated

If TextBox1.Text.Trim = "" Then

Else
If TextBox1.Text.Trim.Length < 6 Then
TP.SetToolTip(TextBox1, "Error !")
TextBox1.Focus()
Else
TP.SetToolTip(TextBox1, "")
End If
End If

End Sub


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

hhhhaaaa
پنج شنبه 18 دی 1393, 16:43 عصر
و اما در مورد Tooltip

کد دوم رو به شکل زیر تغییر بده: ( احتمالا مشکل خطایی رو که ذکر کردی .. حل میشه )

Dim TP As ToolTip

Private Sub TextBox1_Validated(sender As Object, e As System.EventArgs) Handles TextBox1.Validated

If TextBox1.Text.Trim = "" Then

Else
If TextBox1.Text.Trim.Length < 6 Then
TP.SetToolTip(TextBox1, "Error !")
TextBox1.Focus()
Else
TP.SetToolTip(TextBox1, "")
End If
End If

End Sub


موفق باشید .....
دوستان من می خوام فیلدم فقط عدد بگیره چی کار کنم؟
بعد یه مشکلی هم که دیدم اینه وقتی تکست باکس توش عدد 0003 رو میزنم بعد ادد میکنم تو لیست باکس 000 ها حذف میشه چرا؟؟

gilsoft
پنج شنبه 18 دی 1393, 20:24 عصر
دوستان من می خوام فیلدم فقط عدد بگیره چی کار کنم؟
بعد یه مشکلی هم که دیدم اینه وقتی تکست باکس توش عدد 0003 رو میزنم بعد ادد میکنم تو لیست باکس 000 ها حذف میشه چرا؟؟

سلام مجدد

اول شما بفرما که: مشکلات قبلی حل شد یا نه ؟! :متفکر:

hhhhaaaa
پنج شنبه 18 دی 1393, 22:08 عصر
بله اوکیه... فقط اینو اوکی کنم تمومه...

gilsoft
جمعه 19 دی 1393, 01:21 صبح
دوستان من می خوام فیلدم فقط عدد بگیره چی کار کنم؟
بعد یه مشکلی هم که دیدم اینه وقتی تکست باکس توش عدد 0003 رو میزنم بعد ادد میکنم تو لیست باکس 000 ها حذف میشه چرا؟؟

سلام مجدد

احتمالا از توابعی مانند: ()Val یا ()CInt و با مشابه توابع مذکور استفاده کردی

از تکه کد زیر هم میتونی الهام بگیری :
ListBox1.Items.Add(String.Format("{0:0000}", Val(TextBox1.Text.Trim)))

در غیر اینصورت سورس بزار تا ببینیم مشکل چیه ...

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

hhhhaaaa
جمعه 19 دی 1393, 18:07 عصر
سلام مجدد

احتمالا از توابعی مانند: ()Val یا ()CInt و با مشابه توابع مذکور استفاده کردی

از تکه کد زیر هم میتونی الهام بگیری :
ListBox1.Items.Add(String.Format("{0:0000}", Val(TextBox1.Text.Trim)))

در غیر اینصورت سورس بزار تا ببینیم مشکل چیه ...

موفق باشید .....
انجام دادم اما عمل نکرد...
الان 3 مشکل دارم 1 اینکه 0 اول تکست باکس ها تو لیست باکس ادد نمیشه... 2 اینکه نمیتونم فقط عددی کنم که متن نگیره... 3 هم اینکه چطور فایل exe میشه ساخت تک فایلی؟

hhhhaaaa
جمعه 19 دی 1393, 18:10 عصر
یادم رفت پیوست کنم...

gilsoft
جمعه 19 دی 1393, 23:35 عصر
انجام دادم اما عمل نکرد...
الان 3 مشکل دارم 1 اینکه 0 اول تکست باکس ها تو لیست باکس ادد نمیشه... 2 اینکه نمیتونم فقط عددی کنم که متن نگیره... 3 هم اینکه چطور فایل exe میشه ساخت تک فایلی؟

سلام مجدد

اول این کدها رو از Form حذف کن:

Private Sub Textbox1_KeyPress(ByVal KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And Not KeyAscii = 8 Then KeyAscii = 0
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


ListBox1.Items.Add(String.Format("{0:0000}", Val(TextBox1.Text.Trim) & Val(TextBox2.Text.Trim) & Val(TextBox3.Text.Trim) & Val(TextBox4.Text.Trim) & Val(TextBox5.Text.Trim) & Val(TextBox6.Text.Trim) & Val(TextBox7.Text.Trim) & Val(TextBox8.Text.Trim) & Val(TextBox9.Text.Trim)))


End Sub


بعد این کدها رو به Form اضافه کن:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True


For Each tb As Control In Me.Controls
If TypeOf tb Is TextBox Then
AddHandler tb.KeyPress, AddressOf tb_KeyPress
End If
Next
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Add(String.Format("{0:000000}{1:0000000000}{2:000000}{3:00}{4:0000000 0}{5:00}{6:0000000000000}{7:000000}{8:0000000000}", Val(TextBox1.Text.Trim), Val(TextBox2.Text.Trim), Val(TextBox3.Text.Trim), Val(TextBox4.Text.Trim), Val(TextBox5.Text.Trim), Val(TextBox6.Text.Trim), Val(TextBox7.Text.Trim), Val(TextBox8.Text.Trim), Val(TextBox9.Text.Trim)))
End Sub


Private Sub tb_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs)
Dim uc As Globalization.UnicodeCategory = Char.GetUnicodeCategory(e.KeyChar)
Select Case uc
Case Globalization.UnicodeCategory.DecimalDigitNumber, Globalization.UnicodeCategory.Control
Case Else
e.Handled = True
End Select
End Sub





1 اینکه 0 اول تکست باکس ها تو لیست باکس ادد نمیشه...
سطرهای 13 تا 15 برای add شدن صفرهاست ...


2 اینکه نمیتونم فقط عددی کنم که متن نگیره...
سطرهای 5 تا 9 و سطرهای 18 تا 25 برای فقط عدد گرفتن TextBoxهاست ...


3 هم اینکه چطور فایل exe میشه ساخت تک فایلی؟
بعد ار به اجرا درآوردن برنامه ( یعنی فشردن کلید F5 ) میتونی به فولدر Bin\Debug پروژه‌ات بری و فایل EXE ای که همنام پزوژه است رو کپی برداری ( به همین سادگی )

امیدوارم که مشکل شما برطرف شده باشه .....

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

hhhhaaaa
یک شنبه 28 دی 1393, 17:34 عصر
سلام مجدد

اول این کدها رو از Form حذف کن:

Private Sub Textbox1_KeyPress(ByVal KeyAscii As Integer)
If (KeyAscii < 48 Or KeyAscii > 57) And Not KeyAscii = 8 Then KeyAscii = 0
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click


ListBox1.Items.Add(String.Format("{0:0000}", Val(TextBox1.Text.Trim) & Val(TextBox2.Text.Trim) & Val(TextBox3.Text.Trim) & Val(TextBox4.Text.Trim) & Val(TextBox5.Text.Trim) & Val(TextBox6.Text.Trim) & Val(TextBox7.Text.Trim) & Val(TextBox8.Text.Trim) & Val(TextBox9.Text.Trim)))


End Sub


بعد این کدها رو به Form اضافه کن:

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.KeyPreview = True


For Each tb As Control In Me.Controls
If TypeOf tb Is TextBox Then
AddHandler tb.KeyPress, AddressOf tb_KeyPress
End If
Next
End Sub


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ListBox1.Items.Add(String.Format("{0:000000}{1:0000000000}{2:000000}{3:00}{4:0000000 0}{5:00}{6:0000000000000}{7:000000}{8:0000000000}", Val(TextBox1.Text.Trim), Val(TextBox2.Text.Trim), Val(TextBox3.Text.Trim), Val(TextBox4.Text.Trim), Val(TextBox5.Text.Trim), Val(TextBox6.Text.Trim), Val(TextBox7.Text.Trim), Val(TextBox8.Text.Trim), Val(TextBox9.Text.Trim)))
End Sub


Private Sub tb_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs)
Dim uc As Globalization.UnicodeCategory = Char.GetUnicodeCategory(e.KeyChar)
Select Case uc
Case Globalization.UnicodeCategory.DecimalDigitNumber, Globalization.UnicodeCategory.Control
Case Else
e.Handled = True
End Select
End Sub





سطرهای 13 تا 15 برای add شدن صفرهاست ...


سطرهای 5 تا 9 و سطرهای 18 تا 25 برای فقط عدد گرفتن TextBoxهاست ...


بعد ار به اجرا درآوردن برنامه ( یعنی فشردن کلید F5 ) میتونی به فولدر Bin\Debug پروژه‌ات بری و فایل EXE ای که همنام پزوژه است رو کپی برداری ( به همین سادگی )

امیدوارم که مشکل شما برطرف شده باشه .....

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

الان تا اینجا اوکی هست همه چیز
یه چندتا چیز دیگه می خوام:
1- 2 تا باتن اضافه شه یکی حذف یکی ادیت
تو لیست باکس چیزایی که ادد شده رو بتونه انتخاب کنه و حذف کنه و یکی از باتن ها هم ادیت باشه اونی که انتخاب میکنه ادیت میزنه تو تکست باکس ها بشینه و ادیت کنه و دوباره ثبت کنه...
2- بوقتی تکست باکس 1 رو پر کرد مقلا چطوری تب میزنیم میره تو تکست باکس بعدی با اینتر هم بره... یعنی اینتر میزنه بره تکست باکس بعدی...
3- مثلا دقت کنین مبلغ چک همیشه ثابت نیست که ما یه فیلد 13 رقمی گذاشتیم یارو مثلا وارد میکنه 2000000 دوباره نیاد بشماره 2میلیون 7 رقمه 6 رقم اضافه شه میشه 13 بعد بیاد 0000002000000 6 تا صفر اضافه کنه اولش... وقتی زد 2000000 دو میلیون خودش باقیشو از چپ با صفر پر کنه... تکست باکس هفتم این قابلیت رو داشته باشه + تکست باکس های 1 و 2 و 5 و 9

همینا.... فایلهایی که تا اینجا درست شده هم پیوست کردم
ممنون

gilsoft
یک شنبه 28 دی 1393, 22:45 عصر
الان تا اینجا اوکی هست همه چیز


سلام دوست عزیز

خب خدا رو شکر

پیشنهاد میدم که رو باتن تشکر کردن پستهای قبلی کلیک کن تا برای من و دوستان من هم یه انگیزه‌ای ایجاد بشه ... ممنونم

من و دوستان با کمک هم سعی می‌کنیم مشکل‌های شما رو برطرف کنیم ....

gilsoft
دوشنبه 29 دی 1393, 07:00 صبح
ا3- مثلا دقت کنین مبلغ چک همیشه ثابت نیست که ما یه فیلد 13 رقمی گذاشتیم یارو مثلا وارد میکنه 2000000 دوباره نیاد بشماره 2میلیون 7 رقمه 6 رقم اضافه شه میشه 13 بعد بیاد 0000002000000 6 تا صفر اضافه کنه اولش... وقتی زد 2000000 دو میلیون خودش باقیشو از چپ با صفر پر کنه... تکست باکس هفتم این قابلیت رو داشته باشه + تکست باکس های 1 و 2 و 5 و 9

سلام مجدد

کدی که تو سطر 14 پست 15# گذاشتم این مشکل رو برطرف می‌کرد ... مانند مثال زیر:
Console.WriteLine(String.Format("{0:0000000000000}", 2000000)) '
' یا
'
Dim strNum As String = "2000000"
Console.WriteLine(strNum.PadLeft(13, "0"))
'
' یا
'
Dim Num As Integer = 2000000
Console.WriteLine(CStr(Num).PadLeft(13, "0"))

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

hhhhaaaa
دوشنبه 29 دی 1393, 13:42 عصر
گزینه 1 و 2 رو نمیشه کاریش کرد؟

hhhhaaaa
دوشنبه 29 دی 1393, 16:37 عصر
گزینه 1 و 2 رو نمیشه کاریش کرد؟
همه چیز رو اوکی کردم فقط یه چیز مونده اونم ادیت هستش...

gilsoft
دوشنبه 29 دی 1393, 22:22 عصر
همه چیز رو اوکی کردم فقط یه چیز مونده اونم ادیت هستش...

دوباره سلام

شرمنده ..... یه کم فرصت بدی .... سوال‌های 1 و 2 روهم با کمک دوستان حل می‌کنیم ....

بابت تشکرها هم ممنون .....

hhhhaaaa
سه شنبه 30 دی 1393, 13:32 عصر
فقط کد ادیت می خوام یعنی یه دکمه باشه که میزنم اون گزینه ای که تو لیست باکس انتخاب کردم وارد تکست باکس ها بشه و دوباره ثبت زدم بشینه جای قبلی...

Mani_rf
سه شنبه 30 دی 1393, 14:21 عصر
الان تا اینجا اوکی هست همه چیز
یه چندتا چیز دیگه می خوام:
1- 2 تا باتن اضافه شه یکی حذف یکی ادیت
تو لیست باکس چیزایی که ادد شده رو بتونه انتخاب کنه و حذف کنه و یکی از باتن ها هم ادیت باشه اونی که انتخاب میکنه ادیت میزنه تو تکست باکس ها بشینه و ادیت کنه و دوباره ثبت کنه...
2- بوقتی تکست باکس 1 رو پر کرد مقلا چطوری تب میزنیم میره تو تکست باکس بعدی با اینتر هم بره... یعنی اینتر میزنه بره تکست باکس بعدی...
3- مثلا دقت کنین مبلغ چک همیشه ثابت نیست که ما یه فیلد 13 رقمی گذاشتیم یارو مثلا وارد میکنه 2000000 دوباره نیاد بشماره 2میلیون 7 رقمه 6 رقم اضافه شه میشه 13 بعد بیاد 0000002000000 6 تا صفر اضافه کنه اولش... وقتی زد 2000000 دو میلیون خودش باقیشو از چپ با صفر پر کنه... تکست باکس هفتم این قابلیت رو داشته باشه + تکست باکس های 1 و 2 و 5 و 9

همینا.... فایلهایی که تا اینجا درست شده هم پیوست کردم
ممنون

بر طبق قوانین سایت: درخواست انجام پروژه و طرح چندین پرسش در یک تاپیک ممنوع می باشد؛
بر همین اساس تاپیک شما قفل می گردد.