• 締切済み

設定ダイヤログを作りたいのですが。

設定ダイヤログを作りたいのですが。 C#にてシリアル通信送信受信するアプリを作ってみようかなと思っている初心者です。 「ツール」メニューに「設定」メニューストラップで「設定ダイアログ」frmのフォームを呼び出す 手順まではなんとなく解ります。 フォーム内の設定値を何処に持たせたらいいとか、呼び出すお作法やマナーや定石の書いてあるサイトの お勧めありますでしょうか? やりたいことはRS232Cのポートやボーレートなどの通信設定を行う設定画面を作りたいです。 参考図書だと、当該コントロールをフォームにぶち込んで、すぐその場でプロパティ欄に直書き。とか ComSerialPort.PortName="COM1" ComSerialPort.BaudRate=9600 とフォーム.loadにベタベタ書いてるみたいなものにしか見かけないんです。 近所の小さな本屋で立ち読みしてみたけど、多くはフォーム1枚板のみで完結した超初心向け内容で ・親フォームから子フォームをモーダルでShowDialogで出すときのお作法は? ・設定値は何処に持たせたらいいの?最終的にはアプリ起動しなおしても保持しておきたい。 ・適用やキャンセルしたときの処理は何処に書いた方がいいの? ・設定間違いCOM123とか無いものは弾くか警告かチェックしたいな などなど、基本が解ってません。 参考サイトやサンプル、お勧めございましたら教えてください。

みんなの回答

回答No.1

参考サイトとかは知りませんが、シリアルの通信設定は基本的なレベルなので、設定値の範囲さえ掴んでいれば、あとはフォームに張り付けるコントロールの知識とか、それを使ったプログラミング設計の仕方というところだと思います。 シリアル設定の参考にするなら、Windowsに付いてるハイパーターミナルの設定項目を参考にするのも良いかと思います。(XPなら、スタートメニュー → アクセサリ → 通信) ポート名とかボーレートとか、基本的に設定出来る値は決まっているので、ラジオボタンないしはコンボボックス等で選択する方法が一般的でユーザーフレンドリーだと思います。 > ・親フォームから子フォームをモーダルでShowDialogで出すときのお作法は? 普通にShowDialogで呼び出せばモーダルになるので、特に作法とか意識する必要は無いと思いますが、気を付ける必要があるのは親フォームと子フォームとの間のデータの受け渡しです。「C#」では確かグローバル変数は使えなかったと思うので、データは関数受け渡しになると思います。モーダルダイアログが表示されている間は親フォームには制御が返らないので、データの受け渡しは子フォームが生成されてから破棄されるまでの間で、かつShowDialogの前後で行わなければいけません。 > ・設定値は何処に持たせたらいいの?最終的にはアプリ起動しなおしても保持しておきたい。 一般的にはレジストリに保存しますが、それを避けたい場合は実行ファイルと同じフォルダに設定ファイルとして保存する方法もあります。 > ・適用やキャンセルしたときの処理は何処に書いた方がいいの? Windowsフォームアプリの場合、DialogResultのプロパティが設定されているボタンコントロールが押された場合、またはWindowバーのクローズボタンが押された場合に終了します。 一般的に終了処理を何もしない場合はダイアログでの処理結果はすべて破棄されるので、キャンセルの処理は何もしません。設定とか適用とかの場合はそのボタンが押された時のイベント処理で何かを行うか、あるいは親フォームに制御が戻ってからShowDialogの返り値(押されたボタンDialogResultの値)を見てから何かを行うということになります。 > ・設定間違いCOM123とか無いものは弾くか警告かチェックしたいな COMポートの有無はちょっと簡単に判別する方法が思い付きませんが、実際にポートが使えるかどうかチェックするのかな? いずれにせよ、ポート以外は設定出来る選択肢としてありうるものだけ出してるなら、理論上ありえない設定間違いは起こりません。ただ、この範囲での組み合わせで通信できるかどうかはすべて相手側の機器次第なので(実務とかでやってると相手側の設定が間違ってる場合も多々ある)、必ずしも完全にチェックできるというものではありません。

Passerby01
質問者

補足

引き続き、 >フォーム内の設定値を何処に持たせたらいいとか、 >呼び出すお作法やマナーや定石の書いてあるサイトの 参考サイトとかの情報お待ちしています。 気を付ける必要があるのは・・・ って以降の概論が知りたいです。 (○○してもいいですか?はい/いいえ式 メッセージダイアログぐらいしか本に書いてないので  設定データの受け渡しとかてんで無知です。) ひとまず「設定ダイヤログ」とか「RS232」と云えば、どういった設定項目があって入力欄があるとか、 私の質問と回答者さんの思い描くイメージと、そうそうブレたトンチンカンなやり取りにならないかな?っと。 いきなり上級すぎましたでしょうか・・・ ><; ・子フォームのOKボタンをダブルクリックして出来たクリックイベントに処理を書いたらいいの? ・シリアル通信のコントロールアイコンは親フォームに投げ込めばいいの?子設定ダイアログのフォームにも必要? ・通信設定の構造体をユーザ毎のxmlやREGで保存するには? ・そもそも構造体でまとめるの?個々に変数で持つの?クラスのプロパティ? ・子ダイアログはインスタンス作ってShowDialogするのですか?OKやCANCELで破棄?hide?  もう一回設定しなおすときは、もう一回インスタンス作ってShowDialog? etc・・・他多数。 1から10までお相手していただくには長丁場でご迷惑でしょうし 参考になりそうなサイト、この本がいいよ、とかお勧めありましたら なにとぞよろしくご教示のほどおねがいします。

関連するQ&A