PDA

View Full Version : مبتدی: هر رقمی داخل تکست نوشته می شود ، به همان تعداد (همزمان) در Grid سطر ایجاد شود



mahdyeh
جمعه 27 شهریور 1388, 13:18 عصر
سلام
من یک text دارم و یک dataGridView که داخل تکست فقط عدد نوشته میشود
و هر رقمی داخل تکست نوشته می شود ، به همان تعداد (همزمان) در Grid سطر ایجاد شود
و از عدد 1 تا آن رقم هر سطر ِ grid شماره گذاری شود
>> تا اینجاش مشکلی ندارم
جز اینکه شرط میگذارم برای اینکه اگر عدد 0 تایپ شد یا عدد نوشته شده پاک شد و تکست
خالی موند تعداد سطر هام رو 1 بکنه و مقادیره آن سطر را خالی قرار دهد که اینجا رو




Private Sub txtD_TextChanged ...
Dim i As Integer
If txtD.Text = "" Or txtD.Text = 0 Then
Grid.RowCount = 1
Grid.Rows(0).Cells(0).Value = ""
Grid.Rows(0).Cells(1).Value = ""
Else
Grid.RowCount = txtD.Text
For i = 0 To Grid.RowCount - 1
Grid.Rows(i).Cells(0).Value = i + 1
Next
End If
End Sub

برای If txtD.Text = "" Or txtD.Text = 0 Then ارور میدهد (زمان اجرا) !!!!!

ممنون

ali.hojjati
جمعه 27 شهریور 1388, 13:46 عصر
برای مدیریت این اخطار می تونی از کد زیر استفاده کنید

Try
کد شما
Catch ex As Exception

End Try

mahdyeh
جمعه 27 شهریور 1388, 15:25 عصر
سلام

مرسی

اینطوری دیگه اون یپغام رو نمیده و وقتی 0 تایپ میشه درست عمل میکنه ولی وقتی عدد نوشته شده پاک میشه یعنی



txtD.Text = ""


هیچی دیگه انجام نمیشه یعنی دستورات زیر اجرا نمیشه :



Grid.RowCount = 1
Grid.Rows(0).Cells(0).Value = ""

mahdyeh
جمعه 27 شهریور 1388, 17:28 عصر
Private Sub txtD_TextChanged ...
Try
Dim i As Integer
If txtD.Text = "" Or txtD.Text = 0 Then
Grid.RowCount = 1
Grid.Rows(0).Cells(0).Value = ""
Grid.Rows(0).Cells(1).Value = ""
Else
Grid.RowCount = txtD.Text
For i = 0 To Grid.RowCount - 1
Grid.Rows(i).Cells(0).Value = i + 1
Next
End If
Catch ex As Exception
End Try
End Sub

چرا ""= If txtD.Text رو اجرا نمیکنه (یعنی اگه مثلا داخل تکست بنویسم 2 >> 2 سطر
در گرید درست میشه حالا اون عدد 2 رو از تکست پاک میکنم باید تعدت سطر در گرید طبق
دستوری که نوشتم 1 باشد و داده های آن سطر پاک شود
Grid.RowCount = 1
Grid.Rows(0).Cells(0).Value = ""
Grid.Rows(0).Cells(1).Value = ""
ولــــــــــــــــی هیچ کدام از اینها
انجام نمیشود چـرا ؟)
برای تکست =خالی و تکست = عدد 0 این دستورات را نوشتم ، برای =0 اجرا میشود ولی
برای تکست =خالی نه !! چرا ؟ چکار باید کنم ؟
آیا اگر بررسی کنم که اگر تکست = هیچ کاراکتری باشد (به جای تکست = خالی) آیا دستورات
خواسته شده اجرا میشود یا باز نه ؟
و اینگه اگر بخوام شرط بزارم که تکست بدون کاراکتر ... با چه کدی میتونم بنویسم ؟

sari-1369
جمعه 27 شهریور 1388, 17:47 عصر
فکر کنم این مشکلتو حل کنه :



DataGridView1.Rows.Clear()
Dim c = Val(TextBox1.Text)
If c < 2 Then c = 1
DataGridView1.Rows.AddCopies(0, c)

anooshiran
جمعه 27 شهریور 1388, 20:03 عصر
سلام دوست عزيز

كدت را به شكل زير اصلاح كردم كه مشكلت حل شود




Try
Dim i As Integer
If txtD.Text = "" Then
grid.RowCount = 1
grid.Rows(0).Cells(0).Value = ""
Else
If txtD.Text = 0 Then
grid.RowCount = 1
grid.Rows(0).Cells(0).Value = ""
'Grid.Rows(0).Cells(1).Value = ""
Else
grid.RowCount = txtD.Text
For i = 0 To grid.RowCount - 1
grid.Rows(i).Cells(0).Value = i + 1
Next
End If
End If

Catch ex As Exception
End Try

mahdyeh
جمعه 27 شهریور 1388, 20:16 عصر
ممنون



DataGridView1.Rows.Clear()
Dim c = Val(TextBox1.Text)
If c < 2 Then c = 1
DataGridView1.Rows.AddCopies(0, c)
با این کد وقتی مینویسم 1 ، 2 سطر ایجاد میشود
وقتی هم 0=c قرار می دهم اجرا نمی شود

Len(TextBox6.Text) = 0 رو شرط قرار دادم اینطوری درست جواب میده



PrivateSub TextBox6_Click(ByVal sender AsObject, ByVal e As System.EventArgs) Handles TextBox6.Click
If Len(TextBox6.Text) < 1 Then
Grid.Rows.Clear()
EndIf
EndSub
PrivateSub TextBox6_KeyPress(ByVal sender AsObject, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox6.KeyPress
If Len(TextBox6.Text) <= 1 Then
Grid.Rows.Clear()
EndIf

اینجوری جواب میده ولی اگه عدد نوشته شده با cut از تکست برداشته شود اجرا نمیشه چون نه press و نه click (زمانی که تکیت خالی است) انجام نمیشود پس گرید پاک نمیشود
پس وقتی عدد نوشته شده با کات برداشته شده بایستی بعدش یک کلیک روی تکست انجام بشه ...
راستی میشه یه کدی نوشت که عمل کات رو تشخیص بده و بعد انجامش بررسی کنه که تکست خالیه یا نه ؟؟؟:بامزه:

نه anooshiran هیچ فرقی نکرد

sari-1369
جمعه 27 شهریور 1388, 21:39 عصر
چیزی متوجه نشدم :لبخند:

maXXis
جمعه 27 شهریور 1388, 21:42 عصر
خسته نباشین.
من این کد را برای یک مسله دیگه استفاده کردم. حالا می خوام به کاربر یک مییج بده که بگه یک خطایی داری ولی نادیده گرفته شد.

mahdyeh
جمعه 27 شهریور 1388, 22:19 عصر
قبلی که بود

If txtD.Text = ""Or txtD.Text = 0 Then


همش با جایگذین این کد به جاش درست شد :



If Val(txtD.Text.Length) = Val(0) Or Val(txtD.Text) = Val(0) Then

:لبخندساده:

sari-1369
جمعه 27 شهریور 1388, 22:25 عصر
معذرت میخوام ، جسارته :لبخند: ولی Val (0) یعنی چی ؟

mahdyeh
جمعه 27 شهریور 1388, 22:49 عصر
Sorry Sari:خجالت:
خواستم val کنم همرو کردم


If Val(TextBox6.Text.Length) = 0 Or Val(TextBox6.Text) = 0 Then