
 نوشته شده توسط 
پرستو پارسایی
					
				 
				ممنونم ولی مثل اینکه طرح سوال من ناقص بوده من با شرط  Case مشکل دارم یعنی اعداد به تعداد زیاد (بیشتر از پستی که ابتدا گذاشتم)  برای دستور بعد از case  مشکلی ندارم ( لود کردن تصویر رو بعنوان  مثال گذاشتم ) جه جوری اون اعداد رو جلوی case ننویسم و بتونم  اعداد شرط رو فراخوانی کنم
سپاسگزارم
			
		 
	 
 در منوی Project ویژوال استدیو ...Add New Item رو انتخاب کنید. در لیست انواع Common Items نوع Text File رو انتخاب کنید و نامش رو فرضا TextFile1.txt قرار بدهید.
موقع ویرایش اون TextFile1.txt در پنجره Properties یک مشخصه Build Action هست که باید روی وضعیت Embedded Resource قرار بگیره.
Embedded Resource به این معنا است که این فایل موقع جزئی از فایل اجرایی برنامه میشه و در کد می توانید ازش داده بخوانید.
حالا داخل اون TextFile1.txt هر گروه از مقادیر رو که خواستید بنویسید و برای اسامی گروه نام هایی مثل Red و Green یا هر نام دیگری رو وارد کنید. اسم گروه داخل [ ] مشخص خواهد شد :
[Red]
    10302, 40602, 90902
    161202, 10506, 41006, 91506
    162006, 10712
[Green]
    10920, 41820, 92720, 11342, 42642, 93942
[Blue]
    164430
و تابعی به نام LoadResource بنویسید که بتونه این گروه ها و مقادیر داخلش رو از فایل بخونه :
    Private Function LoadResource(resourceName As String) As Dictionary(Of String, String)
        Dim dic As New Dictionary(Of String, String)
        Dim assembly = System.Reflection.Assembly.GetExecutingAssembly()
        Using stream = assembly.GetManifestResourceStream (String.Format("{0}.{1}", assembly.GetName.Name, resourceName))
            Dim reader As New System.IO.StreamReader(stream)
            Dim words = reader.ReadToEnd().Split(New String() {" ", ",", vbTab, vbCrLf, vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
            Dim group = "None"
            For Each word In words
                If word.StartsWith("[") Then
                    group = word.Trim("[", "]")
                Else
                    dic.Add(word, group)
                End If
            Next
        End Using
        Return dic
    End Function
حالا در ابتدا که فرم فراخوانی میشه این اطلاعات رو داخل یک دیکشنری فرضا به نام dic_ میخونیم :
Public Class Form1
    Private _dic = LoadResource("TextFile1.txt")
و بعد در Select Case بررسی می کنیم که آیا مقدار مورد نظر در dic_ هست یا نه، اگر نبود که حالت Else برقرار ئه وگرنه اسم گروه مورد نظر رو از dic_ دریافت می کنیم :
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim T10 As String = TextBox1.Text
        If _dic.ContainsKey(T10) Then
            Select Case _dic(T10)
                Case "Red"
                    PictureBox1.BackColor = Color.Red
                Case "Green"
                    PictureBox1.BackColor = Color.Green
                Case "Blue"
                    PictureBox1.BackColor = Color.Blue
            End Select
        Else
            PictureBox1.BackColor = Color.White
        End If
    End Sub
Public Class Form1
    Private _dic = LoadResource("TextFile1.txt")
    Private Function LoadResource(resourceName As String) As Dictionary(Of String, String)
        Dim dic As New Dictionary(Of String, String)
        Dim assembly = System.Reflection.Assembly.GetExecutingAssembly()
        Using stream = assembly.GetManifestResourceStream (String.Format("{0}.{1}", assembly.GetName.Name, resourceName))
            Dim reader As New System.IO.StreamReader(stream)
            Dim words = reader.ReadToEnd().Split(New String() {" ", ",", vbTab, vbCrLf, vbCr, vbLf}, StringSplitOptions.RemoveEmptyEntries)
            Dim group = "None"
            For Each word In words
                If word.StartsWith("[") Then
                    group = word.Trim("[", "]")
                Else
                    dic.Add(word, group)
                End If
            Next
        End Using
        Return dic
    End Function
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim T10 As String = TextBox1.Text
        If _dic.ContainsKey(T10) Then
            Select Case _dic(T10)
                Case "Red"
                    PictureBox1.BackColor = Color.Red
                Case "Green"
                    PictureBox1.BackColor = Color.Green
                Case "Blue"
                    PictureBox1.BackColor = Color.Blue
            End Select
        Else
            PictureBox1.BackColor = Color.White
        End If
    End Sub
End Class