我编写了以下代码来创建一个简单的字典应用程序:
private void btnDefine_Click(object sender, EventArgs e)
{
//string word = txtWords.Text;
XmlDocument xDoc = new XmlDocument();
try
{
string [] words = txtWords.Text.Split('\n');
foreach (string word in words ){
xDoc.Load("http://www.dictionaryapi.com/api/v1/references/collegiate/xml/" + word + "?key=[KEY]");
txtWords.Text = (xDoc.SelectSingleNode("entry_list/entry/def/dt").InnerText);
Clipboard.SetText(txtWords.Text);
lblCopied.Text = "Copied to the clipboard!";
}
}
catch
{
MessageBox.Show("That is not a word in the dictionary, please try again.", "Word not found in the dictionary", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
}
} 此表单包含一个富文本框,您可以在其中输入单词,它将为您定义单词。现在,只要我在文本框中输入一个单词,我就会得到定义。但是如果我在文本框中输入两个或更多单词,我会得到列表中最后一个单词的定义,我该如何制作它以便所有定义都显示在新行中。 I.E.,如果我在文本框中输入三个单词并按btnDefine,我将得到文本框中所有三个单词的定义。
答案 0 :(得分:0)
您可以输入与他们输入方式类似的定义:在不同的行上。请参阅String.Join
。
List<string> definitions = new List<string>();
foreach (string word in words )
{
xDoc.Load("http://www.dictionaryapi.com/api/v1/references/collegiate/xml/" + word + "?key=[KEY]");
string definition = (xDoc.SelectSingleNode("entry_list/entry/def/dt").InnerText);
definitions.Add(definition);
}
txtWords.Text = String.Join("\n", definitions);
Clipboard.SetText(txtWords.Text);
lblCopied.Text = "Copied to the clipboard!";