2013-01-06 65 views
0

我正在开发一个新项目,而且我目前陷入困境。我正在使用ListBox添加记录器。VB日志Web浏览器状态

在我的项目中,我使用WebBrowser,并且每次页面加载时都想添加到日志中。我试图做这样的:

If WebBrowser1.StatusText.ToString = "Klar" Then 
     Label14.Text = "Success" 
    End If 
    If Label14.Text = "Success" Then 
     Logger.Items.Add("> Successfully loaded") 
    End If 

“KLAR”转换为“完成”(瑞典)

但状态更新所有的时间和垃圾邮件“完成/ KLAR”所以我的项目记录器添加了5+倍的状态变化(我改变了页面)。

所以我正在寻找一些方法来只写一次,也许检查它是否已经被添加到项目befor。我在计时器中使用它,所以它会在日志中多次添加,但如果日志中的最后一项是相同的,我只希望它被添加一次。

任何人都知道这是如何完成的?

感谢您的帮助! PS。我会在早上看看这个主题,但我会很感激任何帮助,我可以得到:)

回答

1

我为你做了一个例子,很容易遵循。只需改变你需要的东西。您可以使用“包含函数”获取您需要检查项目是否存在于您的列表框控件中。

Public Class Form1 

'Global Variable to hold your string(text)' 
Private strText As String = "" 

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load 
    Dim myArray() As String = {"Car", "Truck", "Motorcycle"} 
    ListBox1.Items.AddRange(myArray) 
End Sub 

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 

    'First whatever you are sending to the listbox you need to set it to a variable' 
    'For example I want to see if Motorcycle exists in the listbox so I set my variable' 
    strText = "Motorcycle" 

    'Now lets check if this exists in our listbox!' 
    If ListBox1.Items.Contains(strText) Then 
     'We can even select the item that is found' 
     ListBox1.SelectedItem = strText 

     MsgBox("Listbox contains: " & strText) 'Or do what you want here' 

    Else 
     MsgBox("NO FOUND ITEM") 
    End If 

End Sub 
End Class 

可以忽略负载为我所用这只是用于测试...也只是把这个代码,你把它插入你的数据(它插入到你的列表框之前,如果未在列表框中,继续添加你想要的东西。让我知道它是如何工作的你!

谢谢!

+0

感谢您的帮助!你的解决方案确实有帮 所有的Contains函数都会告诉我变量(strText)是否存在于我的Listbox中。 而且我想多次添加变量。但每次只有一次。 但是,由于你的方式,我看到了不同的东西,并能够找到适合我需求的感觉。我会补充我如何最终作为答案。 (我希望多数民众赞成,林新将在这里) 感谢您花时间帮助我! :) – David

+0

您的欢迎,请检查答案,如果它解决了您的问题。 – Codexer

0

功能真正地没有适合我想要的东西的容器。我希望能够加入同一个变量/ item/string多于一次,仍然只能在记录器的行中添加一次。

因此,因为我将它用作记录器,所以我希望它自动选择一个新项目,因为我希望它“跟随”最新的项目。

所以我检查是否选中的项目等于我的变量是假的。然后我将该变量添加到我的记录器/列表框中。

SuccessLoad = "> Successfully loaded" 

    If WebBrowser1.StatusText.ToString = "Done" Then 
     If Logger.SelectedItem.Equals(SuccessLoad) = False Then 'adds if not selected 
      Logger.Items.Add(SuccessLoad) 
      Logger.SelectedIndex = Logger.Items.Count - 1 'selects the variable 
     End If 
    End If 
+0

我回答你的问题,你要求回答什么,它做你需要它做什么..你说你只想要它添加一次..你是什么意思加入变量不止一次,但只添加它一次到你的列表框中,除非你再澄清一点,否则这没什么意义。如果您需要其他帮助,请提出另一个问题,以便其他人可以帮助您......谢谢!〜 – Codexer

+0

你好,我可以理解这种困惑..我没有解释得那么好。那么,我正在为我的程序构建一个记录器,它将在日志中添加字符串/变量。所以我可以很容易地看到实际发生的事情。因此,让我们说,即时通讯使用这个垃圾邮件在网站上的访问者(我不)我按下开始,然后每次加载页面,我希望它添加到日志,它完成然后StatusText =“完成”。如果它正在运行,这个项目将每隔10秒添加一次。因此,检查它是否已经包含无法工作,因为我想要它/知道它已经包含。我不希望它被添加更多然后它被添加。 – David

+0

所以我现在所做的只会工作,如果我将添加一个新的字符串/变量的日志befor 10秒,然后“如果statustext =”完成“变量/字符串将被添加一次,所以我的答案仍然是一个” hotfix“来解决我的问题,我可以使用contains finstion,但是我将不得不做类似于”如果它包含少于3次“,然后每次再次添加变量/字符串时将+1加到”3“。你知道更好的方法来做到这一点我会很高兴看到它:)感谢您的帮助和时间,真的很感激它!:) – David