تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[VB.NET] مساعدة في..listbox
#1
سلام عليكم

اريد من الاخوة مساعدتي
في 
listbox

اريد عند وصل
الخانه الثالثة او الرابعه في لست بوكس
ان يتوقف تايمر
ويعاود التايمر تشغيل نفسه بعد دقيقة
ومن ثم تكملة الاسماء في لست بوكس

مثال

1
2
3
4
يتوقف هنا ويستأنف بعد دقيقة
5
6
7
8
يتوقف هنا ويستأنف بعد دقيقة
9
10
11
12
13
يتوقف هنا ويستأنف بعد دقيقة

وهكذا

وشكرا
الرد
تم الشكر بواسطة: حريف برمجة
#2
وعليكم السلام ورحمة الله وبركاته

انت لا تحتاج لوجود Timer
فى عمل هذا الكود لفكرة الدقيقة

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



لكونه يقوم بتنفيذ كود وليكن For متعدد المرات
كلما بداء Timer فى التحديث

كل ما تحتاج فعله هو استخدام هذا الكود
كود :
Threading.Thread.Sleep(60000)

ولتنفيذ هذا السطر من الكود كل 4 تمريرة
فكل ما عليك فعله ان تجعل وضع الكود التالى

فى اى حدث مثل زر او ما شبه وليس Timer
كود :
       Dim i, ii As Integer
       For Each itm As String In ListBox1.Items
           i += 1
           MsgBox(itm)
           If i = ii + 4 Then
               ii = i
               Threading.Thread.Sleep(60000)
           End If
       Next

اذا كنت تريد كل 3 بدلاً من 4
فقط غير رقم 4 فى سطر IF الى 3

ودائماً اجعل كود شطر IF نهاية الكود المطلوب تنفيذه
كما هو مبين فى الكود بالاعلى

نفس الكود بطريقة اخري
كود :
       Dim i, ii As Integer
       For iii As Integer = 0 To ListBox1.Items.Count - 1
           i += 1
           MsgBox(ListBox1.Items(iii))
           If i = ii + 4 Then
               ii = i
               Threading.Thread.Sleep(2000)
           End If
       Next

تحياتى لك
وتمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

ساهم دائماً فى    لكل من يقوم بالمساهمة
فى حل المشكلة او الاستفسار لديك فالجميع هنا يعمل 
على مساعدة الاخرين لوجه الله وان تحتسب له اجر عند الله


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد
#3
اخي ماازبطتت معيي
الرد
تم الشكر بواسطة: حريف برمجة , wared
#4
الرجاء كل الرجاء مساعدتي
الرد
تم الشكر بواسطة: حريف برمجة , wared
#5
السلام عليكم اخي الكريم
تفضل نفس الكود في مثال
ملاحظة جعلت زمن التوقف 6 ثواني حتى يتضح لك الامر


الملفات المرفقة
.rar   hello.rar (الحجم : 102.98 ك ب / التحميلات : 14)
الرد
تم الشكر بواسطة: حريف برمجة , elgokr , wared
#6
شكرا اخ ابراهيم
الرد
تم الشكر بواسطة: elgokr , حريف برمجة , wared
#7
بدون تعقيب على الأخوة الكرام
-----
لكي لا يعلق البرنامج الافضل وضع الامر في BackgroundWorker  ولفعل ذلك اضف هذه الاداة اولا واليك الاكواد

----


كود :
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        BackgroundWorker1.RunWorkerAsync()
        Control.CheckForIllegalCrossThreadCalls = False
    End Sub
    Private Sub BackgroundWorker1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
        Dim i As Byte
        For x As Integer = 0 To 100
            If i = 4 Then Threading.Thread.Sleep(6000) : i = 0
            ListBox1.Items.Add(x + 1)
            i += 1
        Next
    End Sub
الرد
تم الشكر بواسطة: ابراهيم ايبو , حريف برمجة , elgokr , wared
#8
ممتاز اخ سامي محمد


ولكن اريد مسح الاسماء التي وضعت في textbox
من listbox



