DoboWiki
Top
> .NETプログラミング研究/102 をテンプレートにして作成
.NETプログラミング研究/102 をテンプレートにして作成
開始行:
#title(Microsoft Visual Studio International Feature Pack...
#navi(.NETプログラミング研究)
#contents
*Microsoft Visual Studio International Feature Pack 2.0: ...
[[前回>../101]]に引き続き、Microsoft Visual Studio Intern...
**SimpleRubyコントロールを使って、ASP.NETでルビ付き文字を...
[[前回>../101]]は、StringAnnotationsクラスを使ってルビの...
Yomigana Frameworkに用意されているSimpleRubyコントロール...
SimpleRubyコントロールを使うには、YomiganaFramework.dllと...
もしSimpleRubyコントロールがツールボックスに表示されてい...
+ツールボックスの「全般」タブを右クリックしてメニューを出...
+「ツールボックスアイテムの選択」ダイアログの「.NET Frame...
+「.NET Framework コンポーネント」のリストに「YomiganaTex...
Visual Studioのデザイン画面でSimpleRubyコントロールをWeb...
+デザイン画面でSimpleRuby1を選択し、「プロパティウィンド...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+Textプロパティの右側にある「...」ボタンをクリックします...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+ルビを振る区切りを決めます。デフォルトでは「福」と「来」...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+ルビを振ります。右上にある「オートフィル」ボタンをクリッ...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+オートフィルでは「ふく」以外の読み仮名がすべて間違えてい...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+これで完成です。SimpleRuby1のTextプロパティが「\uFFF9笑\...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
SimpleRuby1のソースは、以下のようになります。
#prescroll{{
<cc1:SimpleRuby ID="SimpleRuby1" runat="server"
Text="\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\...
</cc1:SimpleRuby>
}}
これを実行した時に生成されるHTMLは、以下のようになります。
#prescroll(wrap=true){{
<span id="SimpleRuby1"><ruby ><rb>笑</rb><rp >(</rp><rt >...
}}
これをruby要素に対応しているWebブラウザで表示すると、次の...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
ruby要素に対応していないWebブラウザで表示すると、「笑(わ...
***Textプロパティの書式 [#y3351a48]
上記の例では「読み仮名エディタ」を使用してTextプロパティ...
Textプロパティに指定する文字列は、[[ユニコード上のルビ>ht...
Textプロパティにはこのようなルビ表示制御文字そのものを使...
逆に言えば、"\uFFF9"をそのまま表示したくて"\uFFF9"と書い...
#code(vbnet){{
'下のどちらでもOK
SimpleRuby1.Text = Char.ConvertFromUtf32(&HFFF9) & "笑" & _
Char.ConvertFromUtf32(&HFFFA) & "わら" & Char.Convert...
"う" & Char.ConvertFromUtf32(&HFFF9) & "門" & Char.Co...
"かど" & Char.ConvertFromUtf32(&HFFFB) & "には"
SimpleRuby1.Text = _
"\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\uFFFB...
}}
#code(csharp){{
//下のどちらでもOK
SimpleRuby1.Text =
"\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\uFFFB...
SimpleRuby1.Text =
@"\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\uFFF...
}}
***ruby要素に対応していないブラウザで表示されるルビを囲む...
SimpleRubyでは、ルビの前後にrp要素が必ず入ります。これに...
ルビを囲む括弧を変更するには、FallbackLeftParenthesisとFa...
なお、SimpleRubyではrp要素が必ず入り、消す方法が無いよう...
***ruby要素とrt要素にクラス名を与える [#g41332e9]
SimpleRubyでruby要素にクラス名を与えるには、RubyCssClass...
例えばRubyCssClassプロパティを"kanji"、RubyTextCssClassプ...
#prescroll(wrap=true){{
<span id="SimpleRuby1"><ruby class = "kanji"><rb>笑</rb><...
}}
***ruby要素とHTMLのバージョン [#h1a5dbbb]
ruby要素は、Internet Explorerでは5.0から独自に対応してい...
また、HTML5ではrb要素を採用していませんので、rb要素を省略...
つまりSimpleRubyは、正式には、XHTML1.1以上でしか使用でき...
**ユーザーが入力した文字列の読み仮名を取得する [#g5ac19a7]
Yomigana Frameworkには、ユーザーがIMEで入力した文字列の読...
|名前|種類|DLL|名前空間|h
|YomiganaTextBox コントロール|Windowsフォームコントロール...
|YomiganaWPFTextBox コントロール|WPFコントロール|Yomigana...
|YomiganaExtender コントロール|Ajaxエクステンダーコントロ...
この内ここでは、YomiganaTextBoxとYomiganaExtenderコントロ...
**YomiganaTextBoxコントロールを使う [#w0674da5]
YomiganaTextBoxコントロールを使うと、Windowsフォームコン...
YomiganaTextBoxコントロールはYomiganaTextBox.dllに含まれ...
YomiganaTextBoxコントロールがツールボックスに登録されたな...
YomiganaTextBox1に入力された文字列の読み仮名がTextBox1に...
出来上がったアプリケーションを実行させてみましょう。Yomig...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
このように、YomiganaTextBoxがフォーカスを失ったときに、Bi...
YomiganaTextBoxに入力された文字列の読み仮名は、TextCaptur...
***IMEで確定したときに読みを取得する [#p22892cc]
ユーザーがIMEで入力文字を確定したとき、YomiganaTextBoxのY...
#code(vbnet){{
'YomiganaTextBox1のYomiganaChangedイベントハンドラ
Private Sub YomiganaTextBox1_YomiganaChanged(ByVal sender...
ByVal e As E...
Handles Yomigana...
Console.WriteLine("読み: " + YomiganaTextBox1.TextCap...
End Sub
}}
#code(csharp){{
//YomiganaTextBox1のYomiganaChangedイベントハンドラ
private void YomiganaTextBox1_YomiganaChanged(object send...
{
Console.WriteLine("読み: " + YomiganaTextBox1.TextCap...
}
}}
***読みをひらがな、カタカナ、半角カタカナで取得する [#k23...
YomiganaTextBoxが取得した読み(TextCapturedプロパティ)は...
|PreferredConversion列挙体のメンバ|説明|h
|None|ユーザーが入力したカナのまま。|
|ToHiragana|カタカナと半角カタカナをひらがなに変換する。|
|ToKatakana|ひらがなと半角カタカナをカタカナに変換する。|
|ToHalfwidthKatakana|ひらがなとカタカナを半角カタカナに変...
なおこれらの変換は、[[.NETプログラミング研究第87号>../87]...
また、TextCapturedPreferredConversionプロパティがNoneでな...
***YomiganaTextBoxが読みを取得する仕組みと、不具合 [#fca1...
YomiganaTextBoxは、[[ImmGetCompositionString関数>http://m...
そのため、色々な制限(不具合?)があります。例えば、Yomig...
同じように、YomiganaTextBoxにIMEで入力した文字列を数文字...
このように、TextCapturedプロパティの値はYomiganaTextBoxに...
その他、コピペで貼りつけた文字列の読み仮名ももちろん取得...
***その他の不具合 [#o66fea02]
私が試した限りでは、TextAnnotatedプロパティは常にnullを返...
**YomiganaExtenderコントロールを使う [#bedcd2b7]
YomiganaExtenderコントロールを使うと、Webアプリケーション...
YomiganaExtenderコントロールを使うには、YomiganaFramework...
また、YomiganaExtenderコントロールをツールボックスに登録...
それでは、テキストボックスに入力された文字列の読み仮名を...
まずは、以下の手順でWebサービスを作成します。
+メニューの「プロジェクト」-「新しい項目の追加」(または...
+「HTMLページ」を選択し、名前に「yomigana.asmx」と入力し...
+yomigana.asmxを開き、内容を次のように書き換えて、保存し...
#prescroll{{
<%@ WebService Language="C#" CodeBehind="~/bin/YomiganaE...
}}
次に、Webページを作成します。まずは必要なコントロールを配...
+デザイナを使用して、WebページにTextBoxコントロールを配置...
+同じくWebページにLabelコントロールを配置します。このLabe...
+さらにWebページにScriptManagerコントロールを配置します。...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
次に、テキストボックスにエクステンダーを追加します。
+TextBox1をクリックして選択し、スマートタグを表示させます...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+「エクステンダーウィザード」で「YomiganaExtender」を選択...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
次に、YomiganaExtenderのプロパティを設定します。
+「プロパティウィンドウ」のドロップダウンリストで「TextBo...
+TextBox1_YomiganaExtenderのServicePathプロパティを「yomi...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
これで出来上がりです。ちなみにソースは、以下のようになり...
#prescroll{{
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:YomiganaExtender ID="TextBox1_YomiganaExtender" runa...
ServicePath="yomigana.asmx" TargetBindingControl="Lab...
TargetControlID="TextBox1">
</cc1:YomiganaExtender>
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
}}
実際に試してみましょう。TextBox1にIMEを使って「わらうかど...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
***試して気づいたこと [#t0143dbc]
私が試したところでは、Internet Explorer 8では動作しました...
YomiganaTextBoxでは文字列の一部を削除したり、文字列の途中...
**コメント [#k663bfa2]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2011-0...
終了行:
#title(Microsoft Visual Studio International Feature Pack...
#navi(.NETプログラミング研究)
#contents
*Microsoft Visual Studio International Feature Pack 2.0: ...
[[前回>../101]]に引き続き、Microsoft Visual Studio Intern...
**SimpleRubyコントロールを使って、ASP.NETでルビ付き文字を...
[[前回>../101]]は、StringAnnotationsクラスを使ってルビの...
Yomigana Frameworkに用意されているSimpleRubyコントロール...
SimpleRubyコントロールを使うには、YomiganaFramework.dllと...
もしSimpleRubyコントロールがツールボックスに表示されてい...
+ツールボックスの「全般」タブを右クリックしてメニューを出...
+「ツールボックスアイテムの選択」ダイアログの「.NET Frame...
+「.NET Framework コンポーネント」のリストに「YomiganaTex...
Visual Studioのデザイン画面でSimpleRubyコントロールをWeb...
+デザイン画面でSimpleRuby1を選択し、「プロパティウィンド...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+Textプロパティの右側にある「...」ボタンをクリックします...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+ルビを振る区切りを決めます。デフォルトでは「福」と「来」...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+ルビを振ります。右上にある「オートフィル」ボタンをクリッ...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+オートフィルでは「ふく」以外の読み仮名がすべて間違えてい...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+これで完成です。SimpleRuby1のTextプロパティが「\uFFF9笑\...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
SimpleRuby1のソースは、以下のようになります。
#prescroll{{
<cc1:SimpleRuby ID="SimpleRuby1" runat="server"
Text="\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\...
</cc1:SimpleRuby>
}}
これを実行した時に生成されるHTMLは、以下のようになります。
#prescroll(wrap=true){{
<span id="SimpleRuby1"><ruby ><rb>笑</rb><rp >(</rp><rt >...
}}
これをruby要素に対応しているWebブラウザで表示すると、次の...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
ruby要素に対応していないWebブラウザで表示すると、「笑(わ...
***Textプロパティの書式 [#y3351a48]
上記の例では「読み仮名エディタ」を使用してTextプロパティ...
Textプロパティに指定する文字列は、[[ユニコード上のルビ>ht...
Textプロパティにはこのようなルビ表示制御文字そのものを使...
逆に言えば、"\uFFF9"をそのまま表示したくて"\uFFF9"と書い...
#code(vbnet){{
'下のどちらでもOK
SimpleRuby1.Text = Char.ConvertFromUtf32(&HFFF9) & "笑" & _
Char.ConvertFromUtf32(&HFFFA) & "わら" & Char.Convert...
"う" & Char.ConvertFromUtf32(&HFFF9) & "門" & Char.Co...
"かど" & Char.ConvertFromUtf32(&HFFFB) & "には"
SimpleRuby1.Text = _
"\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\uFFFB...
}}
#code(csharp){{
//下のどちらでもOK
SimpleRuby1.Text =
"\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\uFFFB...
SimpleRuby1.Text =
@"\uFFF9笑\uFFFAわらう\uFFFBう\uFFF9門\uFFFAかど\uFFF...
}}
***ruby要素に対応していないブラウザで表示されるルビを囲む...
SimpleRubyでは、ルビの前後にrp要素が必ず入ります。これに...
ルビを囲む括弧を変更するには、FallbackLeftParenthesisとFa...
なお、SimpleRubyではrp要素が必ず入り、消す方法が無いよう...
***ruby要素とrt要素にクラス名を与える [#g41332e9]
SimpleRubyでruby要素にクラス名を与えるには、RubyCssClass...
例えばRubyCssClassプロパティを"kanji"、RubyTextCssClassプ...
#prescroll(wrap=true){{
<span id="SimpleRuby1"><ruby class = "kanji"><rb>笑</rb><...
}}
***ruby要素とHTMLのバージョン [#h1a5dbbb]
ruby要素は、Internet Explorerでは5.0から独自に対応してい...
また、HTML5ではrb要素を採用していませんので、rb要素を省略...
つまりSimpleRubyは、正式には、XHTML1.1以上でしか使用でき...
**ユーザーが入力した文字列の読み仮名を取得する [#g5ac19a7]
Yomigana Frameworkには、ユーザーがIMEで入力した文字列の読...
|名前|種類|DLL|名前空間|h
|YomiganaTextBox コントロール|Windowsフォームコントロール...
|YomiganaWPFTextBox コントロール|WPFコントロール|Yomigana...
|YomiganaExtender コントロール|Ajaxエクステンダーコントロ...
この内ここでは、YomiganaTextBoxとYomiganaExtenderコントロ...
**YomiganaTextBoxコントロールを使う [#w0674da5]
YomiganaTextBoxコントロールを使うと、Windowsフォームコン...
YomiganaTextBoxコントロールはYomiganaTextBox.dllに含まれ...
YomiganaTextBoxコントロールがツールボックスに登録されたな...
YomiganaTextBox1に入力された文字列の読み仮名がTextBox1に...
出来上がったアプリケーションを実行させてみましょう。Yomig...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
このように、YomiganaTextBoxがフォーカスを失ったときに、Bi...
YomiganaTextBoxに入力された文字列の読み仮名は、TextCaptur...
***IMEで確定したときに読みを取得する [#p22892cc]
ユーザーがIMEで入力文字を確定したとき、YomiganaTextBoxのY...
#code(vbnet){{
'YomiganaTextBox1のYomiganaChangedイベントハンドラ
Private Sub YomiganaTextBox1_YomiganaChanged(ByVal sender...
ByVal e As E...
Handles Yomigana...
Console.WriteLine("読み: " + YomiganaTextBox1.TextCap...
End Sub
}}
#code(csharp){{
//YomiganaTextBox1のYomiganaChangedイベントハンドラ
private void YomiganaTextBox1_YomiganaChanged(object send...
{
Console.WriteLine("読み: " + YomiganaTextBox1.TextCap...
}
}}
***読みをひらがな、カタカナ、半角カタカナで取得する [#k23...
YomiganaTextBoxが取得した読み(TextCapturedプロパティ)は...
|PreferredConversion列挙体のメンバ|説明|h
|None|ユーザーが入力したカナのまま。|
|ToHiragana|カタカナと半角カタカナをひらがなに変換する。|
|ToKatakana|ひらがなと半角カタカナをカタカナに変換する。|
|ToHalfwidthKatakana|ひらがなとカタカナを半角カタカナに変...
なおこれらの変換は、[[.NETプログラミング研究第87号>../87]...
また、TextCapturedPreferredConversionプロパティがNoneでな...
***YomiganaTextBoxが読みを取得する仕組みと、不具合 [#fca1...
YomiganaTextBoxは、[[ImmGetCompositionString関数>http://m...
そのため、色々な制限(不具合?)があります。例えば、Yomig...
同じように、YomiganaTextBoxにIMEで入力した文字列を数文字...
このように、TextCapturedプロパティの値はYomiganaTextBoxに...
その他、コピペで貼りつけた文字列の読み仮名ももちろん取得...
***その他の不具合 [#o66fea02]
私が試した限りでは、TextAnnotatedプロパティは常にnullを返...
**YomiganaExtenderコントロールを使う [#bedcd2b7]
YomiganaExtenderコントロールを使うと、Webアプリケーション...
YomiganaExtenderコントロールを使うには、YomiganaFramework...
また、YomiganaExtenderコントロールをツールボックスに登録...
それでは、テキストボックスに入力された文字列の読み仮名を...
まずは、以下の手順でWebサービスを作成します。
+メニューの「プロジェクト」-「新しい項目の追加」(または...
+「HTMLページ」を選択し、名前に「yomigana.asmx」と入力し...
+yomigana.asmxを開き、内容を次のように書き換えて、保存し...
#prescroll{{
<%@ WebService Language="C#" CodeBehind="~/bin/YomiganaE...
}}
次に、Webページを作成します。まずは必要なコントロールを配...
+デザイナを使用して、WebページにTextBoxコントロールを配置...
+同じくWebページにLabelコントロールを配置します。このLabe...
+さらにWebページにScriptManagerコントロールを配置します。...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
次に、テキストボックスにエクステンダーを追加します。
+TextBox1をクリックして選択し、スマートタグを表示させます...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
+「エクステンダーウィザード」で「YomiganaExtender」を選択...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
次に、YomiganaExtenderのプロパティを設定します。
+「プロパティウィンドウ」のドロップダウンリストで「TextBo...
+TextBox1_YomiganaExtenderのServicePathプロパティを「yomi...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
これで出来上がりです。ちなみにソースは、以下のようになり...
#prescroll{{
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<cc1:YomiganaExtender ID="TextBox1_YomiganaExtender" runa...
ServicePath="yomigana.asmx" TargetBindingControl="Lab...
TargetControlID="TextBox1">
</cc1:YomiganaExtender>
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
}}
実際に試してみましょう。TextBox1にIMEを使って「わらうかど...
#embed(<a href="https://www.flickr.com/photos/dobondotnet...
***試して気づいたこと [#t0143dbc]
私が試したところでは、Internet Explorer 8では動作しました...
YomiganaTextBoxでは文字列の一部を削除したり、文字列の途中...
**コメント [#k663bfa2]
#comment
//これより下は編集しないでください
#pageinfo([[:Category/.NET]] [[:Category/ASP.NET]],2011-0...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]