c#の素人です。
文字装飾可能な入力ボックスとしては、リッチテキストボックスがありますが、個別の文字位置を取得できず、またOnPaintのイベントがありませんので、上書き描画がうまくできません。
それでしたいことは、ヘルプ画面のように、一部の文字を反転させたり、装飾させて、テキスト形式(HTML)で保存させたいのですが、MSHTMLコンポーネントでは使い勝手が悪すぎます。
リッチテキストボックスに変わるような、使い勝手のいいものはないのでしょうか。
無いならば、多機能はいらないので手作りしようかと思うのですが、基本的にどのような考え方で進めばいいのか、独学なものでわかりません。
C++の考え方でもいいのですが、その道筋、もしくはその他の打開策を教えてください。
No.3ベストアンサー
- 回答日時:
#2の返答欄、読みました。
なるほど。状況が良くわかりました。
----------------------------------
■リッチテキストボックスのHTML出力について。
僕が「リッチテキストボックスでHTML出力できる」と言ったのは、
実はまさに
「自力でRTFを解読してHTMLかXMLに変換する」
ことを指したものでした^^;(スミマセン…)
■MSHTMLの使い勝手について。
状況がよくわかりました。
主に「機能や使い方が、わかりやすくない」ということですよね。
---------------------------
●僕が想像するに、MSHTMLを使えば、
とりあえずホームページビルダー(←知ってますよー)のような
「WYSIWYGなHTMLエディタ」は
デフォルトでほとんどそのままできる気がするのですが・・・。
ここ
http://www.microsoft.com/japan/msdn/academic/Art …
http://msdn.microsoft.com/library/ja/jpwebwk/bro …
を見る限りでは。正確なところはわからないのですが。
●「文字列の背景色」についても、
これ(MSHTML)をつかって実現可能のような気がします。
(僕が前に「文字列の背景色はできないかも」と書いたのは、
HTMLタグに「文字列の背景色指定タグ」があることを知らなかった^^;)
●こういうの
http://www.microsoft.com/japan/msdn/academic/Art …
を読むと、
MSHTMLはけっこういろいろできそうな気が。
たとえばXML形式でのファイル保存はもちろん、
(ファイルを介せずに)直接にHTMLデータを挿入したり削除したり、
いろいろできるような気が。
●「検索該当文字の、なんらかの強調表示」について。
http://msdn.microsoft.com/library/ja/jpwebwk/bro …
『基になる文書のソースを変更せずに、表示されたページに
強調表示やテキスト装飾を追加する際に使用できます』
『もう 1 つの使用例は、スペル チェックを行うデザイナで、
つづりが正しくない語の下に波線を表示する処理です』
という記述が、それっぽい?
●「隠し属性と、関連データ呼び出し」について。
http://msdn.microsoft.com/library/ja/jpwebwk/bro …
なんかいろいろできそう!?(すいません、実はよくわかりません。)
理屈から考えれば、
たとえばMSHTMLがマウスクリックイベントを拾うことができ、
そのマウスクリックが「XMLツリーのどの要素上で起こったか」を判別できる関数がMSHTMLに装備され公開されてるなら、
実現可能だと思うのですが…。
よくわかりません。
----------------------------
▲おまけ1
こんなの見つけました。
HTMLEditor
http://www.itwriting.com/htmleditor/index.php
http://itwriting.co.uk/htmleditor/docwiki/Wiki:H …
MSHTMLのラッパー・コンポーネントで、C#で書かれてるみたいです。
使うに値するのかそうでないのか
僕には判断する手段がないのですが、
ソースコードがついてるみたいなので、
何かのヒントにはなるかも。
▲おまけ2
MSHTMLの公式チュートリアル?
MSHTMLはけっこう強力なコンポーネントっぽい。
でも解説はC++で書かれてるみたい。(これをC#に適用できるのかは
わかりません)
http://msdn.microsoft.com/workshop/browser/editi …
-----------------------
ぼくにわかることは、これくらい。
もっとMSHTMLにお詳しい方から意見を聞くのもいいかも。
随分ご丁寧に、感動・感激しました。
以前、MSHTMLを耳にして、一応目にしたところもあったのですが、
何分、右も左もわからないヒヨッコですから、疑心暗鬼で、
習得以前に放棄しちゃいました。
でも、WYSIWYGをこの度はじめて知って、がぜんファイトが出てきました。
c#に組み込める「WYSIWYGなHTMLエディタ」があれば非常に幸いなのですが、
ともかく文章管理の大本ができないと前に進めなくて、
大木こだま・ひびきじゃーないけど、往生してました。
本当にこの度はありがとうございました。
また何か気づくことがあったら教えてください。
MSHTMLの習得には多少時間がかかると思いますので、
(実は、一昨日、Visual Studio 2005にUPしちゃいました。
SQL Serverも初めてなんで……)
ともかくがんばります。ありがとうございました。
No.2
- 回答日時:
#1です。
C#知らないので、恐縮です。(※Javaしか知らない^.^)
ちょと思ったことと、不明な点があるのですが・・・。
>それでしたいことは、
>ヘルプ画面のように、一部の文字を反転させたり、
>装飾させて、テキスト形式(HTML)で保存させたいのですが、
>MSHTMLコンポーネントでは使い勝手が悪すぎます。
>リッチテキストボックスがありますが、、
>またOnPaintのイベントがありませんので、上書き描画がうまくできません。
とりあえず「既存のコンポーネント」として
・リッチテキストボックス
・MSHTMLコンポーネント
の2つがありますよね。
で、やりたいことは
(a)一部の文字列の反転(背景色適用)
(b)よくある普通の装飾(スタイルとかサイズとか色とか下線とか)
(c)HTML形式での保存
で、既存コンポーネントで不満な点は
(d)MSHTMLは、使い勝手が悪い
(e)リッチテキストボックス(とおそらくMSHTMLも?)は、上書き描画ができない
--
■不明な点
・(d)について。
MSHTMLのどんな所が、使い勝手が悪いのですか?
逆に、リッチテキストボックスは、使い勝手がいいのですか?
■思ったこと
・(e)について。
既存のコンポーネントを使う限り、「上書き描画」は期待できないかも!?(自信なし)
・(a)について
一部の文字列への背景色適用は、
これも自作コンポーネントを作らないと無理かも!?(自信なし)
・(b)(c)について
この機能は、おそらく「リッチテキストボックス」と「MSHTML」の両方で可能
・だから「上書き描画」と「文字列への背景色適用」さえあきらめれば、
(使い勝手の問題をのぞけば)既存のコンポーネントで、
質問者さんの要求が満たされるかも?
リッチテキストボックスがHTMLで保存できるのは知りませんでした。
また、ご指摘のとおり、上書き描画や背景色の一部変更をあきらめれば、問題が無いかも知れません。
ただ、悪い癖のこだわり点は、
A)文章管理において、カラー文字に加えて、検索時に該当文字を明確にわかりやすくさせたい(文字反転が最適?)。
B)隠し文字か属性を表示文字に潜ませ、関連データを呼び出せるようにした。
C)願わくは、XMLで保存したい。なおデータ入力や画面表示は簡単にさせたい。
ABCは行いたいことの優先順序ですが、
■リッチテキストボックスでは、
文字反転ができない上、RTFを解読してHTMLかXMLに変換するのは困難だった。※HTMLで保存できることを知らなかった。
■MSHTMLにおいては、
使用方法がよくわからなくて、ファイルからの呼出しや保存はできたのですが、データベースで管理できる文字列(string型)からの読込みや保存の方法がわからなかった。
その上、データ入力がMSHTML上でできるのかどうかさえわからなかった。
※リッチテキストボックスは表示画面に直接入力や編集ができ、それをもって使い勝手がいいと言った。
正直なところ、自作は避けたいし、Wordやc#の入力画面、またご存知でないかもしれませんが、ホームページビルダーの入力画面等、本当に使い勝手のいい入力編集画面が昨今あり溢れているのだから、たとえ有償であってもいいものがやがて登場するだろうと思えて、決心を鈍らせ、足踏み状態にあります。
手作りが簡単にできればいいのですが……
どうすればいいのでしょうかね……
MSHTMLでできますかね……
日々、トホホ…です。
No.1
- 回答日時:
C#を知らないので、
該当コンポーネントがあるかどうかは
知らないのですが…。
---
>手作り
想像ですが、
イメージ的には「文字が書かれたカード」を何枚も並べる感じ
だと思います。
---
たとえばHTML表記で
あ<font size=VeryVeryVeryLarge>いう</font>え
というデータがあった場合、
(1)メモリ的に、「あ」と「いう」と「え」の3つのカードに分解する。
(※配列とか、いろいろ)
(2)表示は、「カードを並べる」。
(3)編集は、
たとえばマウスクリック位置やキャレット(カーソル)が
「どの表示カードに触れているか」をまず探って、
次に「その表示カードはメモリ上のどのカードに相当するか」を探って、
実際の「データの編集(※文字を挿入したり削除したり)」は
その「メモリ上の該当カード」に対して行う。
---
とか、やるんじゃないかなあ…。自信ないですが。
全部ちゃんとやるとなると、けっこう大変そう。
・編集機能をなくす
・文章中のフォントを固定する
・文字の幅も固定する
とかやれば、その分、簡単になると思います。
アドバイスありがとうございます。やっぱり手作りだと大変ですよね。
でも、どうしてこんなに基本的で需要大と思われるコンポーネント
提供してくれないんでしょうかね。
他の皆はリッチテキストボックスで満足しているのでしょうか……
文章を管理するデータベースがほしいもので……
アドバイスほんとにありがとうございました。
わからないことばっかりなので、なんでもどんどん教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- その他(スマートフォン・携帯電話・VR) 全部入りでも夜間の動画性能がいいスマホありますか? 5 2022/04/04 16:33
- 英語 「名詞+形容詞/現在分詞/過去分詞+to不定詞の副詞的用法」の語順について 7 2022/09/22 05:27
- マンガ・コミック 漫画家はみな書道が得意か? 漫画家で悪筆の人はいるか? 5 2023/08/16 09:05
- Excel(エクセル) Excel グラフの軸に「表示単位の変更」の要領でテキストを追加したい 1 2022/06/08 16:27
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- 家具・インテリア 画像の丸した窓、 このように壁の隅に窓がある場合、装飾カーテンレールは取り付け不可能ですか? 装飾カ 5 2023/01/21 13:06
- iPad iPad で Apple Pencil を使いメモアプリで文字をキーボードから打ち込みたいのですが描 2 2022/10/05 20:49
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ツールボックスのような折りたたみ
-
requestFocusについて
-
java gui のイベント処理が重い
-
Delphiでの画像の表示について...
-
VB.NETでフォーム上にExcelのよ...
-
画像を一瞬だけ表示する。
-
同じコンポーネントを複数の場...
-
「タイプ初期化子が例外をスロ...
-
エクセルVBAで、条件に一致する...
-
変数名の付け方
-
サーブレットコンテキストの意...
-
DataGridViewでセルクリックイ...
-
tryの終了
-
インスタンス参照でアクセスで...
-
Excel VBA 定数にオブジェクト...
-
VB.netでメソッドからコントロ...
-
生成したインスタンスを削除す...
-
JAVAでの背景画像表示
-
オブジェクト参照がオブジェク...
-
VB.NET getとsetの概念がわかり...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETでフォーム上にExcelのよ...
-
VB6のツールボックスへのコンポ...
-
VBSでCDトレイのオープン/ク...
-
Visual Basic 2010を使ってRS-2...
-
VB.NETでMSComm が追加できず?
-
[delphi] 変数を利用してコンポ...
-
JScrollPane上のJTableの再描画
-
requestFocusについて
-
C#で設定時刻到来時にイベント...
-
JButton配列でのイベント処理
-
アクティブなTextFiel...
-
コントロールの表示・非表示
-
ファイル保存先のダイアログが...
-
java gui のイベント処理が重い
-
子パネルから親パネルのコント...
-
画像を一瞬だけ表示する。
-
ウィンドウが閉じられる直前の処理
-
文字の色の変更
-
同じコンポーネントを複数の場...
-
GUI画面でsetBounds()で作成し...
おすすめ情報