none
[vb2008] 使用user setting來存放資料問題 RRS feed

  • 問題

  • Public Class Form1

        Protected Friend WebBrowser As New WebBrowser
        Private DataDate As Date = Nothing

        Sub Loading(ByRef [web] As WebBrowser)
            Do Until WebBrowser.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
            Loop
        End Sub

        Private Sub GetData()

            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All
     
                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If

                If Not DataDate = Nothing Then
                    ListBoxTitle.Items.Add(DataDate.ToString("yyyy年MM月dd日"))

                    DataDate = Nothing
                End If
            Next
        End Sub
        Private Sub LoadData()
      
            WebBrowser.Navigate("www.yahoo.com.hk")

            Loading(WebBrowser)

            GetData()
        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            LoadData()
        End Sub
    End Class

    我的問題是,,用不到setting 記錄ListBoxTitle的日期

    謝謝各位前輩指導

    2011年12月20日 上午 09:34

解答

  • Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ListBox1.SelectedItem= My.Settings.test
    End Sub

    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

    If CheckBox4.Checked = True Then
    My.Settings.test = ListBox1.SelectedItem
    ' My.Settings.Save()
    End If
    End Sub
    End Class


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 手指 2011年12月25日 上午 05:18
    2011年12月21日 上午 09:43
    版主
  •     '我試改了兩個 Sub, 請參考看看有無幫助:
    
        Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
    
            '?? 好奇:為什麼會在這個 CheckBox 事件內儲存設定??
    
            If CheckBox4.Checked = True Then
    
                'del: My.Settings.test = ListBox1.SelectedItem -> 如果沒有點選項目, 會傳回 Nothing, 可能就是所謂沒有紀錄的原因.
    
                '用一個 My.Settings.test 記錄所有項目以及選擇哪一個項目.
                With ListBox1.Items
                    Dim ItmStr(.Count) As String
    
                    ListBox1.Items.CopyTo(ItmStr, 0)        '目前所有的項目.
                    ItmStr(.Count) = ListBox1.SelectedIndex '另外最後再加上目前選擇的索引.
    
                    My.Settings.test = String.Join(";", ItmStr) '用";"做分隔字元組成1個字串.
                    My.Settings.Save()
                End With
    
            End If
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            Try '可能會有網路不通、不能載入網頁等問題
                LoadData()
            Catch ex As Exception
            End Try
    
            '依儲存的規則取回設定:
            MsgBox("!! 我是假設當沒有資料(例如當不能到指定的網頁取得資料)時才會載入之前存的設定, 若與原意不符, 請再依所需的邏輯修改, 否則項目會一直累加!!")
            If ListBox1.Items.Count = 0 Then
                Dim testAry() = Strings.Split(My.Settings.test, ";") '用";"做分隔字元
    
                If testAry.Length >= 2 Then     '之前有存資料
                    With ListBox1.Items
                        .AddRange(testAry)      '加入之前存的項目
                        .RemoveAt(.Count - 1)   '移除最後一個. 因為最後存的是選擇的索引
                    End With
                    Integer.TryParse(testAry(testAry.Length - 1), ListBox1.SelectedIndex) '選擇之前的選的項目
                End If
            End If
        End Sub
    
    

    • 已標示為解答 手指 2011年12月25日 上午 05:18
    2011年12月22日 上午 10:02
  •     Private Sub GetData()
    
            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All
    
                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If
    
                If Not DataDate = Nothing Then
                    Dim strDate As String = DataDate.ToString("yyyy年MM月dd日")
                    ListBox1.Items.Add(strDate)
    
                    Dim testAry() = Strings.Split(My.Settings.test, ";")
                    If strDate = testAry(0) Then
                        MessageBox.Show("today you have executed the program.")
                    End If
    
                    DataDate = Nothing
                End If
            Next
        End Sub
    

    • 已標示為解答 手指 2011年12月25日 上午 05:18
    2011年12月24日 上午 06:35
  •     Sub Loading(ByRef [web] As WebBrowser)
            Dim intSecond As Integer = 0
            Do Until WebBrowser.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
                System.Threading.Thread.Sleep(1000)
                intSecond += 1
                If intSecond > 30 Then
                    MessageBox.Show("can not connect network.")
                    Application.Exit()
                End If
            Loop
    
        End Sub
    

    VB 2005: Ping IP連線程式問題

    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/c0c86c5e-a800-4d79-bc1b-7e8d49f5096c

    偵測本機的網路連線狀態

    http://social.msdn.microsoft.com/Forums/zh-HK/232/thread/d6cd0989-7d9b-44f6-a445-0be4feee8d12

    • 已標示為解答 手指 2011年12月25日 上午 05:19
    2011年12月24日 上午 10:19
  •     Private Sub GetData()
    
            Dim intCount As Integer = 0
    
            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All
    
                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If
    
                If Not DataDate = Nothing Then
                    Dim strDate As String = DataDate.ToString("yyyy年MM月dd日")
                    ListBox1.Items.Add(strDate)
    
                    Dim testAry() = Strings.Split(My.Settings.test, ";")
                    If strDate = testAry(0) Then
                        MessageBox.Show("today you have exexuted the program.")
                    End If
    
                    DataDate = Nothing
                    intCount += 1
                End If
            Next
    
            If intCount = 0 Then
                MessageBox.Show("can not connect network.")
            End If
    
        End Sub
    

    • 已標示為解答 手指 2011年12月25日 上午 05:19
    2011年12月25日 上午 12:39

