ブログ

C#のスクロールバーの罠

現場の別プロジェクトでC#でコーディングをしている方から質問がありました。
「垂直スクロールバー(VScrollBar)がMinimumとMaximumというプロパティを持っているのに
画面でスクロールバーを移動させてもValueというプロパティがMaximumにならないんです
が・・・。」というもの。

例えば、Minimumが0でMaximumが100のときに、スクロールバーを移動しながらValueの値を
確認すると80くらいで一番下までスクロールしてしまうのです。
確かに私もVisualStudioでのコーディング初心者の時には不思議に思いました。
・・・が、ものすごく単純なことで、スクロールのつまみ(?ボタン?)の高さがあるので
移動できないのです。スクロールバーは100の高さがあるのですが、つまみ部分の高さが20
あれば80(100-20=80)までしか移動できない、という簡単な理屈です。

また、別件ですが、コントロールのAutoScrollをTrueにしてコントロールのスクロール位置を
制御する場合、VScrollBarのValueではなくコントロールが持つAutoScrollPositionに値を
設定したほうが簡単にスクロール位置を制御できて便利です。

というようなことを雑談し無事にやり過ごしました。
いきなり聞かれると忘れていることもあったりして、毎回、どきっとしながら受け答えしています。

VirtualBoxで同じHDDイメージから複数の仮想PCを作成する

前回からの引き続きで、事前検証のためにUbuntu14.04 LTSをPC仮想化ソフトウェア「VirutalBox」
を使用して作成しています。
少しずつ条件を変えて検証したいのでUbuntuのPCを4台作成することにしました。

VirutalBoxではHDDのイメージファイルから仮想PCを作成できるのですが、同じHDDイメージファイル
を使って
仮想PCを作成しようとすると「同じUUIDを持つPCが既に存在しています」という旨のエラーメッセー
ジが表示されて
仮想PCを作成することができません。

似たような環境を作る場合には、最初からインストールするよりは同じHDDイメージファイルを使用
して仮想PCを
作成したほうが効率的に作業できます。

こういう場合は、HDDイメージファイルをコピーした後に、UUIDを変更すれば大丈夫です。
HDDイメージファイルのUUIDを変更する場合には、DOSプロンプトから以下のコマンドを実行します。

>”c:\Program Files\Oracle\VirtualBox\VBoxManage.exe” internalcommands sethduuid [HDDイメー
ジファイル名]

HDDイメージファイルのUUIDを変更して、無事に4台の仮想PCを作成できました。
検証環境の用意作業は、仮想PCのネットワーク設定など、まだまだ続いています。