الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ملء تكست بوكس باستعمال NumericUpDown

بدأه أبو كديس في 28 يونيو 2010 · 3 رد · 1,045 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله

عساكم جميعاً بخير

أحاول تصميم أداة يقوم المستعمل بتحريك ال NumericUpDown ليحصل على عدد الأطفال في تكست بوكس.

المشكلة أن الأداة تقوم بتكرار العملية فتعطي عدة جمل في صندوق النص.

وطبعاً مش ممكن يكون عندها 9 أطفال و 6 أطفال في نفس الوقت!

مع ملاحظة أني أحاول تجنب استعمال textbox.clear لوجود أجسام أخري في نفس الفورم تطبع على نفس التكست بوكس.

في المرفقات.

جزاكم الله خيراً.

NumericUpDown.rar

*أخوكم مبتدئ*

**اللهم علم من علمني**

#2
أبو كديس كتب:

السلام عليكم ورحمة الله

عساكم جميعاً بخير

أحاول تصميم أداة يقوم المستعمل بتحريك ال NumericUpDown ليحصل على عدد الأطفال في تكست بوكس.

المشكلة أن الأداة تقوم بتكرار العملية فتعطي عدة جمل في صندوق النص.

وطبعاً مش ممكن يكون عندها 9 أطفال و 6 أطفال في نفس الوقت!

مع ملاحظة أني أحاول تجنب استعمال textbox.clear لوجود أجسام أخري في نفس الفورم تطبع على نفس التكست بوكس.

في المرفقات.

جزاكم الله خيراً.

استخدم الحدث Validated أو Validating فهو يستدعى عند الانتهاء من الاختيار والانتقال الى اداة اخرى كالتالي:

  Private Sub NumericUpDown1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles NumericUpDown1.Validating
    	TextBox1.Text = TextBox1.Text + "with " + NumericUpDown1.Value.ToString + " " + "children."

	End Sub

وإذا كنت مصر على استخدام نفس الحدث وتغيير العدد مباشرة . يمكنك استخدام البحث ضمن النص وتغيير عدد الاطفال كالتالي:

  'Private Form Variable
	Dim ChildrenNumber As String = String.Empty

	Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
    	If ChildrenNumber <> String.Empty AndAlso TextBox1.Text.Contains(ChildrenNumber) Then
        	Dim NewChildrenNumber As String = "with " + NumericUpDown1.Value.ToString + " " + "children."
        	TextBox1.Text = TextBox1.Text.Replace(ChildrenNumber, NewChildrenNumber)
        	ChildrenNumber = NewChildrenNumber
    	Else
        	ChildrenNumber = "with " + NumericUpDown1.Value.ToString + " " + "children."
        	TextBox1.Text = TextBox1.Text + ChildrenNumber
    	End If


	End Sub

هذا الكود يبحث عن القيمة القديمة في نفس النص ويستبدلها بالقيمة الجديدة حتى لو كان هناك كتابات اخرى سابقة او تالية لها

جربها وسترى النتائج

بالتوفيق

تم تعديل هذه المشاركة بواسطة was_hal في 28 يونيو 2010 في 10:57

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

#3
was_hal كتب:

استخدم الحدث Validated أو Validating فهو يستدعى عند الانتهاء من الاختيار والانتقال الى اداة اخرى كالتالي:

  Private Sub NumericUpDown1_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles NumericUpDown1.Validating
    	TextBox1.Text = TextBox1.Text + "with " + NumericUpDown1.Value.ToString + " " + "children."

	End Sub

وإذا كنت مصر على استخدام نفس الحدث وتغيير العدد مباشرة . يمكنك استخدام البحث ضمن النص وتغيير عدد الاطفال كالتالي:

  'Private Form Variable
	Dim ChildrenNumber As String = String.Empty

	Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
    	If ChildrenNumber <> String.Empty AndAlso TextBox1.Text.Contains(ChildrenNumber) Then
        	Dim NewChildrenNumber As String = "with " + NumericUpDown1.Value.ToString + " " + "children."
        	TextBox1.Text = TextBox1.Text.Replace(ChildrenNumber, NewChildrenNumber)
        	ChildrenNumber = NewChildrenNumber
    	Else
        	ChildrenNumber = "with " + NumericUpDown1.Value.ToString + " " + "children."
        	TextBox1.Text = TextBox1.Text + ChildrenNumber
    	End If


	End Sub

