2011-07-03 16 views
0

私は2つのコンボボックスと2つのテキストボックスを持つdatagridviewを持つプログラムを持っています。最初のコンボボックスにはOIDが含まれ、他のコンボボックスにはSNMP操作が含まれます(GetGetNext)。 ここでは、OIDの説明(たとえば、sysDescrの場合は1.3.6.1.2.1.1.1.0など)を含むOIDのComboboxと、新しいComboBoxの値を含むComboBoxを追加したいとします。 OID)は、ユーザーが最初のコンボボックスでOIDを変更すると自動的に変更されます。出来ますか?はいの場合はどうですか? DataGridViewコンボボックス

End Sub 

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    DataGridView1.Columns.Add("NameOne", "Column One") 
    DataGridView1.Columns.Add("NameTwo", "Column Two") 

    Dim dataGridRow As New DataGridViewRow() 
    Dim cells As DataGridViewCell() = New DataGridViewCell(1) {} 
    Dim txt1A As New DataGridViewTextBoxCell() 
    Dim txt1B As New DataGridViewTextBoxCell() 
    txt1A.Value = "Host" 
    txt1B.Value = "115.186.118.130" 
    dataGridRow.Cells.Add(txt1A) 
    txt1A.[ReadOnly] = True 
    dataGridRow.Cells.Add(txt1B) 
    dataGridRow.Height = 20 
    DataGridView1.Rows.Add(dataGridRow) 

    dataGridRow = New DataGridViewRow() 
    cells = New DataGridViewCell(1) {} 

    Dim txt2A As New DataGridViewTextBoxCell() 
    Dim cbo1 As New DataGridViewComboBoxCell() 

    cbo1.Items.Add("1.3.6.1.2.1.1.1.0") 
    cbo1.Items.Add("1.3.6.1.2.1.1.2.0") 
    cbo1.Items.Add("1.3.6.1.2.1.1.3.0") 
    cbo1.Items.Add("1.3.6.1.2.1.1.4.0") 
    cbo1.Items.Add("1.3.6.1.2.1.1.5.0") 

    cbo1.Value = cbo1.Items(0) 

    cbo1.[ReadOnly] = False 
    txt2A.Value = "OIDs" 
    dataGridRow.Cells.Add(txt2A) 
    txt2A.[ReadOnly] = True 
    dataGridRow.Cells.Add(cbo1) 
    dataGridRow.Height = 20 
    DataGridView1.Rows.Add(dataGridRow) 

    Dim requestOid() As String 
    requestOid = New String() {cbo1.Selected} 

    dataGridRow = New DataGridViewRow() 
    cells = New DataGridViewCell(1) {} 
    Dim txt3A As New DataGridViewTextBoxCell() 
    Dim cbo2 As New DataGridViewComboBoxCell() 

    cbo2.Items.Add("Get") 
    cbo2.Items.Add("GetNext") 
    cbo2.Value = cbo2.Items(0) 

    cbo2.[ReadOnly] = False 
    txt3A.Value = "SNMP Operation" 
    dataGridRow.Cells.Add(txt3A) 
    txt3A.[ReadOnly] = True 
    dataGridRow.Cells.Add(cbo2) 
    dataGridRow.Height = 20 
    DataGridView1.Rows.Add(dataGridRow) 

    dataGridRow = New DataGridViewRow() 
    cells = New DataGridViewCell(1) {} 
    Dim txt4A As New DataGridViewTextBoxCell() 
    Dim txt4B As New DataGridViewTextBoxCell() 
    txt4A.Value = "Community String" 
    txt4B.Value = "public" 
    dataGridRow.Cells.Add(txt4A) 
    dataGridRow.Cells.Add(txt4B) 
    dataGridRow.Height = 20 
    DataGridView1.Rows.Add(dataGridRow) 
End Sub 

Private Sub dataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As DataGridViewEditingControlShowingEventArgs) 
    Dim comboControl As DataGridViewComboBoxEditingControl = TryCast(e.Control, DataGridViewComboBoxEditingControl) 
    If comboControl IsNot Nothing Then 
     ' Set the DropDown style to get an editable ComboBox 
     If comboControl.DropDownStyle <> ComboBoxStyle.DropDown Then 
      comboControl.DropDownStyle = ComboBoxStyle.DropDown 
     End If 
    End If 
