1

そのため、ラベルをクリックせずにラベルにメッセージを表示できるようにしたいと考えています。

    public void servicestatus_Click_1(object sender, EventArgs e)
    {
        var mavbridgeservice = new System.ServiceProcess.ServiceController("MavBridge");

        if (mavbridgeservice.Status == ServiceControllerStatus.Running)
        {
            servicestatus.Text = ("The service is running!");
        }

        else
        {
            servicestatus.Text = "The service is stopped!";
        }  
    }

(null, null) を (オブジェクト送信者、EventArgs e) に入れるようにしましたが、エラーが発生しました。理由はわかりません。そこにある私のコードには、クリックとの相関関係はありませんでした。

4

2 に答える 2

5

サーバーのステータスを表示したいのは明らかです。

しかし、ユーザーが更新を要求したときに変更したくない場合は、自動的に変更する必要がありますか?

2 つのオプションがあります。編集:オプション#1が機能しないことがわかりました。以下のタイマーオプションが必要になります。オプション #1 を削除しました

オプション #2 プログラム外で変更された場合は、ユーザーを更新する速度に応じて 1 秒または 2 秒ごとに確認するタイマーを追加し、その間にラベルを設定するコードを追加できます。

    public Timer t = new Timer();

次に、メイン フォーム コンストラクターで、InitializeComponent(); の下にあります。これを行に追加

    t.Interval = 1000;
    t.Tick+=new EventHandler(t_Tick);
    t.Enable=true;

timer.Tick イベントでコードを実行して、ステータスを判断します (現在、ラベルのクリック イベントにあるもの)。

    void t_Tick(object sender, EventArgs e)
    {
       var mavbridgeservice = new System.ServiceProcess.ServiceController("MavBridge");

        if (mavbridgeservice.Status == ServiceControllerStatus.Running)
        {
            servicestatus.Text = ("The service is running!");
        }

        else
        {
            servicestatus.Text = "The service is stopped!";
        }  
    }
于 2012-05-11T12:52:44.453 に答える
1

イベントハンドラーの引数に null null を入れるとエラーが発生します。コードは、このリクエストの送信元 (オブジェクト、この場合はラベル) と使用するイベント引数 (e) を知る必要があるため、これらを null にすることはできません。それらが機能する必要があります。そのため、エラーが発生します。

また、説明したように、ラベルのクリックイベントをこのコードにリンクしていないため、クリックするとおそらくdeosntが発生します(click_1は、リンクされている従来のクリックが使用されていないことを示しています)

于 2012-05-11T12:53:13.070 に答える