هذا الكود يبحث عن القيمة القديمة في نفس النص ويستبدلها بالقيمة الجديدة حتى لو كان هناك كتابات اخرى سابقة او تالية لها

جربها وسترى النتائج

بالتوفيق

جزاك الله خيراً وبارك فيك.

ولو تكمل جميلك و ترفق شرح على الكود تكون ما قصرت.

*أخوكم مبتدئ*

**اللهم علم من علمني**

#4
أبو كديس كتب:

جزاك الله خيراً وبارك فيك.

ولو تكمل جميلك و ترفق شرح على الكود تكون ما قصرت.

حسنا اخي .. عذرا للتأخر في الرد كنت في انشغال

شرح الكود :

الطريقة الأولى هي باستخدام الحدث Validated تضع فيها نفس الكود الذي كنت تستخدمه مع الحدث TextChange ولكن هذا الحدث أفضل لانه لا يتكرر مع كل حرف تكتبه بل عند انتهاء تحرير مربع النص TextBox

الطريقة الثانية هي باستخدام نفس الحدث TextChange ولكن بكود أكثر تطورا ليساعدنا على معرفة مكان العبارة القديمة المكتوبة إن وجدت وتغييرها ..

 Dim ChildrenNumber As String = String.Empty

تعريف متغير على مستوى النافذة حتى نخزن فيه العبارة التي تعبر عن عدد الأطفال القديم ونبحث عنه في TextBox

Private Sub NumericUpDown1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NumericUpDown1.ValueChanged
        If ChildrenNumber <> String.Empty AndAlso TextBox1.Text.Contains(ChildrenNumber) Then
                Dim NewChildrenNumber As String = "with " + NumericUpDown1.Value.ToString + " " + "children."
                TextBox1.Text = TextBox1.Text.Replace(ChildrenNumber, NewChildrenNumber)
                ChildrenNumber = NewChildrenNumber
        Else
                ChildrenNumber = "with " + NumericUpDown1.Value.ToString + " " + "children."
                TextBox1.Text = TextBox1.Text + ChildrenNumber
        End If


        End Sub

ضمن الحدث TextChanged قمنا بالمقارنة أولا اذا كان متغير العبارة ليس فارغا ( يكون فارغا في اول مرة يقوم فيها بادخال العدد)

ووضعنا شرط AndAlso في المقارنة حتى اذا كان متغير العبارة فارغا لا يكمل المقارنة التالية

المقارنة التالية كانت باستخدام التابع Contains للبحث عن العبارة ضمن مربع النص ويرجع قيمة True أو False

اذا كانت المقارنة صحيحة والعبارة موجودة عند ذلك نقوم بتعريف متغير جديد NewChildrenNumber نخزن فيه العبارة الجديدة المتولدة من الرقم الجديد في NumericUpDown

بعد ذلك نقوم باستبدال العبارة القديمة بالعبارة الجديدة عن طريق التابع Replace

ثم نعطي القيمة الجديدة للمتغير المعرف على مستوى النافذة حتى نرجع له عند تغير عدد الاطفال

واذا كانت المقارنة ليست صحيحة هذا يعني ان هذه بداية ادخال عدد الاطفال فنقوم باسناد عبارة عدد الاطفال إلى مربع النص ونعطي المتغير قيمة العبارة

ارجو ان يكون الشرح واضح ... معلش لكني على عجلة قليلا happy.gif

بالتوفيق

1338031614581.png

" اللهــم إنّا مغلــوبــون فانتصــــر "

(اللهم سبحانك لا علم لنا إلا ما علمتنا إنك أنت العليم الحكيم)

مواضيع مشابهة