Html vb.net从字符串逐行到列表框
我做了一个Html vb.net从字符串逐行到列表框,html,vb.net,string,listbox,html-agility-pack,Html,Vb.net,String,Listbox,Html Agility Pack,我做了一个webrequest来获取一个网站的htmlcode,然后提取 与htmlagilitypack 像这样: 'webrequest' Dim rt As String = TextBox1.Text Dim wRequest As WebRequest Dim WResponse As WebResponse Dim SR As StreamReader wRequest = FtpWebRequest.Create(rt) WR
webrequest
来获取一个网站的htmlcode,然后提取
与htmlagilitypack
像这样:
'webrequest'
Dim rt As String = TextBox1.Text
Dim wRequest As WebRequest
Dim WResponse As WebResponse
Dim SR As StreamReader
wRequest = FtpWebRequest.Create(rt)
WResponse = wRequest.GetResponse
SR = New StreamReader(WResponse.GetResponseStream)
rt = SR.ReadToEnd
TextBox2.Text = rt
'htmlagility to extract the links'
Dim htmlDoc1 As New HtmlDocument()
htmlDoc1.LoadHtml(rt)
Dim links = htmlDoc1.DocumentNode.SelectNodes("//*[@id='catlist-listview']/ul/li/a")
Dim hrefs = links.Cast(Of HtmlNode).Select(Function(x) x.GetAttributeValue("href", ""))
'join the `hrefs`, separated by newline, into one string'
textbox3.text = String.Join(Environment.NewLine, hrefs)
http://wantedlink1
http://wantedlink2
http://wantedlink3
http://wantedlink4
http://wantedlink5
http://wantedlink6
http://wantedlink7
链接如下所示:
'webrequest'
Dim rt As String = TextBox1.Text
Dim wRequest As WebRequest
Dim WResponse As WebResponse
Dim SR As StreamReader
wRequest = FtpWebRequest.Create(rt)
WResponse = wRequest.GetResponse
SR = New StreamReader(WResponse.GetResponseStream)
rt = SR.ReadToEnd
TextBox2.Text = rt
'htmlagility to extract the links'
Dim htmlDoc1 As New HtmlDocument()
htmlDoc1.LoadHtml(rt)
Dim links = htmlDoc1.DocumentNode.SelectNodes("//*[@id='catlist-listview']/ul/li/a")
Dim hrefs = links.Cast(Of HtmlNode).Select(Function(x) x.GetAttributeValue("href", ""))
'join the `hrefs`, separated by newline, into one string'
textbox3.text = String.Join(Environment.NewLine, hrefs)
http://wantedlink1
http://wantedlink2
http://wantedlink3
http://wantedlink4
http://wantedlink5
http://wantedlink6
http://wantedlink7
现在我想将字符串中的每一行添加到listbox,而不是textbox每行一项
大约有400个
http://wantedlink
使用列表框的items集合的AddRange方法,并将文本框的lines数组传递给它
提示:这是一行代码。没关系,我找到了答案
Dim linklist = String.Join(Environment.NewLine, hrefs)
Dim parts As String() = linklist.Split(New String() {Environment.NewLine},
StringSplitOptions.None)
ListBox1.Items.AddRange(parts)
这会将所有400个链接添加到列表框
hrefs
,您的案例中已经包含了IEnumerable(字符串)
。将它们连接成一条线,然后再次拆分以使其正常工作是很奇怪的。由于String.Split()
返回数组,可能您只需将hrefs
投影到数组中即可使.AddRange()
正常工作:
ListBox1.Items.AddRange(hrefs.ToArray())
这些信息是以这种格式出现在文本框中的吗?您尝试过什么?将集合绑定到列表框通常非常简单…@CharlesMay是的,它在textbox中采用这种格式我想删除我已经尝试过的textbox1.items.addrange(textbox3.lines)它可以工作,但我想去掉textbox删除整个textbox我只想要listbox将其从其父容器的控件集合中删除
me.Controls.Remove(YourTextBox)
然后我想做一个YourTextBox=Nothing
me,在这种情况下是表单。根据您的文本框所在的位置,您可能必须点入其他容器。我很好奇,为什么您不在开始时填充列表框,而不是在稍后删除另一个控件。如果此答案无法解决您试图执行的操作,请返回并根据您更改的内容编辑您的问题来结束本主题的整个过程。您最初询问如何将多行文本框的内容添加到列表框中,后来您表示知道如何添加,但希望删除该文本框。现在,在最后一条评论中,您使用的是一个术语一个接一个,因此我不知道这是否对您的需求有任何帮助。