所有回覆

  • 你的 usersetting 相關程式碼寫在哪邊? 沒看到有 My.Settings... 的程式碼

    http://www.dotblogs.com.tw/bauann/archive/2008/10/12/5660.aspx


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已提議為解答 ChenBruceModerator 2011年12月21日 上午 03:26
    • 已取消提議為解答 手指 2011年12月21日 上午 09:05
    2011年12月20日 上午 10:08
    版主
  • 對不起.

     usersetting 相關程式碼"

    Public Class Form1

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
      ListBox1.Text = My.Settings.test
        End Sub

    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

            If CheckBox4.Checked = True Then
                My.Settings.test = ListBox1.Text
                My.Settings.Save()
            End If
        End Sub
    End Class

    2011年12月21日 上午 09:38
  • 記錄不到 ListBox1 的日期.

    謝謝各位前輩指導

     

    2011年12月21日 上午 09:38
  • Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ListBox1.SelectedItem= My.Settings.test
    End Sub

    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

    If CheckBox4.Checked = True Then
    My.Settings.test = ListBox1.SelectedItem
    ' My.Settings.Save()
    End If
    End Sub
    End Class


    歡迎參觀我的Blog.NET菜鳥自救會
    • 已標示為解答 手指 2011年12月25日 上午 05:18
    2011年12月21日 上午 09:43
    版主
  • 安你好

    同小歐大

    ListBox1.Text > 是回傳 ListBox 所選取的 Item 的文字

    請確認 是否有選取 

    參考 MSDN 

    ListBox.Text 屬性

    http://msdn.microsoft.com/zh-tw/library/system.windows.forms.listbox.text(v=VS.80).aspx

    2011年12月21日 上午 09:47
  • Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ListBox1.SelectedItem= My.Settings.test
    End Sub

    Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

    If CheckBox4.Checked = True Then
    My.Settings.test = ListBox1.SelectedItem
    ' My.Settings.Save()
    End If
    End Sub
    End Class


    歡迎參觀我的Blog.NET菜鳥自救會

    Public Class Form1

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LoadData()

            ListBox1.SelectedItem = My.Settings.test
        End Sub


        Protected Friend WebBrowser As New WebBrowser
        Private DataDate As Date = Nothing

        Sub Loading(ByRef [web] As WebBrowser)
            Do Until WebBrowser.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
            Loop
        End Sub

        Private Sub GetData()
     
            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All

                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If

                If Not DataDate = Nothing Then
                    ListBox1.Items.Add(DataDate.ToString("yyyy年MM月dd日"))

                    DataDate = Nothing
                End If
            Next
        End Sub
        Private Sub LoadData()

            WebBrowser.Navigate("www.yahoo.com.hk")

            Loading(WebBrowser)

            GetData()
        End Sub

        Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged

            If CheckBox4.Checked = True Then
                My.Settings.test = ListBox1.SelectedItem
                My.Settings.Save()
            End If
        End Sub
    End Class

    都是不行? 都是沒有 記錄,

    我先開程式,讓程式 記錄網頁上的 日期,關了 程式,

    再關了網路,再開程式,,但是沒有記錄.

    謝謝前輩指導


    是不是有 地方 寫錯了?
    • 已編輯 手指 2011年12月21日 上午 10:34
    2011年12月21日 上午 10:34
  • 什麼叫做沒有紀錄?

    CheckBox4_CheckedChanged 有執行到此事件嗎?

    程式有執行到 My.Settings.test = ListBox1.SelectedItem 嗎?

    請下中斷點,去看有 My.Settings.test 的地方

     

    請嘗試去偵錯,你才有進步的機會


    歡迎參觀我的Blog.NET菜鳥自救會
    2011年12月21日 上午 11:47
    版主
  • 使用user setting , 是不是 可以 把 文字 記錄 下

    再 開程式 時,,文字 都會 在

    但是, 關掉了 網路,,再 開程式..沒有顯示 日期?

    前輩指導一下^^

    2011年12月21日 下午 12:07
  • 應該 是有 記錄下來

    但是 再開啟 程式 時,ListBox1 沒有 顯示 日期

    原因 是在那?

    前輩指導

    2011年12月21日 下午 12:18
  • 沒有 記錄 顯示 日期 問題

    前輩指導一下

    2011年12月21日 下午 01:19
  • 安你好

    話說你是按錯,PO太多次 ??

    建議利用 小歐大 PO給你的 程式碼開一個新專案作測試,是可行的。

    是否自行測試過了 ?

    請PO出  ListBox1 顯示日期的那段程式

    另猜測 ListBox1 事紀錄一個 Item 集合 ,你是要保留整個集合 的值 ?

    還是單一 ListBox1.Item  最後選取的值

    2011年12月22日 上午 02:06
  • ListBox1 事紀錄一個 Item 集合 ,要保留整個集合 的值

    和 單一 ListBox1.Item  最後選取的值

    程式碼的寫法不同?

    2011年12月22日 上午 04:24
  • 安你好

    直接回答

    當然不同 #_#

    2011年12月22日 上午 06:12
  •     '我試改了兩個 Sub, 請參考看看有無幫助:
    
        Private Sub CheckBox4_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox4.CheckedChanged
    
            '?? 好奇:為什麼會在這個 CheckBox 事件內儲存設定??
    
            If CheckBox4.Checked = True Then
    
                'del: My.Settings.test = ListBox1.SelectedItem -> 如果沒有點選項目, 會傳回 Nothing, 可能就是所謂沒有紀錄的原因.
    
                '用一個 My.Settings.test 記錄所有項目以及選擇哪一個項目.
                With ListBox1.Items
                    Dim ItmStr(.Count) As String
    
                    ListBox1.Items.CopyTo(ItmStr, 0)        '目前所有的項目.
                    ItmStr(.Count) = ListBox1.SelectedIndex '另外最後再加上目前選擇的索引.
    
                    My.Settings.test = String.Join(";", ItmStr) '用";"做分隔字元組成1個字串.
                    My.Settings.Save()
                End With
    
            End If
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    
            Try '可能會有網路不通、不能載入網頁等問題
                LoadData()
            Catch ex As Exception
            End Try
    
            '依儲存的規則取回設定:
            MsgBox("!! 我是假設當沒有資料(例如當不能到指定的網頁取得資料)時才會載入之前存的設定, 若與原意不符, 請再依所需的邏輯修改, 否則項目會一直累加!!")
            If ListBox1.Items.Count = 0 Then
                Dim testAry() = Strings.Split(My.Settings.test, ";") '用";"做分隔字元
    
                If testAry.Length >= 2 Then     '之前有存資料
                    With ListBox1.Items
                        .AddRange(testAry)      '加入之前存的項目
                        .RemoveAt(.Count - 1)   '移除最後一個. 因為最後存的是選擇的索引
                    End With
                    Integer.TryParse(testAry(testAry.Length - 1), ListBox1.SelectedIndex) '選擇之前的選的項目
                End If
            End If
        End Sub
    
    

    • 已標示為解答 手指 2011年12月25日 上午 05:18
    2011年12月22日 上午 10:02
  • 嗯.謝謝你的回覆.

    Ader.Chen 前輩 謝謝你
     
    現在 已經 做到了 顯示 網頁的日期  和  記錄 網頁的日期
     
     
    最後,要怎樣寫.判斷 今天 開過程式,如果 開過程式,就會 關上
     
    If ListBox1.SelectedItem = ListBox1.SelectedItem Then
                Me.Close()
            End If
     
    我寫了 這樣,不過 好像 錯
     
     
    2011年12月23日 上午 11:02
  • If ListBox1.SelectedItem = ListBox1.SelectedItem Then

    ListBox1.SelectedItem跟自已比較??


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/
    2011年12月23日 下午 01:19
  • 我想 做到 每一天,只可以 開一次程式

    現在 已經 做到了 顯示 網頁的日期  和  記錄 網頁的日期

    不是跟自已比較?那我要怎樣寫?

    前輩指導


    • 已編輯 手指 2011年12月23日 下午 01:25
    2011年12月23日 下午 01:25
  • Imports System.Net.Mail

    Public Class Form1

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Try
                LoadData()
            Catch ex As Exception
            End Try

            If ListBox1.Items.Count = 0 Then
                Dim testAry() = Strings.Split(My.Settings.test, ";") 
                If testAry.Length >= 2 Then     
                    With ListBox1.Items
                        .AddRange(testAry)      
                        .RemoveAt(.Count - 1)   
                    End With
                    Integer.TryParse(testAry(testAry.Length - 1), ListBox1.SelectedIndex) 
                End If
            End If

            With ListBox1.Items
                Dim ItmStr(.Count) As String

                ListBox1.Items.CopyTo(ItmStr, 0)        
                ItmStr(.Count) = ListBox1.SelectedIndex

                My.Settings.test = String.Join(";", ItmStr) 
                My.Settings.Save()
            End With

        End Sub

        
        Protected Friend WebBrowser As New WebBrowser
        Private DataDate As Date = Nothing
      
        Sub Loading(ByRef [web] As WebBrowser)
            Do Until WebBrowser.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
            Loop
        End Sub

        Private Sub GetData()
     
            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All
     
                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If

                If Not DataDate = Nothing Then
                    ListBox1.Items.Add(DataDate.ToString("yyyy年MM月dd日"))
        
                    DataDate = Nothing
                End If
            Next
        End Sub
        Private Sub LoadData()
            WebBrowser.Navigate("www.yahoo.com.hk")

            Loading(WebBrowser)
        
            GetData()
        End Sub

    End Class


    在前輩的指導,已經 做到了 顯示 網頁的日期  和  記錄 網頁的日期,謝謝

    另外,我想問 判斷 今天 開過程式,應該怎樣寫?

    2011年12月24日 上午 05:30
  •     Private Sub GetData()
    
            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All
    
                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If
    
                If Not DataDate = Nothing Then
                    Dim strDate As String = DataDate.ToString("yyyy年MM月dd日")
                    ListBox1.Items.Add(strDate)
    
                    Dim testAry() = Strings.Split(My.Settings.test, ";")
                    If strDate = testAry(0) Then
                        MessageBox.Show("today you have executed the program.")
                    End If
    
                    DataDate = Nothing
                End If
            Next
        End Sub
    

    • 已標示為解答 手指 2011年12月25日 上午 05:18
    2011年12月24日 上午 06:35
  • Joe Hung前輩謝謝你

    之前 Ader.Chen前輩 說過
    若使用者把網路線拔掉就有問題了, 可能要再加個若網路無連線(不能取得網路時間伺服器的日期)時也不讓執行程式

     這一個部分,我要怎樣寫?

    2011年12月24日 上午 07:58
  •     Sub Loading(ByRef [web] As WebBrowser)
            Dim intSecond As Integer = 0
            Do Until WebBrowser.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
                System.Threading.Thread.Sleep(1000)
                intSecond += 1
                If intSecond > 30 Then
                    MessageBox.Show("can not connect network.")
                    Application.Exit()
                End If
            Loop
    
        End Sub
    

    VB 2005: Ping IP連線程式問題

    http://social.msdn.microsoft.com/Forums/zh-TW/232/thread/c0c86c5e-a800-4d79-bc1b-7e8d49f5096c

    偵測本機的網路連線狀態

    http://social.msdn.microsoft.com/Forums/zh-HK/232/thread/d6cd0989-7d9b-44f6-a445-0be4feee8d12

    • 已標示為解答 手指 2011年12月25日 上午 05:19
    2011年12月24日 上午 10:19
  • Joe Hung前輩
     
    我測試不到?我把網路線拔掉了,還可以執行程式.
     
    Protected Friend WebBrowser As New WebBrowser
    Sub Loading(ByRef [web] As WebBrowser)
            Dim intSecond As Integer = 0
            Do Until WebBrowser.ReadyState = WebBrowserReadyState.Complete
                Application.DoEvents()
                System.Threading.Thread.Sleep(1000)
                intSecond += 1
                If intSecond > 30 Then
                    MessageBox.Show("can not connect network.")
                    Application.Exit()
                End If
            Loop
        End Sub
    2011年12月24日 下午 12:42
  •     Private Sub GetData()
    
            Dim intCount As Integer = 0
    
            For Each [HtmlElement] As HtmlElement In WebBrowser.Document.All
    
                If [HtmlElement].TagName = "SPAN" And IsDate([HtmlElement].OuterText) Then
                    DataDate = CDate([HtmlElement].OuterText)
                End If
    
                If Not DataDate = Nothing Then
                    Dim strDate As String = DataDate.ToString("yyyy年MM月dd日")
                    ListBox1.Items.Add(strDate)
    
                    Dim testAry() = Strings.Split(My.Settings.test, ";")
                    If strDate = testAry(0) Then
                        MessageBox.Show("today you have exexuted the program.")
                    End If
    
                    DataDate = Nothing
                    intCount += 1
                End If
            Next
    
            If intCount = 0 Then
                MessageBox.Show("can not connect network.")
            End If
    
        End Sub
    

    • 已標示為解答 手指 2011年12月25日 上午 05:19
    2011年12月25日 上午 12:39