質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

Q&A

解決済

1回答

4185閲覧

WebBrowserコントロールから、任意の要素の色などがSetAttributeで変わらない

hsk

総合スコア728

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

0グッド

0クリップ

投稿2016/08/15 04:43

編集2016/08/15 04:49

お世話になっております。

###前提・実現したいこと
.NET Framework 4.5.2 で、WebBrowser コントロールを利用した Windows フォームを作成しています。
ひとまず、任意のWEBページを読みこみ、特定の要素の属性を変更させる練習?をしています。
うまく動作させたいのですが、ご存知の方、お手ほどきをお願いできますでしょうか?

WebBrowser コントロールがIE11 相当で動くよう、レジストリを編集してあります(動作確認済み)

フォーム上の WebBrowser コントロールを例示した HTML ファイルがある URL にナビゲートさせ、(独自コンテキストメニュー項目の選択(menuItem1_Click イベントハンドラ)を介して)HTML コンテンツの1番目にある div 要素のテキスト・前景色・背景色を変更させる目論見です。

HTML コンテンツの先頭にある div 要素を HTMLElement 型のオブジェクトとして得て、innerText プロパティへの文字列代入と、SetAttribute メソッドでの属性設定を行っています。

###発生している問題・エラーメッセージ
テキストは ABC からSAMPLE に変わるのですが、色が変わりません。

メッセージボックスに、属性の内容を表示させてみており、SetAttribute 呼び出し後に値はセットされていることは確認できます("::" -> "yellow: blue: green")

###該当のソースコード
(練習用のため、エラーハンドルなど無く、まったくもって簡素です)

html

1<html> 2<body> 3<div>ABC</div> 4<div>DEF</div> 5</html>

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10 11namespace Sample 12{ 13 public partial class SampleForm : Form 14 { 15 // (略) 16 private void menuItem1_Click(object sender, EventArgs e) 17 { 18 var target = webBrowserMain.Document.GetElementsByTagName("div")[0]; 19 20 var beforeAttrs = target.GetAttribute("background-color") + ": " + target.GetAttribute("backgrounColor") + ": " + target.GetAttribute("color"); 21 System.Windows.Forms.MessageBox.Show(beforeAttrs); 22 23 target.InnerText = "SAMPLE"; 24 target.SetAttribute("background-color", "yellow"); 25 target.SetAttribute("backgrounColor", "blue"); 26 target.SetAttribute("color", "green"); 27 28 var afterAttrs = target.GetAttribute("background-color") + ": " + target.GetAttribute("backgrounColor") + ": " + target.GetAttribute("color"); 29 System.Windows.Forms.MessageBox.Show(afterAttrs); 30 } 31 } 32} 33 34![イメージ説明](9d9469adfd3fbae4816c61bbda045e05.png) 35

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

属性styleの設定なので

第一引数はstyle
第二引数はbackground-color: #FF0000

的なもののようにみえますがどうでしょう

投稿2016/08/15 04:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hsk

2016/08/15 05:01

haruka-kanataさん 有難う御座います。 早々とご回答いただき大変助かりました。 SetAttribute メソッドを使わず、直接 target.Style = "color:orange"; のように Style プロパティにセットすることで、色を無事変更させることができました。 https://msdn.microsoft.com/ja-jp/library/ms171714.aspx
hsk

2016/08/15 05:04

お礼に補足しますと target.SetAttribute("style", "color:orange"); ではうまく反映できなかったのですが、要素の属性はstyleであり、color や background-color は style の値であることに気づかせていただき、無事解決までたどり着くことが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問