这有希望成为我的最后一个问题,而且我从你自己获得的东西将帮助我真正继续这个项目! 所以...我目前将variosu组合框和文本框放入FORM2上的字符串列表中,忽略所有空格然后输出到FORM3上的列表框中。这是我的最后一件...... 组合框1将填充说“Premium”,然后文本框1将具有4个值“400,500,600,700” 然后组合box2与“封面”和textbox2“TPO,TPFT,COMP”
我希望它看起来如下任何----只是为了间隔,因为它似乎忽略空格键
Listbox1 --- | --- ListBox2
高级------------ 400
------------------------- 500
------------------------- 600
------------------------- 700
封面----------------- TPO
------------------------- TPFT
等等 我得到的是
Listbox1 --- | --- ListBox2
高级------------ 400
封面----------------- 500
------------------------- 600
------------------------- 700
------------------------- TPO
------------------------- TPFT
字段之间没有关系,我不知道如何最好地描述或查找如何做到这一点,使其输出组合框一,然后textbox1分成行到第二个框。然后在这些下一个组合框等等所以我猜组合框+((文本框1行-1值)为空行) 如果我能把照片放到这里会更容易! darnnn youu声誉!!!!
最后我可以拍照!!!!! 正如您所希望看到的那样,表单1与momemnt无关(对于form2 / 3的GUI没有影响) 但是你选择了表格2中的各种字段,并将它们映射到form3 ATM的某些数据正以奇怪的顺序映射。列表1和2之间没有格式化
在下面找到Form2和Form3的早期概念
这就是我想要做的,数据以可读格式布局(并且幕后运行各种DROOLS,它将变形数据并打印出结果)。
答案 0 :(得分:1)
问题是您使用了错误的控件来完成工作。您需要一个控件,可以为列表中的每个项目显示多列数据。 ListBox
控件并不适用于此,因为它仅用于显示单个列。
假设这是一个WinForm项目,而不是WPF,我建议使用DataGridView
控件或ListView
控件。这些控件中的任何一个都可以显示多个列,但ListView
控件仅显示多个列,其View
属性设置为Details
。由于我偏爱ListView
控件,我自己,我会用一个例子给你一个例子:)
首先,在表单中添加ListView
控件。然后,将设计器中控件的View
属性设置为Details
。然后单击按钮以编辑控件的Columns
属性。添加两列。然后,使用这样的代码填充列表:
Dim item As ListViewItem = ListView1.Items.Add("Premium")
item.SubItems.Add("400")
item = ListView1.Items.Add("")
item.SubItems.Add("500")
item = ListView1.Items.Add("")
item.SubItems.Add("600")
item = ListView1.Items.Add("")
item.SubItems.Add("700")
item = ListView1.Items.Add("Cover")
item.SubItems.Add("TPO")
item = ListView1.Items.Add("")
item.SubItems.Add("TPFT")
如果看起来像是第一列的文本存储在组合框中,那么第二列的文本存储在逗号分隔的文本框中,那么你可以这样做:
For Each cbo As ComboBox In MyComboBoxes
Dim first As Boolean = True
For Each value As String In GetTextBoxForComboBox(cbo).Text.Split(",")
Dim item As ListViewItem = Nothing
If first Then
item = ListView1.Items.Add(cbo.Text)
Else
item = ListView1.Items.Add("")
End If
item.SubItems.Add(value)
first = False
Next
Next
当然,不是像GetTextBoxForComboBox
这样的方法,最好有一个存储控件配对的类,如下所示:
Private Class ControlPair
Public Property Cbo As ComboBox
Public Property Txt As TextBox
End Class
然后,您可以像这样循环遍历它们:
For Each pair As ControlPair In MyPairs
' ...
For Each value As String In pair.Txt.Text.Split(",")
' ...
ListView1.Items.Add(pair.Cbo.Text)
' ...
Next
Next
For Each
是一种方便的语法,用于迭代IEnumerable
对象中的所有项目(基本上是任何列表,例如Array
或List(Of T)
)。因此,在这种情况下,MyPairs
需要是ControlPair
个对象的列表,例如:
Dim MyPairs As New List(Of ControlPair)()
Dim pair1 As New ControlPair()
pair1.Cbo = ComboBox1
pair1.Txt = TextBox1
MyPairs.Add(pair1)
Dim pair2 As New ControlPair()
pair2.Cbo = ComboBox2
pair2.Txt = TextBox2
MyPairs.Add(pair2)
或者,如果您不想创建自己的课程,可以使用Tuple(Of ComboBox, TextBox)
。
实际上,在看到截图后,看起来TreeView
控件实际上可能更合适。您可以将每个组合框值显示为根级节点,然后在每个根级节点内部为文本框中每个分隔值的子节点,如下所示:
答案 1 :(得分:0)
不要依赖空格或空行进行格式化。写出适当的标记。
<form>
<label>Premium</label>
<select name="premium">
<option>400</option>
<option>500</option>
<option>600</option>
<option>700</option>
</select><br><br>
<label>Cover</label>
<select name="cover">
<option>TPO</option>
<option>TPFT</option>
<option>COMP</option>
</select>
</form>