ايران ويج

نسخه‌ی کامل: استفاده از یک ابزار به صورت مالتی و جندتایی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان.من میخوام از یک ابزار به صورت index استفاده کنم مثل WinSock
و DataArrival رو بتونم از هر یک به جدا بگیرم
در vb6 یک گذینه داره که Index رو اگه 0 بذاری میتونی به صورت مالتی استفاده کنی
ولی vb.net چطوری میشه این کارو کرد؟؟
لطفآ اگه جواب دادید 100% Data Arrival رو هم بگید چون اون برام از کل سوال مهمتره....
منمونHeart

لطفآ دقت کنید من VB.net میگم.
شرمنده اینجا تاپیک زدم. گفتم شاید کسانی که میان به این بخش بتونن جواب بدن.

سلام.
شما تو دات نت میخوای با winsock کار کنی ؟
دات نت خودش کلاس های System.Net و System.Net.Sockets رو آماده برای این کار داره و نیازی به استفاده از کامپوننت نداری.

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

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

(۱۵-دى-۱۳۹۰, ۱۴:۱۰:۳۶)zirak نوشته است: [ -> ]لطفآ دقت کنید من VB.net میگم.
شرمنده اینجا تاپیک زدم. گفتم شاید کسانی که میان به این بخش بتونن جواب بدن.

اینو نمیگفتی تاپیکت منتقل میشد به بخش دات نت.
سلام مرسی آقا ولی منظور من چگونگی استفاده از WinSock نبود.منظورم استفاده از Index بود و WinSock رو مثال زدم.
این Index برای تایمر یا هر چیز دیگه که در vb6 میتونی به صورت Index ازش استفاده کنی...
من این تاپیک رو تو بخش .Net هم زدم ولی انگار هیچکس جواب نمیده.

منظور کامل من
کد:
Private Sub Command1_Click(Index As Integer)
Select Case Index

Case 0

Case 1

Case 2

End Select

End Sub

Private Sub Timer1_Timer(Index As Integer)
Select Case Index

Case 100

Case 120

Case 130

End Select
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Select Case Index

Case 2

Case 3

Case 8

End Select
End Sub

در VB.Net

ممنون میشم.
سلام.
سوالت یه مقدار نامفهومه.
به هر حال شما برای استفاده از ایندکس میتونی شیت از هر کلاسی رو به صورت آرایه تعریف کنی. بعد برای دسترسی به هر کدوم از اعضای آرایه باید از ایندکس استفاده کنی.

من دقیقا متوجه نشدم شما مشکلت با ایندکسه یا استفاده از ایندکس به روی winsock.
سلام
آقا منظور خودمو دقیق بگم.
توی vb6 مینویسن
کد:
Dim i As Integer
For i = 0 to 100
Load Timer(i)
Timer(i).Interval = 20
next

و در خود تایمر مینویسیم
کد:
Select Case Timer.Item.Index

Case 1
'Dastoor

Case 20
'Dastoor

End Select

منظور من اینه از Index یا همان مالتی و Load استفاده کنم.
و در خود کنترل فراخوانده شده اگه Index = 15 و یا در کل Index فرق داشت دستور مربوط به همان Index(عدد) اجرا بشه.
سلام.
شما اگه چند تا برای مثال کلید روی صفحه دارید و میخواهید با یک ایونت کنترلشون کنید میتونید از کد زیر استفاده کنید.

کد:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click
        Dim Index As Integer
        Index = CInt(Mid(sender.Name, 7))

        Select Case Index
            Case Is = 1
                MessageBox.Show("button1 Clicked")
                'Type your code here
            Case Is = 2
                MessageBox.Show("button2 Clicked")
                'Type your code here
            Case Is = 3
                MessageBox.Show("button3 Clicked")
                'Type your code here
        End Select
    End Sub

اما اگه میخواهی یه آرایه از کنترل هات داشته باشی و ران تایم کم و زیادشون کنی و حالت داینامیک داشته باشی کار کمی مشکل میشه.
در این صورت باید یه کلاس برای مدیریت آرایه کنترل هات بنویسی.

برای این کار از نمونه کلاس زیر که برای کنترل Button هست استفاده کن.

کد:
Public Class ButtonArray
    Inherits System.Collections.CollectionBase

    Private ReadOnly HostForm As System.Windows.Forms.Form

    Public Function AddNewButton() As System.Windows.Forms.Button
        ' Create a new instance of the Button class.
        Dim aButton As New System.Windows.Forms.Button()
        ' Add the button to the collection's internal list.
        Me.List.Add(aButton)
        ' Add the button to the controls collection of the form
        ' referenced by the HostForm field.
        HostForm.Controls.Add(aButton)
        ' Set intial properties for the button object.
        aButton.Top = Count * 25
        aButton.Left = 100
        aButton.Tag = Me.Count
        aButton.Text = "Button " & Me.Count.ToString
        AddHandler aButton.Click, AddressOf ClickHandler
        Return aButton
    End Function

    Public Sub New(ByVal host As System.Windows.Forms.Form)
        HostForm = host
        Me.AddNewButton()
    End Sub

    Default Public ReadOnly Property Item(ByVal Index As Integer) As System.Windows.Forms.Button
        Get
            Return CType(Me.List.Item(Index), System.Windows.Forms.Button)
        End Get
    End Property

    Public Sub Remove()
        ' Check to be sure there is a button to remove.
        If Me.Count > 0 Then
            ' Remove the last button added to the array from the host form
            ' controls collection. Note the use of the default property in
            ' accessing the array.
            HostForm.Controls.Remove(Me(Me.Count - 1))
            Me.List.RemoveAt(Me.Count - 1)
        End If
    End Sub

    Public Sub ClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)
        MessageBox.Show("you have clicked button " & CType(CType(sender,  _
           System.Windows.Forms.Button).Tag, String))
    End Sub
End Class

بعد میتونی یه نمونه از این کلاس در پروژت ایجاد کنی و چون کنترل ها باید به یه فرمی وابسته باشن در فرم لود کد زیر رو بنویس.

کد:
Dim MyControlArray As ButtonArray

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        MyControlArray = New ButtonArray(Me)
    End Sub

بقیشم دیگه سادست.
دستور زیر یه باتن رو فرم اضافه میکنه.

کد:
Private Sub btnAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAdd.Click
        MyControlArray.AddNewButton()
    End Sub

و کد زیر هم آخرین باتن رو حذف میکنه.
کد:
Private Sub btnRemove_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnRemove.Click
        MyControlArray.Remove()
    End Sub