منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[VB.NET] مساعدة في..listbox - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [VB.NET] مساعدة في..listbox (/showthread.php?tid=29500)

الصفحات: 1 2


مساعدة في..listbox - e-coder - 26-04-19

سلام عليكم

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

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

مثال

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

وهكذا

وشكرا



RE: مساعدة في..listbox - elgokr - 26-04-19

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

انت لا تحتاج لوجود 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

تحياتى لك
وتمنياتى لك التوفيق



RE: مساعدة في..listbox - e-coder - 19-06-19

اخي ماازبطتت معيي


RE: مساعدة في..listbox - e-coder - 20-06-19

الرجاء كل الرجاء مساعدتي


RE: مساعدة في..listbox - ابراهيم ايبو - 20-06-19

السلام عليكم اخي الكريم
تفضل نفس الكود في مثال
ملاحظة جعلت زمن التوقف 6 ثواني حتى يتضح لك الامر



RE: مساعدة في..listbox - e-coder - 20-06-19

شكرا اخ ابراهيم


RE: مساعدة في..listbox - سامي محمد - 20-06-19

بدون تعقيب على الأخوة الكرام
-----
لكي لا يعلق البرنامج الافضل وضع الامر في 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



RE: مساعدة في..listbox - e-coder - 22-06-19

ممتاز اخ سامي محمد


ولكن اريد مسح الاسماء التي وضعت في 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 


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


RE: مساعدة في..listbox - سامي محمد - 22-06-19

أعتقد أنك تريده بهذه الطريقة


كود :
  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



RE: مساعدة في..listbox - wared - 22-06-19

(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