End Sub 

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click 

    Dim result As Dictionary(Of Oid, AsnType) 

    Dim cbo1 As New DataGridViewComboBoxCell() 


    Dim txt1B As New DataGridViewTextBoxCell() 
    txt1B.Value = "203.81.211.117" 

    Dim host As String 
    Dim community As String 
    host = DataGridView1.Rows(0).Cells(1).Value.ToString 
    community = DataGridView1.Rows(3).Cells(1).Value.ToString 
    Dim txt4B As New DataGridViewTextBoxCell() 
    txt4B.Value = "public" 
    Dim snmp As New SimpleSnmp 
    snmp = New SimpleSnmp(DataGridView1.Rows(0).Cells(1).Value.ToString, DataGridView1.Rows(3).Cells(1).Value.ToString) 

    'abc.Text = txtsnmpaction.SelectedItem 
    result = snmp.Get(SnmpVersion.Ver1, New String() {DataGridView1.Rows(1).Cells(1).Value.ToString()}) 

    'result = snmp.GetNext(SnmpVersion.Ver1, requestoid) 
    'If (txtsnmpaction = "GetBulk") 
    'result = snmp.GetBulk(New String() {".1.3.6.1.2", ".1.3.6.1.3"}) 
    ' End If 
    If Not snmp.Valid Then 

     MessageBox.Show("Invalid hostname/community") 

    End If 
    If result IsNot Nothing Then 
     Dim kvp As KeyValuePair(Of Oid, AsnType) 
     For Each kvp In result 
      MessageBox.Show(kvp.Key.ToString) 
      MessageBox.Show(SnmpConstants.GetTypeName(kvp.Value.Type)) 
      MessageBox.Show(kvp.Value.ToString()) 

     Next kvp 
    Else 
     MessageBox.Show("No results received") 
    End If 

End Sub 
DataGridView1.CellContentClick

輸入システム 輸入SnmpSharpNet

パブリック・クラスのForm1 プライベートサブDataGridView1_CellContentClick(System.ObjectのとしてByVal送信者、System.Windows.Forms.DataGridViewCellEventArgsとしてByVal e)のハンドル:ここ コードです

終了クラス

答えて

0

私はSNMPオペレーションを読み取り専用のテキストフィールドにし、プログラムで設定します。 DataGridView1.CellValueChangedイベントを処理します。

EDIT:SNMP操作ではなく説明を変更します。

Private Sub DataGridView1_CellValueChanged(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellValueChanged 
    If e.ColumnIndex = 3 Then 
     Dim Row As DataGridViewRow = DataGridView1.Rows(e.RowIndex) 
     Dim Description As String = Nothing 
     Select Case Row.Cells(3).Value 
      Case "1.3.6.1.2.1.1.1.0" : Description = "sysDescr" 
      ... 
     End Select 
     Row.Cells(5).Value = Description ' Change (5) to description column index. 
    End If 
End Sub 
+0

は手-E-食品@ ..私はちょうど私の最初のcombobox..now横にコンボボックスを追加している私が欲しいのは(OIDの記述が含まれている)第コンボボックスの値が自動的に変更するということです最初のCOmboboxのOIdユーザーによる変更..! – Madiha

+0

私はこの行を理解していません ケース "1.3.6.1.2.1.1.1.0":Snmp = "Get" ..ユーザーが異なるOIDを選択したときに2番目のコンボボックスの値を変更するためにCase文を使用できます実行時に? – Madiha

+0

そうです。選択したOIDに基づいて、SNMPを判別できます。それはあなたが後にしていること、または私が誤解したことですか? OIDが何であるかは実際にはわかりません。このコードを使用する場合は、SNMPフィールドをコンボボックスではなくテキストボックスにします。フィールドは読み取り専用なので、ユーザーはコンボボックスを開くことはできません。それは不必要な複雑さです。 –

関連する問題