2012年11月8日 星期四

[學習] Controls.Find with Option Strict On


DirectCast


原始為---
Option Strict Off
            For i As Integer = 1 To 10
                Dim C As TextBox = Me.Controls.Find("TextBox" & i, True)(0)
                If i = 10 Then
                    C.Text = arr(i + 4).ToString
                Else
                    C.Text = arr(i + 1).ToString
                End If
            Next
        End If

更改為---

Option Strict On

會發生 Error 隱含轉換
錯誤1 Option Strict On 不允許從 'System.Windows.Forms.Control' 到 'System.Windows.Forms.TextBox' 的隱含轉換。
錯誤2 Option Strict On 不允許從 'System.Windows.Forms.Control' 到 'System.Windows.Forms.ComboBox' 的隱含轉換。
錯誤3 Option Strict On 不允許從 'System.Windows.Forms.Control' 到 'System.Windows.Forms.DataGridView' 的隱含轉換。

故改為---

For i As Integer = 1 To 10
      Dim C As TextBox = DirectCast(Me.Controls.Find("TextBox" & i, True)(0), TextBox)                     
           If i = 10 Then
               C.Text = arr(i + 4).ToString
           Else
               C.Text = arr(i + 1).ToString
           End If
Next

錯誤4 Option Strict On 不允許從 'Object' 到 'String' 的隱含轉換

DataGridView1.Rows(i).Cells(2).Value = _
Trim(DataGridView1.Rows(i).Cells(2).Value) + Trim(DataGridView1.Rows(i).Cells(3).Value)

故改為---

DataGridView1.Rows(i).Cells(2).Value = _
Trim(DataGridView1.Rows(i).Cells(2).Value.ToString) + Trim(DataGridView1.Rows(i).Cells(3).Value.ToString)

沒有留言:

張貼留言