2011-08-25 27 views
1

當我將Set_Symbol()放入我的代碼中時,它給了我兩個錯誤。VB.NET代碼錯誤:「參數未指定參數」

錯誤:關於 '私人小組Set_Symbol(發送者爲對象,例如作爲System.EventArgs)' 的參數 'e' 的未指定

爭。 d:\ documents \ visual studio 2010 \ Projects \ Math Game \ Math Game \ frmindex.vb

未爲'Private Sub Set_Symbol(sender As Object,e As System.EventArgs)'的參數'sender'指定的參數。 d:\文檔\ Visual Studio 2010的\項目\數學遊戲\數學遊戲\ frmindex.vb

這是Set_Symbol是什麼:

Private Sub Set_Symbol(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
    Handles rbnaddition.Click, rbnsubtraction.Click, rbnmultiplication.Click, rbndivision.Click 
     Dim rbn As RadioButton 
     rbn = CType(sender, RadioButton) 
     symbol = rbn.Tag 
    End Sub 

這是我如何把它稱爲:

Private Sub frmindex_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    symbolrbn(0) = rbnaddition 
    symbolrbn(1) = rbnsubtraction 
    symbolrbn(2) = rbnmultiplication 
    symbolrbn(3) = rbndivision 
    Set_Symbol() 
    Populate() 
End Sub 

爲什麼拋出這個錯誤?

+0

你真的手動調用呢?你能告訴我們你放置的代碼嗎? – BoltClock

+0

注意'Sub'定義需要兩個參數'sender'和'e',並且在'Load'期間你沒有提供它。 – ja72

回答

2

Set_Symbol() in frmindex_Load將不會編譯,因爲該方法有兩個參數,但您試圖不帶參數地調用它。

您不應該將事件處理程序代碼與手動調用的代碼混合使用,因爲它們是兩個不同的東西。如果您需要從事件處理程序調用方法以及從其他位置手動調用方法,則應提供一個方法,該方法使用適當的參數(如果不需要,也可以不使用)並從兩個位置調用該方法。

如果你確實想爲每個RadioButton設置Tag,你應該提供一個不帶參數的方法,併爲每個RadioButton設置Tag屬性。

我假設處理程序應該讀取標記而不是設置它。

+0

...並且從它的外觀來看,手動調用在frmindex_Load()方法中根本不是必需的,因爲它是一堆其他事物的事件處理程序。 – BoltClock

+0

事實上,沒有例外,這是誤導。編譯器會抱怨。 –

+0

@Konrad:相應調整。 –

1

你應該叫Set_Symbol(sender,e),使其編譯

+2

但是什麼?表單的Load事件的'(sender,e)'似乎與'Set_Symbol'處理程序無關。 – BoltClock

+0

如果您直接調用事件處理程序,則應設置相同的參數和事件處理程序。例如,您確實應該調用Set_Symbol(rbnaddition,EventArgs.Empty)。 –

0

通知的Sub定義需要兩個參數sendere,你有沒有在Load所提供的任何它。幸運的是,如果您將事件鏈接起來,則已經定義了sendere。因此,您可以直接處理Load事件(如單選按鈕操作),或者使用兩個參數調用它。

Private Sub Set_Symbol(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
Handles rbnaddition.Click, rbnsubtraction.Click, rbnmultiplication.Click, _ 
rbndivision.Click, MyBase.Load 
    Dim rbn As RadioButton 
    rbn = CType(sender, RadioButton) 
    If rbn IsNot Nothing then 
     symbol = rbn.Tag 
    End If 
End Sub 

Private Sub frmindex_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 
Handles MyBase.Load 
    symbolrbn(0) = rbnaddition 
    symbolrbn(1) = rbnsubtraction 
    symbolrbn(2) = rbnmultiplication 
    symbolrbn(3) = rbndivision 
    Set_Symbol(rbnaddition, Nothing)   'Default to '+' symbol 
    Populate() 
End Sub 
-1
Imports System.Data.SqlClient 

Public Class Form1 
    'Dim con As New SqlConnection("Data Source=admin-pc\sqlexpress;Initial Catalog=employee;Integrated Security=True") 
    Dim con As SqlConnection 
    Dim cmd As SqlCommand 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
     con = New SqlConnection("Data Source=admin-pc\sqlexpress;Initial Catalog=employee;Integrated Security=True") 
     con.Open() 
     cmd = New SqlCommand("insert into emp_table values('" &TextBox1.Text "')",con) 

     cmd.ExecuteNonQuery() 
     con.Close() 

    End Sub 
End Class 
相關問題