.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
Похожие ответы