حاولت وضع كود تالي لمسح الاسماء التي استخدمت ولم تنجح
 Me.ListBox1.Select()
            Me.ListBox1.Items.RemoveAt(0)
            Me.ListBox1.SelectedIndex = 0

الفكرة اخي

ان الاسماء في لست بوكس
تأتي في Textbox
وعند وصول الاسم 10 رقم عشرة
يتوقف ويعاود تكرار المحاولة لاسماء جديدة غير الاسماء التي
وضعها في Textbox سابقاً
بوقت زمني لا يقل عن 3 دقائق
مع مسح الاسماء التي استخدمت



PHP كود :
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        BackgroundWorker1
.RunWorkerAsync()
 
       Control.CheckForIllegalCrossThreadCalls False
    End Sub

    Private Sub BackgroundWorker1_DoWork
(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles BackgroundWorker1.DoWork
        Dim i
As Byte
        For Each itm 
As String In ListBox1.Items
            TextBox1
.Text itm
            If i 
1 Then Threading.Thread.Sleep(6000) : x
            i 
+= 1
        Next
        MsgBox
("end")
 
   End Sub 


الملف في مرفقات
وشكرا


الملفات المرفقة
.rar   WindowsApp4.rar (الحجم : 76.64 ك ب / التحميلات : 4)
الرد
تم الشكر بواسطة: حريف برمجة , حريف برمجة , wared
#9
أعتقد أنك تريده بهذه الطريقة


كود :
  Dim i, x As Byte
        Dim Cont As Integer = ListBox1.Items.Count - 1
        Dim M As Integer
        For c As Integer = 0 To Cont
            If i + x = 10 Then
                TextBox1.Text = ListBox1.Items(c - M)
                ListBox1.Items.RemoveAt(c - M)
                M += 1
                Threading.Thread.Sleep(6000)
                i = 0
            End If
            i += 1
        Next
الرد
تم الشكر بواسطة: wared
#10
(22-06-19, 11:08 AM)e-coder كتب : ممتاز اخ سامي محمد


ولكن اريد مسح الاسماء التي وضعت في textbox
من listbox



حاولت وضع كود تالي لمسح الاسماء التي استخدمت ولم تنجح
 Me.ListBox1.Select()
            Me.ListBox1.Items.RemoveAt(0)
            Me.ListBox1.SelectedIndex = 0

الفكرة اخي

ان الاسماء في لست بوكس
تأتي في Textbox
وعند وصول الاسم 10 رقم عشرة
يتوقف ويعاود تكرار المحاولة لاسماء جديدة غير الاسماء التي
وضعها في Textbox سابقاً
بوقت زمني لا يقل عن 3 دقائق
مع مسح الاسماء التي استخدمت



PHP كود :
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click
        BackgroundWorker1
.RunWorkerAsync()
 
       Control.CheckForIllegalCrossThreadCalls False
    End Sub

    Private Sub BackgroundWorker1_DoWork
(sender As ObjectAs System.ComponentModel.DoWorkEventArgsHandles BackgroundWorker1.DoWork
        Dim i
As Byte
        For Each itm 
As String In ListBox1.Items
            TextBox1
.Text itm
            If i 
1 Then Threading.Thread.Sleep(6000) : x
            i 
+= 1
        Next
        MsgBox
("end")
 
   End Sub 


الملف في مرفقات
وشكرا


(لست مبرمج VB.NET)

تعديل
كود :
Private Sub BackgroundWorker1_DoWork(sender As Object, e As DoWorkEventArgs) Handles BackgroundWorker1.DoWork
   Dim i As Byte
   Do While ListBox1.Items.Count > 0
       TextBox1.Text = ListBox1.Items(0)
       ListBox1.Items.RemoveAt(0)
       If i = 10 Then Threading.Thread.Sleep(6000) : i = 0
       i += 1
       Threading.Thread.Sleep(100)
   Loop
   TextBox1.Clear()
End Sub
الرد
تم الشكر بواسطة: e-coder



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم