C# 如何返回字符串列表的值? private void按钮3\u单击(对象发送者,事件参数e) { 螺纹t=新螺纹( ()=>textBox4.AppendText(getman(textBox3.Text)); t、 Start(); } 列表getman(字符串url) { 列表结果=新列表(); 尝试 { HttpWebRequest r=(HttpWebRequest)WebRequest.Create(url); r、 UserAgent=“Mozilla/5.0(Windows NT 10.0;WOW64;rv:51.0)Gecko/20100101 Firefox/51.0”; r、 方法=“获取”; HttpWebResponse res=(HttpWebResponse)r.GetResponse(); StreamReader sr=新的StreamReader(res.GetResponseStream()); 字符串oku=sr.ReadToEnd(); Regex Regex=new Regex(textBox1.Text+“(.*?”+textBox2.Text); MatchCollection m=regex.Matches(oku); foreach(匹配单位为m) { result.Add(match.Groups[1].ToString()+“\r\n”); } res.Close(); 高级关闭(); } 捕获{} 返回结果; }
它给出了以下错误:C# 如何返回字符串列表的值? private void按钮3\u单击(对象发送者,事件参数e) { 螺纹t=新螺纹( ()=>textBox4.AppendText(getman(textBox3.Text)); t、 Start(); } 列表getman(字符串url) { 列表结果=新列表(); 尝试 { HttpWebRequest r=(HttpWebRequest)WebRequest.Create(url); r、 UserAgent=“Mozilla/5.0(Windows NT 10.0;WOW64;rv:51.0)Gecko/20100101 Firefox/51.0”; r、 方法=“获取”; HttpWebResponse res=(HttpWebResponse)r.GetResponse(); StreamReader sr=新的StreamReader(res.GetResponseStream()); 字符串oku=sr.ReadToEnd(); Regex Regex=new Regex(textBox1.Text+“(.*?”+textBox2.Text); MatchCollection m=regex.Matches(oku); foreach(匹配单位为m) { result.Add(match.Groups[1].ToString()+“\r\n”); } res.Close(); 高级关闭(); } 捕获{} 返回结果; },c#,C#,它给出了以下错误: private void button3_Click(object sender, EventArgs e) { Thread t = new Thread( () => textBox4.AppendText(getman(textBox3.Text))); t.Start(); } List<string> getman(
private void button3_Click(object sender, EventArgs e)
{
Thread t = new Thread(
() => textBox4.AppendText(getman(textBox3.Text)));
t.Start();
}
List<string> getman(string url)
{
List<string> result = new List<string>();
try
{
HttpWebRequest r = (HttpWebRequest)WebRequest.Create(url);
r.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0";
r.Method = "GET";
HttpWebResponse res = (HttpWebResponse)r.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string oku = sr.ReadToEnd();
Regex regex = new Regex(textBox1.Text + "(.*?)" + textBox2.Text);
MatchCollection m = regex.Matches(oku);
foreach (Match match in m)
{
result.Add(match.Groups[1].ToString() + "\r\n");
}
res.Close();
sr.Close();
}
catch { }
return result;
}
错误“System.Windows.Forms.TextBoxBase.AppendText(string)”的最佳重载方法匹配具有一些无效参数
错误参数1:无法从“System.Collections.Generic.List”转换为“string”
正如MSDN所说()Append
方法没有像您尝试做的那样为列表
重载。这是你的主要问题
我不知道你想用这些代码完成什么,但如果你想让你的文本框中充满你的列表,下面是一个如何用逗号分隔每个项目的示例:
Error The best overloaded method match for 'System.Windows.Forms.TextBoxBase.AppendText(string)' has some invalid arguments
Error Argument 1: cannot convert from 'System.Collections.Generic.List<string>' to 'string'
stringgetman(字符串url)
{
列表结果=新列表();
尝试
{
HttpWebRequest r=(HttpWebRequest)WebRequest.Create(url);
r、 UserAgent=“Mozilla/5.0(Windows NT 10.0;WOW64;rv:51.0)Gecko/20100101 Firefox/51.0”;
r、 方法=“获取”;
HttpWebResponse res=(HttpWebResponse)r.GetResponse();
StreamReader sr=新的StreamReader(res.GetResponseStream());
字符串oku=sr.ReadToEnd();
Regex Regex=new Regex(textBox1.Text+“(.*?”+textBox2.Text);
MatchCollection m=regex.Matches(oku);
foreach(匹配单位为m)
{
result.Add(match.Groups[1].ToString()+“\r\n”);
}
res.Close();
高级关闭();
}
捕获{}
返回字符串.Join(“,”,result.ToArray());
}
除此之外,即使您的代码看起来正常,您也在执行线程工作,操作在另一个线程中创建的UI控件,因为您访问它们的线程就在那里声明。对于对UI的线程安全调用,请检查以下内容:
您必须循环浏览列表并分别附加每个字符串:
string getman(string url)
{
List<string> result = new List<string>();
try
{
HttpWebRequest r = (HttpWebRequest)WebRequest.Create(url);
r.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0";
r.Method = "GET";
HttpWebResponse res = (HttpWebResponse)r.GetResponse();
StreamReader sr = new StreamReader(res.GetResponseStream());
string oku = sr.ReadToEnd();
Regex regex = new Regex(textBox1.Text + "(.*?)" + textBox2.Text);
MatchCollection m = regex.Matches(oku);
foreach (Match match in m)
{
result.Add(match.Groups[1].ToString() + "\r\n");
}
res.Close();
sr.Close();
}
catch { }
return String.Join(",", result.ToArray());
}
此外,控件对用于这些内容的线程非常挑剔。在一切正常运行之前,您可能需要调用TextBox4控件。
getman
返回一个列表,您希望它做什么?
foreach(string line in getman(TextBox3.Text))
{
TextBox4.AppendText(line);
}