連載:Windowsフォーム開発入門【Visual Studio 2010対応】
Windowsフォーム・コントロールの基礎(その3) 初音 玲2010/10/19 |
|
|
●PerformanceCounterコンポーネント
PerformanceCounterコンポーネント(以下、PerformanceCounter)は、Windowsに付属しているパフォーマンス・モニタの情報を取得するためのコンポーネントだ。このコンポーネントとChartコントロールを組み合わせれば、パフォーマンス・モニタのグラフのようなUIをWindowsフォームに追加できる。
●Processコンポーネント
Processコンポーネント(以下、Process)は、ほかのプログラムを起動するときに使うコンポーネントだ。Processを使えば、起動したプログラムに対して、終了を待ち合わせたり強制終了させたりすることもできる。
下記のコードはProcessの利用例だ。なおWindowsフォーム上には、「Start_Button」「Wait_Button」「Kill_Button」という名前の3つのButtonコントロールと、「Process1」という名前のProcessを配置している。
|
||
リスト7 Processの使用例(上:VB、下:C#) | ||
ButtonコントロールのClickイベント・プロシージャ(=Start_Button_ClickメソッドとWait_Button_ClickメソッドとKill_Button_Clickメソッド)は、Windowsフォーム・デザイナのフォーム画面上に配置した各Buttonコントロールをダブルクリックすると、そのひな型コードが自動的に生成される。 |
サンプルという性質上、StartメソッドとWaitForExitメソッドは別のイベント・プロシージャに分けているが、起動したプログラムの終了を待ち合わせる処理を実装する場合は、(これらは別のイベント・プロシージャに分離せずに)Startメソッドの直後にWaitForExitメソッドを実行するのが一般的だ。
しかし、WaitForExitメソッドを実行するとWindowsフォームの移動なども含めたUI操作が無視されてしまうので、(プログラムの終了を待ち合わせている間にもUI操作が必要な場面では)ProcessのStartメソッドとWaitForExitメソッドの実行をBackgroundWorkerで別スレッド化することも考慮に入れておいた方がいいだろう。
●SerialPortコンポーネント
SerialPortコンポーネント(以下、SerialPort)はRS-232Cなどのシリアルポートを使うためのコンポーネントだ。PC間のデータのやりとりはTCP/IPなどのプロトコルが主流になってきたが、制御機器などとのデータのやりとりはRS-232C経由となるときもあるので、そのようなときにSerialPortを使うことになる。
●ServiceControllerコンポーネント
ServiceControllerコンポーネント(以下、ServiceController)は、Windowsサービスの情報を取得したり起動や停止を行ったりすることができるコンポーネントだ。なお、起動や停止には、UACによる管理者への権限昇格が必要になるので、DirectoryEntryと同様に、app.manifestファイルを作成し、<requestedExecutionLevel>要素のlevel属性に「requireAdministrator」を指定する。
●Timerコンポーネント
Timerコンポーネント(以下、Timer)は、非UIデザイン系のコンポーネントの中で利用頻度が高い部類に入るコンポーネントだ。
Windowsフォーム・アプリケーション内でずっと立ち上げておいて、定期的に状況を監視して、その状況報告を表示するような処理を行いたいときに、Timerは役立つ。Timerを使えば、指定したミリ秒数でTickイベントが発生して、自動的にイベント・プロシージャが呼び出されるので、その中に処理を記述すればよい。
例えば、1秒ごとに(1000ミリ秒ごとに)CPU使用率を測定してProgressBarに表示するためには、次のようなコードを記述する。Timerを使うためのコードはEnabledプロパティの有効/無効くらいで、大半がCPU使用率を表示する部分であることに注目してほしい。このようにTimerは簡単に使えるということだ。
なおWindowsフォーム上には、「CPU_ProgressBar」という名前のProgressBarコントロールと、「Timer1」という名前のTimer1、「PerformanceCounter1」という名前のPerformanceCounterを配置している。
さらに、PerformanceCounterコンポーネントのプロパティ設定が必要だ。具体的には、Windowsフォーム・デザイナのフォーム画面上に配置したPerformanceCounterコンポーネントを選択した状態で、[プロパティ]ウィンドウの[MachineName]プロパティに「.」を、[CategoryName]プロパティに「Processor」を、[CounterName]プロパティに「% Processor Time」を、[InstanceName]プロパティに「_Total」を、それぞれ入力する(MachineNameプロパティ以外は、入力欄の右端の[▼]ボタンをクリックすると表示されるリストから選択可能)。
|
||
リスト8 Timerの使用例(上:VB、下:C#) | ||
フォームのShownイベント・プロシージャ(=Timer_Form_Shownメソッド)は、Windowsフォーム・デザイナのフォーム画面を選択した状態で、[プロパティ]ウィンドウの[イベント]一覧のイベント項目をダブルクリックすると自動生成される。TimerのTickイベント・プロシージャ(=Timer1_Tickメソッド)は、Timerをダブルクリックすると自動生成される。 |
■まとめ
3回にわたってWindowsフォームで使用する基本的なコントロールを説明してきた。これらの基本的なコントロールを組み合わせれば、ちょっとしたプログラムから本格的な業務アプリケーションまで、さまざまなWindowsフォーム・アプリケーションを作ることができる。そこで次回から、画面デザインと両輪となるデータ・バインディングなど、業務アプリケーション構築に必須な部分について説明していく。
もちろん、これまで紹介してきたWindowsフォーム・コントロールを使っていくので、どのようなUIにはどのようなコントロールを当てはめるべきか、ぜひ、頭の中でイメージできるように読み返していただき、次回をお待ちいただきたい。
INDEX | ||
[連載]Windowsフォーム開発入門【Visual Studio 2010対応】 | ||
Windowsフォーム・コントロールの基礎(その3) | ||
1.コンポーネント(1):BackgroundWorker | ||
2.コンポーネント(2):DirectoryEntry/DirectroySearcher/ErrorProvider/EventLog | ||
3.コンポーネント(3):FileSystemWatcher/HelpProvider/ImageList/MessageQueue | ||
4.コンポーネント(4):PerformanceCounter/Process/SerialPort/ServiceController/Timer | ||
「Windowsフォーム開発入門」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|
- - PR -