【问题标题】:Visual_basic : How to get single letters and letterstrings of 2 and 3 consecutive letters in the same label after clicking button?Visual_basic:单击按钮后如何在同一标签中获取单个字母和2个和3个连续字母的字母串?
【发布时间】:2023-03-22 20:52:01
【问题描述】:

尝试为我的孩子们制作一个带有 Visual basic (2015) 的 Windows 应用程序,以帮助他们完成阅读过程。
制作了 3 个标签(Box1Box2Box3),每个标签可以包含 1 个字母,也可以包含 2 或 3 个字母串(如“ea”、“ou”、“tr”、“str”...)。
还有一个带有点击功能的标签,所以预定义的字母会随着每次点击在每个框中随机变化。

我设法在框中获得了单个预定义的单个字母,但找不到在这些框中获得 2 个连续字母的方法。
任何人都可以帮助我。

结果示例:

consonants  vowels      consonants
m           a           p           => map
m           a           rs          => mars
m           ea          n           => mean
m           ee          t           => meet
spr         i           ng          => spring

到目前为止,我的 VB 代码是:

Public Class VLLK1_2

    Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim rand As New Random
        Dim letter As String = "gkmnprstv "
        Dim consonant As String = "gkmnprts "
        Dim vowel As String = "aei"
        letter = letter.Substring(rand.Next(letter.Length), 1)
        Box1.Text = letter
        vowel = vowel.Substring(rand.Next(vowel.Length), 1)
        Box2.Text = vowel
        consonant = consonant.Substring(rand.Next(consonant.Length), 1)
        Box3.Text = consonant
    End Sub

End Class

【问题讨论】:

  • 你如何想象确保几个随机选择的字母总是组成一个单词?
  • 不是从单个字符串(“字母”、“辅音”、“元音”)中提取,而是从List(Of String) 中提取,以便您可以添加任何长度的字符串作为候选字符串进行选择。

标签: vb.net winforms


【解决方案1】:

我不是单词专家,但不会像刚才提到的评论那样更容易创建包含您想学习的单词的 List(of String)。然后随机选择每个单词并将其分成 3 部分并将这些部分添加到您的文本框中?

Private rand As New Random
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
        Dim ListW As New List(Of String)
        ListW.Add("apple")
        ListW.Add("pinaple")
        ListW.Add("pen")
        ListW.Add("orange")
        ListW.Add("water")

        'select random word from list

        Dim randW As String = ListW(rand.Next(0, ListW.Count - 1))
        'Dim randW = "pinaple"

        'find the integer divider value
        Dim div As Integer = randW.Length / 3


        'divide the word into 3 parts
        Dim leftP As String = Strings.Left(randW, div)
        Dim midP As String = Strings.Left(Strings.Mid(randW, div + 1), div)

        Dim reminderLenght = randW.Length - (leftP.Length + midP.Length)

        Dim rightP As String = Strings.Right(randW, reminderLenght)

        'now add the parts to text boxes

        tb1.Text = leftP
        tb2.Text = midP
        tb3.Text = rightP
    End Sub
End Class

预览:

【讨论】:

  • 是否可以使用(字符串的)列表,在使用列表中的所有单词之前不会重复单词?所以它们只会在列表的每个单词生成后再次显示。如果是,你会提出什么建议??
  • 当然可以。一种方法是打乱列表,然后按顺序拉出项目。
猜你喜欢
  • 1970-01-01
  • 2016-09-02
  • 1970-01-01
  • 2021-06-26
  • 2016-11-25
  • 2022-08-04
  • 1970-01-01
  • 2020-04-08
  • 2022-08-23
相关资源
最近更新 更多