2017-09-14 106 views
-1

我正在编写一个程序,用于从CSV文件读取问题以供用户回答。一旦我从问题CSV文件中读取,我将我的问题存储在问题对象列表中。然后,我的GUI向用户显示每个问题从CSV文件读取后在多行显示标签文本

Public Sub displayQuestion(ByVal x As Integer) 
    QuizForm.questionLabel.Text = allQuestions(x).qText 
End Sub 

并且他们能够通过下一个/上一个按钮循环访问它们。每个Question对象都有一个表示问题文本的关联字符串变量。

有些问题很简单的句子,如

“以下哪项陈述的是一个测试团队的MOST有效的目标是什么?”

但是,有些问题是采用以下格式:

以下哪项是正确的?

答:软件测试可能需要满足法律或合同 的要求。

B.软件测试主要是为了提高 开发人员的工作质量。

C.严格测试和修复发现的缺陷有助于降低运行环境中出现问题的风险。

D.严格测试有时用于证明发现所有失败已发现 。

麻烦的是,当从CSV文件中读取问题文本时,它必须位于一行上。这就导致了结构类似的第二个例子显示在我的GUI这样的问题:

enter image description here

这是不是很人性化。

编号喜欢它呈现这样的:

enter image description here

我明白,我怎么会被硬编码vbnewLine到文本做到这一点,但这些问题都在运行时动态加载。

任何关于我如何去做这件事的建议?

+0

问题的标签可以是多行。答案选项可能/应该是复选框,也可以是多行。控件也可以锚定或用于布局面板, – Plutonix

+0

我相信你的问题是你不知道如何构造CSV(逗号分隔变量)文件并解析其内容以供显示。它是否正确?仔细想想,如果每一行如果文件有多个字段,那么您应该能够根据每行解析的信息做出决定,以决定如何显示它。此外,请考虑使用[TextFieldParser类](https://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser(v = vs.110).aspx)来读取文件并提取字段来自文件中的每一行。 – TnTinMn

回答

0

只需在子程序的末尾添加vbNewLine:

公用Sub displayQuestion(BYVAL X为整数) QuizForm.questionLabel.Text = allQuestions(x)的.qText & vbNewLine() 结束小组

不要让自己更难,那么需要。在问题字符串的末尾添加一个新行,这没有任何问题。

+0

这只会在问题的文本后添加一行。包含问题文本的字符串包含整个问题文本。我正在寻找一种方式,当程序遇到一个问题,其结构像“以下哪项是真的?”。上面的例子中,程序能够在'A:','B:','C'和'D'之前添加vbNewLine() – BIGJOHN