2

私が使用するたびに:

form1.show()

私は得るReference to a non-shared member requires an object reference.

それは今までうまくいきました。何が問題なのかわかりません。

また、「スタートアップフォーム」ドロップダウンメニューにも表示されません。

編集:コード全体が含まれています。

Private _cpuid As String


///Here is the generated constructor

    Sub New()
        ' TODO: Complete member initialization 
    End Sub



    Public ReadOnly Property cpuid As String
        Get
            Return _cpuid
        End Get
    End Property

    Private _pc As PerformanceCounter
    Private _currentvalue As Integer = 0
    Public Sub New(ByVal cpuid As String)
        InitializeComponent()
        _cpuid = cpuid
        _pc = New PerformanceCounter("Processes", "CPU Usage (%)", cpuid)
        Me.ProgressBar1.Maximum = 100
        Me.ProgressBar1.Minimum = 0

        Me.Label1.Text = "CPU" & cpuid
    End Sub
    Public Sub callperformancecounter()
        _currentvalue = CInt(_pc.NextValue())
        Me.ProgressBar1.Value = _currentvalue
        Me.label2.text = _currentvalue & " %"


    End Sub
4

1 に答える 1

3

プロジェクトで form1 という名前のフォームを想定すると、そのインスタンスを作成する必要があります。

Dim frm as New Form1    ' creates the instance the msg is talking about

frm.Show

新しい情報を編集...

コンストラクターをオーバーライドした後、使用していません。Form Load イベントで CPU セットアップを行います (コードを移動するだけです)。Sub New をこれに修正します。

Sub New(cpuID As String)
    ' TODO: Complete member initialization 

     InitializeComponent()      ' the TODO is telling you this is needed

     _cpuID = cpuID
End Sub

フォームの読み込みは、コードの残りの部分になります。

  _pc = New PerformanceCounter("Processes", "CPU Usage (%)", cpuid)
  Me.ProgressBar1.Maximum = 100
  Me.ProgressBar1.Minimum = 0

  Me.Label1.Text = "CPU" & cpuid

cpuid を New に渡すか、Property を設定する場合は、cpuid をプロシージャに渡す必要はありません (これまでのところ、両方のメソッドは実際には必要ありません)。

ここで、フォームを表示する方法は次のとおりです。

  Dim frm as Form1                   ' declare what frm is

  frm = New Form1(cpuname)           ' this 'NEW' triggers 'Sub New'

  frm.Show
于 2013-09-25T14:06:53.937 に答える