元のページに戻る
Mono 1.2.6上での Minimal Board Editor 0.29n の動作
Monoが 1.2.6になり、Minimal Board Editorもかなり動作するようになりました。しかしWindowsの.NET環境との非互換性のせいなのか、Minimal
Board Editor の作りが悪いのか、問題点も残っています。
既知の問題点
- ScrollableControlのスクロールバーの更新の振る舞いの違い
作図エリアは ScrollableControl クラスを使っています。このクラスのAutoScrollMinSize プロパティに作図エリアのサイズを設定すると、Windowsの.NETでは、スクロールバーも自動的に再設定されるのですが、Monoではコントロール自身のサイズが変更されない限りスクロールバーの再設定が行われません。対策としてMono上では、Zoomなどで作図エリアのサイズを設定したらコントロールのサイズを変化させています。そのため、Mono上でZoom動作をするとちょっと奇妙な再描画が発生します。
- クリップボードが独自形式を扱えない?
Minimal Board Editorでは、DataFormats.GetFormat( ) を使って、クリップボードに独自形式を登録しますが、Mono
1.2.6ではこれがうまく動作しないようです。
そのため、Mono上では独自形式の代わりにテキスト形式を使うようにしています。
- クリップボードの内容チェックの動作が問題になる?
メニューの項目のPasteをイネーブルにするかどうかの判定のために、クリップボードにデータが存在するかどうかを Clipboard.ContainsData(
) でチェックしています。このチェックがクリップボードにデータが存在すると重くなるようです。
また、このチェックを行っていると他のアプリケーションがクリップボードにコピーしたあとで、そのアプリケーションを終了すると、クラッシュするようです。
そのため、MONO上ではクリップボードにデータが存在するかどうかのチェックを行わず、常にPasteがイネーブルになっています。(イネーブルになっていても、クリップボードにデータがなければPasteを実行しても何も起こりません)
- コンテキストメニューをESCキーで閉じるとクラッシュする
.NET 2.0で追加されたContextMenuStripというコンテキストメニュークラスのMonoでの実装がいまいちなようです。
とりあえずMono上では、 ContextMenuStrip の代わりに古いContextMenuクラスを使っています。
- 印刷関係の動作確認ができていません
印刷関係の動作確認ができていないため、MONO上ではFileメニューの印刷関係の項目をディセーブルにしています。
作図の確認には、イメージ出力をお使いいただくことになります。
以上の既知の問題のほかにも何かの操作の拍子にフリーズすることがあります。
Mono版のビルド
Minimal Board Editor 0.29mでは、起動時に環境をチェックしてUNIXであればMonoと見做して動作するようにしていましたが、0.29nではコンパイル時にオプションを指定してMono用実行ファイルを作成する必要があります。(通常のWindows用実行ファイルはそのままでは動作しません)
下はVisual Studio 2008 Standardのプロジェクトのプロパティを開いたところです。
ビルドタブの[ 条件付きコンパイルシンボル ]で "MONO" (大文字)を指定してビルドすると、MONO用の実行ファイルが得られます。