.NET 2.x Разные функции для массива CheckBox-ов - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Приветствую. Решил спросить совета. Есть нужда: 10 чекбоксов. Нужно в зависимости от чека вызывать функции. Матрица возможности
  1. 1 1 1 2 1 3 1 n 2 1 2 2 2 n
Ну и дальше. Проблемы вроде нет большой, функция на проверки чеков для всех CB, и типа If sender("cb1").checked то. Одно но. функции, не одинаковые, т.е. написать готовый модуль и потом в зависимости от выбранного чекбокса передавать параметрами нет возможности (во всяком случаи я не вижу) т.к. и параметров в каждой фкнции не одинаковое кол-во, а может и совсем нет. В дргуих задачах, ну есть 5 чекбоксов, длинная проверка на состояние chekc каждого (благо не много) и функция с параметрами. Тут же одни вопросы пока. Кто как решил бы задачу, какие есть мысли, с применением чистого ООП

Решение задачи: «.NET 2.x Разные функции для массива CheckBox-ов»

textual
Листинг программы
Public Class Form1
    Private ch() As CheckBox
    Private isLoad As Boolean = False
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ch = {CheckBox1, CheckBox2, CheckBox3, CheckBox4, CheckBox5, CheckBox6, CheckBox7, CheckBox8}
        isLoad = True
    End Sub
    Public Function chState(ByVal chk() As CheckBox) As String
        Dim cc(chk.Length - 1) As Char
        For Each ch As CheckBox In chk
            If ch.Checked Then
                cc(CInt(ch.Name.Substring(8)) - 1) = "1"c
            Else
                cc(CInt(ch.Name.Substring(8)) - 1) = "0"c
            End If
        Next
        Return String.Join("", cc)
    End Function
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim ss As String = "f" & chState(ch)
        Try
            CallByName(Me, ss, CallType.Method, Nothing)
            'или 
            ' GetType(Form1).InvokeMember(ss, System.Reflection.BindingFlags.InvokeMethod, Nothing, Me, Nothing)
        Catch ex As Exception
        End Try
    End Sub
    Public Sub f01010000()
        MsgBox("f01010000")
    End Sub
    Public Sub f11010000()
        MsgBox("f11010000")
    End Sub
    Public Sub f01010100()
        MsgBox("f01010100")
    End Sub
End Class

Оцени полезность:

15   голосов , оценка 3.8 из 5
Похожие ответы