C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 69 を表示中)
■40283 / )  Re[3]: ウェブブラウザで編集中にドラッグ&ドロップを禁止
□投稿者/ 魔界の仮面弁士 (1246回)-(2009/08/23(Sun) 11:40:01)
No40280 (RT さん) に返信
>> 画像ファイルやHTMLファイル等が、エクスプローラから WebBrowser 上へと
>> ドロップされるの防ぎたい、という意味であれば、
こちらの件は問題無いという事でしょうか?


>>あるいは、編集モードにおいて画像の位置を移動されるのが嫌だという意味であれば、
>> (案1) <body>全体の contentEditable を true にするのではなく、
>>  編集させたいタグの contentEditable だけを true にする。
> 案1について:画像はドラッグは禁止にしたいのですが、入れ替えは出来るようにしたいので、
> 案1では、だめかもしれません。
その入れ替えは、どのようにして行わせるのでしょうか?

ドラッグ & ドロップ では無いとすれば、ユーザーからクリップボード経由で貼り付けてもらうか、
もしくは、C# からのプログラム制御で画像を差し替える事になるかと思います。

で、C# 側から制御するのであれば、WebBrowser が編集モードであるかどうかは
一切関係無いと思いますよ。


>> (案2) 全体としては contentEditable を true にしておくが、
>>  編集させたくないタグのみは contentEditable を false にする。
>>のいずれかを行えば OK です。
> webBrowser_Main.Document.Body.
> の後あたりのプロパティを全部探って見たのですが、

全部調べてみたのですね。それはとても重要な事ではあるのですが、
たとえば ExecCommand メソッドや SetAttribute メソッドなどのように、
その引数に何を指定すると、どのような効果が得られるかといった情報は、
.NET Framework のドキュメントだけ見ても書かれていないため、さらに
調査範囲を広げなければなりません。

以前も書きましたが、WebBrowser の場合、マネージ化されていない部分も多いので、
細かい情報は、アンマネージの方のドキュメントにまで目を通す必要がありますし、
「.」の後に表示される一覧だけで、全ての機能を網羅できるわけでも無いのです。



> 特定のタグのみの編集不可能にするようなプロパティは見当たりませんでした。

それを実現するには、contentEditable を "false" に設定すれば良いと書きましたよね……?


理解度が少々不安になってきたので、少し確認させてください。


(1) HTML のタグにどのような物があるかはご存知ですか?
  (<body> とか <head> とか <input type=image> とか <img> とか)

(2) .Document.Body プロパティが、HTML の <body> を操作するためのものである事は
  理解されていますか?

(3) .Document.Body や .Document.GetElementFromPoint や .Document.GetElementById などが、
  それぞれのタグ(要素)を HtmlElement クラスとして返す事は把握されていますか?

(4) 今回使用している contentEditable が、<body> 以外にも利用できる事はご存知でしたか?

(5) contentEditable は文書全体に対して摘要されるわけでは無く、要素ごとに
  個別に設定可能である事はご存知ですか?

(6) contentEditable を設定できる要素と、設定できない要素がある事はご存知ですか?

(7) contentEditable に指定できる値が、"true" / "false" / "inherit" の
 3 種類である事は調査済みですか?

(8) その 3 種類の値のそれぞれの意味を説明できますか?

(9) 上位のタグとその子孫のタグとで contentEditable の設定値が異なっていた場合、
  どのような動作になるのかを、実際に試して確認してみましたか?


で、上記のうち、(4) 以降の答えが書かれているのが、MSDN でいえば
http://msdn.microsoft.com/en-us/library/ms537837.aspx
にあたります。難解かも知れませんが、一つ一つ調べてみてください。


上記の設問が分かれば、先の No40279 の回答内容を理解できるかと思います。
返信 編集キー/


管理者用

- Child Tree -