2009/09/20(Sun) 22:54:31 編集(投稿者)
■No41491 (RT さん) に返信
> 以前スクロールバーを使って、ウェブブラウザに表示したページを拡大・縮小する方法を教えて頂きました。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=40006&KLOG=69
の事ですね。後から見た人にも分かるよう、記事Noなり、URL なりを示していただけると助かります。
> 今回は、別フォームを開き、そこで拡大・縮小率(25,50,75,100,125,150,175,200)を選択し、決定をして、
> メインフォーム上のウェブブラウザで表示したページを拡大・縮小したいと考えております。
拡大・縮小そのものは実装できているけれども、複数フォーム間のデータ連携方法が分からない、
という事でしょうか。だとすると、WebBrowser を使っているかどうかは、この際関係無さそうですね。
> 選択した率での拡大・縮小をページに反映するプログラムの書き方について、アドバイスよろしくお願い致します。
まず、その拡大率設定ダイアログを作る事はできていますか?
ダイアログ ボックスの作り方については、下記を参照してみてください。
http://msdn.microsoft.com/ja-jp/library/2chz8edb.aspx
また、その別フォームをモーダルとして開きたいのか(ShowDialog メソッド)、
それともモードレス(Show メソッド)にしたいのかで、実装方法が若干異なってきます。
----
ShowDialog を使って表示させたいのであれば、選択した率をプロパティとして返すと良いでしょう。
たとえば、ColorDiagog では、ダイアログで選択した色を取得するために
private void button1_Click(object sender, EventArgs e)
{
using (ColorDialog dlg = new ColorDialog())
{
if (dlg.ShowDialog() == DialogResult.OK)
{
this.BackColor = dlg.Color;
}
}
}
といったコードを記述する事になります。
それを真似て、たとえば今回は
if (dlg.ShowDialog() == DialogResult.OK)
{
拡大率 = dlg.Zoom;
}
となるように、その別フォームをデザインしてみては如何でしょうか。
また、呼び出した別ダイアログで拡大率を変更したときに、OK を押して閉じずとも
呼び出し元の画面にリアルタイムに結果が伝わるようにしたい場合には、
ダイアログ側に、結果を伝えるためのイベントを用意すると良いでしょう。
利用側の実装は、FontDialog の Apply イベントを使う際と同じような書き方になるハズです。
private void button1_Click(object sender, EventArgs e)
{
fontDialog1.ShowApply = true; // [適用]ボタンを追加
if (fontDialog1.ShowDialog() == DialogResult.OK)
{
this.button1.Font = fontDialog1.Font;
}
}
private void fontDialog1_Apply(object sender, EventArgs e)
{
this.button1.Font = fontDialog1.Font;
}
なお、この「イベント」を使って、選択された情報(今回は拡大率、上記例では Color)を
伝える方法は、モードレス ダイアログの際にも応用できるかと思います。