Vb.net 使用字符串中的表单名称更改标签文本,例如String1.label1.text

Vb.net 使用字符串中的表单名称更改标签文本,例如String1.label1.text,vb.net,winforms,Vb.net,Winforms,我正在尝试创建一个自动执行所有操作的函数。这是我目前的代码: Public Sub IncrementValueBeta(SlideDescription As String, SlideNumber As Integer, FormName As String) ChangeSlide (SlideNumber) MsgBox ("Test: " + SlideDescription) AddClicks = FormName.ClickedTimes.Text + 1

我正在尝试创建一个自动执行所有操作的函数。这是我目前的代码:

Public Sub IncrementValueBeta(SlideDescription As String, SlideNumber As Integer, FormName As String)
    ChangeSlide (SlideNumber)
    MsgBox ("Test: " + SlideDescription)
    AddClicks = FormName.ClickedTimes.Text + 1
    FormName.ClickedTimes.Text = AddClicks
End Sub
这将为值添加一个数字,但我正在尝试使代码更简洁,而不必执行
if FormName=“Slide1”
1000次,因为这是一个庞大的问卷

用户将键入
“FormName”
,例如
“Form1”
。在代码中,它将像
FormName.ClickedTimes.Caption=AddClicks
一样使用它,因此在幻灯片中,如果幻灯片是25次单击,那么已经是26次了,但只有当我执行
Slide3
而不是
FormName
时,有什么方法可以这样做吗?如果你知道怎么做,你能帮我吗?因为如果我不得不做1000次,那将是一个真正的痛苦

这将基本上更改表单标签的文本,例如,用户单击了yes i like sports,代码将加载模块/类,并将label1.text更改为+1 clicks,将label2.text更改为“问题2”但是它不知道它是什么形式,所以它将使用FormName中的文本(与参数一起给出)来找出它正在编辑的形式。这就是我在这里想要完成的


简而言之,我只想让它从FormName中找到表单,并将
FormName.Label1.text=“”
作为
Form1.Label1.text=“”

*查看,假设所需表单只有一个实例,请尝试以下操作:

Public Sub IncrementValueBeta(SlideDescription As String, SlideNumber As Integer, FormName As String)
    ChangeSlide(SlideNumber)

    Dim frmTarget As Form = Nothing
    For Each frm As Form In Application.OpenForms
        If frm.Name.ToUpper = FormName.ToUpper Then
            frmTarget = frm
            Exit For
        End If
    Next

    If Not IsNothing(frmTarget) Then
        Dim matches() As Control = frmTarget.Controls.Find("ClickedTimes", True)
        If matches.Length > 0 Then
            AddClicks = matches(0).Text + 1
            matches(0).Text = AddClicks
        End If
    End If
End Sub

*假设所需表单只有一个实例,请尝试以下操作:

Public Sub IncrementValueBeta(SlideDescription As String, SlideNumber As Integer, FormName As String)
    ChangeSlide(SlideNumber)

    Dim frmTarget As Form = Nothing
    For Each frm As Form In Application.OpenForms
        If frm.Name.ToUpper = FormName.ToUpper Then
            frmTarget = frm
            Exit For
        End If
    Next

    If Not IsNothing(frmTarget) Then
        Dim matches() As Control = frmTarget.Controls.Find("ClickedTimes", True)
        If matches.Length > 0 Then
            AddClicks = matches(0).Text + 1
            matches(0).Text = AddClicks
        End If
    End If
End Sub

*假设所需表单只有一个实例,请尝试以下操作:

Public Sub IncrementValueBeta(SlideDescription As String, SlideNumber As Integer, FormName As String)
    ChangeSlide(SlideNumber)

    Dim frmTarget As Form = Nothing
    For Each frm As Form In Application.OpenForms
        If frm.Name.ToUpper = FormName.ToUpper Then
            frmTarget = frm
            Exit For
        End If
    Next

    If Not IsNothing(frmTarget) Then
        Dim matches() As Control = frmTarget.Controls.Find("ClickedTimes", True)
        If matches.Length > 0 Then
            AddClicks = matches(0).Text + 1
            matches(0).Text = AddClicks
        End If
    End If
End Sub

*假设所需表单只有一个实例,请尝试以下操作:

Public Sub IncrementValueBeta(SlideDescription As String, SlideNumber As Integer, FormName As String)
    ChangeSlide(SlideNumber)

    Dim frmTarget As Form = Nothing
    For Each frm As Form In Application.OpenForms
        If frm.Name.ToUpper = FormName.ToUpper Then
            frmTarget = frm
            Exit For
        End If
    Next

    If Not IsNothing(frmTarget) Then
        Dim matches() As Control = frmTarget.Controls.Find("ClickedTimes", True)
        If matches.Length > 0 Then
            AddClicks = matches(0).Text + 1
            matches(0).Text = AddClicks
        End If
    End If
End Sub

我也会选择使用字典的方式

Public Class Form1
    Private slides As New Dictionary(Of Integer, String)

    Private currentSlideNumber As Integer
    Private currentSlideDescription As String

    Public Sub IncrementByClick()
        currentSlideDescription = slides(currentSlideNumber + 1)
        currentSlideNumber += 1

        ChangeSlide(currentSlideDescription)
    End Sub

    Public Sub ChangeSlide(ByVal slideDescription As String)
        currentSlideNumber = SelectSlideNumberByDesc(slideDescription)
        currentSlideDescription = slides(currentSlideNumber)
        MessageBox.Show("Successfully changed the slide to slide no. " & currentSlideNumber)
    End Sub

    Private Function SelectSlideNumberByDesc(ByVal slideDesc As String)
        Dim slideNumber As Integer
        For Each slide In slides
            If slide.Value = slideDesc Then
                slideNumber = slide.Key
                Exit For
            End If
        Next
        Return slideNumber
    End Function

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        slides.Add(1, "SLIDE_ONE")
        slides.Add(2, "SLIDE_TWO")
        slides.Add(3, "SLIDE_THREE")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ChangeSlide(TextBox1.Text)
    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        IncrementByClick()
    End Sub
End Class
通过单击按钮1,幻灯片将根据用户在文本框中输入的幻灯片说明进行更改

单击btnNext,下一张幻灯片将相应加载


OO方式更好,但这应该足以说明这一点。

我也会选择使用字典的方式

Public Class Form1
    Private slides As New Dictionary(Of Integer, String)

    Private currentSlideNumber As Integer
    Private currentSlideDescription As String

    Public Sub IncrementByClick()
        currentSlideDescription = slides(currentSlideNumber + 1)
        currentSlideNumber += 1

        ChangeSlide(currentSlideDescription)
    End Sub

    Public Sub ChangeSlide(ByVal slideDescription As String)
        currentSlideNumber = SelectSlideNumberByDesc(slideDescription)
        currentSlideDescription = slides(currentSlideNumber)
        MessageBox.Show("Successfully changed the slide to slide no. " & currentSlideNumber)
    End Sub

    Private Function SelectSlideNumberByDesc(ByVal slideDesc As String)
        Dim slideNumber As Integer
        For Each slide In slides
            If slide.Value = slideDesc Then
                slideNumber = slide.Key
                Exit For
            End If
        Next
        Return slideNumber
    End Function

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        slides.Add(1, "SLIDE_ONE")
        slides.Add(2, "SLIDE_TWO")
        slides.Add(3, "SLIDE_THREE")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ChangeSlide(TextBox1.Text)
    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        IncrementByClick()
    End Sub
End Class
通过单击按钮1,幻灯片将根据用户在文本框中输入的幻灯片说明进行更改

单击btnNext,下一张幻灯片将相应加载


OO方式更好,但这应该足以说明这一点。

我也会选择使用字典的方式

Public Class Form1
    Private slides As New Dictionary(Of Integer, String)

    Private currentSlideNumber As Integer
    Private currentSlideDescription As String

    Public Sub IncrementByClick()
        currentSlideDescription = slides(currentSlideNumber + 1)
        currentSlideNumber += 1

        ChangeSlide(currentSlideDescription)
    End Sub

    Public Sub ChangeSlide(ByVal slideDescription As String)
        currentSlideNumber = SelectSlideNumberByDesc(slideDescription)
        currentSlideDescription = slides(currentSlideNumber)
        MessageBox.Show("Successfully changed the slide to slide no. " & currentSlideNumber)
    End Sub

    Private Function SelectSlideNumberByDesc(ByVal slideDesc As String)
        Dim slideNumber As Integer
        For Each slide In slides
            If slide.Value = slideDesc Then
                slideNumber = slide.Key
                Exit For
            End If
        Next
        Return slideNumber
    End Function

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        slides.Add(1, "SLIDE_ONE")
        slides.Add(2, "SLIDE_TWO")
        slides.Add(3, "SLIDE_THREE")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ChangeSlide(TextBox1.Text)
    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        IncrementByClick()
    End Sub
End Class
通过单击按钮1,幻灯片将根据用户在文本框中输入的幻灯片说明进行更改

单击btnNext,下一张幻灯片将相应加载


OO方式更好,但这应该足以说明这一点。

我也会选择使用字典的方式

Public Class Form1
    Private slides As New Dictionary(Of Integer, String)

    Private currentSlideNumber As Integer
    Private currentSlideDescription As String

    Public Sub IncrementByClick()
        currentSlideDescription = slides(currentSlideNumber + 1)
        currentSlideNumber += 1

        ChangeSlide(currentSlideDescription)
    End Sub

    Public Sub ChangeSlide(ByVal slideDescription As String)
        currentSlideNumber = SelectSlideNumberByDesc(slideDescription)
        currentSlideDescription = slides(currentSlideNumber)
        MessageBox.Show("Successfully changed the slide to slide no. " & currentSlideNumber)
    End Sub

    Private Function SelectSlideNumberByDesc(ByVal slideDesc As String)
        Dim slideNumber As Integer
        For Each slide In slides
            If slide.Value = slideDesc Then
                slideNumber = slide.Key
                Exit For
            End If
        Next
        Return slideNumber
    End Function

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        slides.Add(1, "SLIDE_ONE")
        slides.Add(2, "SLIDE_TWO")
        slides.Add(3, "SLIDE_THREE")
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ChangeSlide(TextBox1.Text)
    End Sub

    Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
        IncrementByClick()
    End Sub
End Class
通过单击按钮1,幻灯片将根据用户在文本框中输入的幻灯片说明进行更改

单击btnNext,下一张幻灯片将相应加载



OO方式要好得多,但这应该足以说明这一点。

您能发布更多代码吗?我不确定什么在这里不起作用…它没有将FormName视为要调用/编辑的类/表单,例如它将其视为文本。Item不是类。Item,我希望它将其识别为类/表单,因为FormName是字符串,除非创建新类。或者一个扩展方法,取决于你的需要。如果你能帮助我,请帮助我。它所需要做的就是将字符串视为类。如果有人能帮我,那就太棒了!因此,您希望在1之前访问不同的幻灯片。字符串输入,并按2。用户增量?你能发布更多的代码吗?我不确定什么在这里不起作用…它没有将FormName视为要调用/编辑的类/表单,例如它将其视为文本。Item不是类。Item,我希望它将其识别为类/表单,因为FormName是字符串,除非创建新类。或者一个扩展方法,取决于你的需要。如果你能帮助我,请帮助我。它所需要做的就是将字符串视为类。如果有人能帮我,那就太棒了!因此,您希望在1之前访问不同的幻灯片。字符串输入,并按2。用户增量?你能发布更多的代码吗?我不确定什么在这里不起作用…它没有将FormName视为要调用/编辑的类/表单,例如它将其视为文本。Item不是类。Item,我希望它将其识别为类/表单,因为FormName是字符串,除非创建新类。或者一个扩展方法,取决于你的需要。如果你能帮助我,请帮助我。它所需要做的就是将字符串视为类。如果有人能帮我,那就太棒了!因此,您希望在1之前访问不同的幻灯片。字符串输入,并按2。用户增量?你能发布更多的代码吗?我不确定什么在这里不起作用…它没有将FormName视为要调用/编辑的类/表单,例如它将其视为文本。Item不是类。Item,我希望它将其识别为类/表单,因为FormName是字符串,除非创建新类。或者一个扩展方法,取决于你的需要。如果你能帮助我,请帮助我。它所需要做的就是将字符串视为类。如果有人能帮我,那就太棒了!因此,您希望在1之前访问不同的幻灯片。字符串输入,并按2。用户增量?