[.NET][Visual Studio]CodeLensを非表示にする。(○○個の参照) [Programming .NET Tips]
[はじめに]
Visual Studioはバージョンアップのたびに様々な便利機能が追加されますが、
便利な反面、稀に不便なものもあります。
そのうちの1つがCodeLensです。(あくまでも筆者の感想です)
CodeLensとは、
Visual Studio 2015で追加された機能で、
コードエディタ上で、メソッドやクラスの定義の上の行に、
そのメソッドやクラスを参照している個数を表示する機能です。
(図1で「4個の参照」と表示されている箇所です。)
一見、便利な機能ですが、
コード編集時に「○○個の参照」の行にカーソルが入らない為、
編集時に思い通りの動作にならず、不便に感じることがあります。
CodeLensを無効にする設定が一見わかりづらいので、
無効にする手順を、備忘録として掲載します。
【図1】
[CodeLensを無効にする手順]
(1)Visual Studio の「ツール」→「オプション」を選択し、
オプションダイアログを表示させる。
(2)オプションダイアログの左側のツリービューで、
「テキストエディタ」→「すべての言語]」→「CodeLens」をクリックし、
右側のエリアの「CodeLens を有効にする」の
チェックボックスのチェックを外す。
(3)(2)まで実施すると、CodeLensの表記が表示されなくなります。
Visual Studioはバージョンアップのたびに様々な便利機能が追加されますが、
便利な反面、稀に不便なものもあります。
そのうちの1つがCodeLensです。(あくまでも筆者の感想です)
CodeLensとは、
Visual Studio 2015で追加された機能で、
コードエディタ上で、メソッドやクラスの定義の上の行に、
そのメソッドやクラスを参照している個数を表示する機能です。
(図1で「4個の参照」と表示されている箇所です。)
一見、便利な機能ですが、
コード編集時に「○○個の参照」の行にカーソルが入らない為、
編集時に思い通りの動作にならず、不便に感じることがあります。
CodeLensを無効にする設定が一見わかりづらいので、
無効にする手順を、備忘録として掲載します。
【図1】
[CodeLensを無効にする手順]
(1)Visual Studio の「ツール」→「オプション」を選択し、
オプションダイアログを表示させる。
(2)オプションダイアログの左側のツリービューで、
「テキストエディタ」→「すべての言語]」→「CodeLens」をクリックし、
右側のエリアの「CodeLens を有効にする」の
チェックボックスのチェックを外す。
(3)(2)まで実施すると、CodeLensの表記が表示されなくなります。
[.NET]yield returnの使用例(C#) [Programming .NET Tips]
[はじめに]
C#には「yield」キーワードがありますが、
他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
※「yield」は、
他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。
「yield」は、
オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
逐次処理するためのデザインパターンです。
C#では、.NET Framework 2.0(Visual Studio 2005)から
「yield」が導入されました。
.NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
Iteratorパターンを実装するには、
IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
記述する必要がありましたが、
.NET Framework 2.0(Visual Studio 2005)以降では、
それらのクラスは「yield return」で代用され、
Iteratorパターンの実装がより簡潔になりました。
[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
[ご参考]
C#には「yield」キーワードがありますが、
他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
※「yield」は、
他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。
「yield」は、
オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
逐次処理するためのデザインパターンです。
C#では、.NET Framework 2.0(Visual Studio 2005)から
「yield」が導入されました。
.NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
Iteratorパターンを実装するには、
IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
記述する必要がありましたが、
.NET Framework 2.0(Visual Studio 2005)以降では、
それらのクラスは「yield return」で代用され、
Iteratorパターンの実装がより簡潔になりました。
[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
| |
[C#]yield returnの使用例(その2) |
| |
[C#]yield returnの使用例(その2) |
[ご参考]
Iteratorパターンについて |
デザインパターン「Iterator」-Qiita |
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1] [Programming .NET Tips]
[はじめに]
・「[.NET]プログラムコードの変換(C#、VB.NET→HTML)」で
公開しているサンプルソースの改良版です。
・プログラムソース(C#、VB.NET)を
ブログ公開用のHTMLに変換するツールです。
(コード量が膨大の為、変換処理のみ掲載しています。)
[前Verからの改良内容]
前Verでは、コードのコピー機能がIE限定でしたが、Edgeにも対応させるよう改良。
・前Ver:コードのコピー機能がIEのみに対応。
・現Ver:コードのコピー機能をEdgeにも対応。(対応ブラウザ:IE、Edge)
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」ボタンを付加)
IE、Edgeで動作確認済。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
・「[.NET]プログラムコードの変換(C#、VB.NET→HTML)」で
公開しているサンプルソースの改良版です。
・プログラムソース(C#、VB.NET)を
ブログ公開用のHTMLに変換するツールです。
(コード量が膨大の為、変換処理のみ掲載しています。)
[前Verからの改良内容]
前Verでは、コードのコピー機能がIE限定でしたが、Edgeにも対応させるよう改良。
・前Ver:コードのコピー機能がIEのみに対応。
・現Ver:コードのコピー機能をEdgeにも対応。(対応ブラウザ:IE、Edge)
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」ボタンを付加)
IE、Edgeで動作確認済。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
| |
[VB.NET]変換機能の使用例 |
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]CodeConverterToHtml |
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2] [Programming .NET Tips]
[はじめに]
「[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
「[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]CSharpCodeConverterToHtml.vb |
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3] [Programming .NET Tips]
[はじめに]
「[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
「[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET][Edge対応版]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]SqlServerCodeConverterToHtml |
[.NET]JSON.NET(.NET4以降)その1 [Programming .NET Tips]
[はじめに]
・.NETでJSONデータを扱う機会があったので、予習がてらに作ってみました。
JSONの解析には、逆シリアライズを使用します。
.NET3.5以降であれば、.NET標準のクラスライブラリでも実装できますが、
逆シリアライズの結果を格納するクラスを、別途定義する必要があるので、
もっとシンプルにできないか調べてみました。
フリーのライブラリで『JSON.NET』を使うと、よりシンプルに実装できそうなので、
サンプルを作ってみました。(.NET4で作成します。)
[JSON.NETについて]
・ダウンロード元
下記サイトからダウンロードできます。
http://json.codeplex.com/
・対象フレームワーク
・.NET 2.0
・.NET 3.5
・.NET 4
・Silverlight
・Windows Phone and Windows 8
・オープンソース
ソースが公開されているので、
ソリューションにプロジェクトに追加して、そのままビルドできます。
プロジェクトファイルが、.NETのバージョン毎に用意されているので、
対応するプロジェクトを追加します。
・言語
C#で記述していますが、
ライブラリの呼出しは、.NET言語であれば、C#以外でも可能です。
[ソース]
・.NETでJSONデータを扱う機会があったので、予習がてらに作ってみました。
JSONの解析には、逆シリアライズを使用します。
.NET3.5以降であれば、.NET標準のクラスライブラリでも実装できますが、
逆シリアライズの結果を格納するクラスを、別途定義する必要があるので、
もっとシンプルにできないか調べてみました。
フリーのライブラリで『JSON.NET』を使うと、よりシンプルに実装できそうなので、
サンプルを作ってみました。(.NET4で作成します。)
[JSON.NETについて]
・ダウンロード元
下記サイトからダウンロードできます。
http://json.codeplex.com/
・対象フレームワーク
・.NET 2.0
・.NET 3.5
・.NET 4
・Silverlight
・Windows Phone and Windows 8
・オープンソース
ソースが公開されているので、
ソリューションにプロジェクトに追加して、そのままビルドできます。
プロジェクトファイルが、.NETのバージョン毎に用意されているので、
対応するプロジェクトを追加します。
・言語
C#で記述していますが、
ライブラリの呼出しは、.NET言語であれば、C#以外でも可能です。
[ソース]
| |
[C#]JSON.NET |
[.NET]C#、VB.NET相互変換 [Programming .NET Tips]
ネットを徘徊していたら、こんなのを見つけました。
C#とVB.NETは配列の宣言で添え字の考え方が異なるので、
試しに配列の宣言のステートメントを入力したところ、
正しく変換してくれました。
[VB.NET]
Dim a() As Integer = New Integer(5){}
↓
[C#]
int[] a = new int[6];
精度はよいと思います。
しかし、やはり言語特有の文法は無理のようで、
C#のyieldや、VB.NETのHandles等はエラーになりました。
Handlesがエラーになると、
画面系が変換できなくなるので、
融通を利かせて欲しいなぁ。。。
[Convert C# to VB.NET]、[Convert VB.NET to C#] |
C#、VB.NETの相互変換のサイト |
C#とVB.NETは配列の宣言で添え字の考え方が異なるので、
試しに配列の宣言のステートメントを入力したところ、
正しく変換してくれました。
[VB.NET]
Dim a() As Integer = New Integer(5){}
↓
[C#]
int[] a = new int[6];
精度はよいと思います。
しかし、やはり言語特有の文法は無理のようで、
C#のyieldや、VB.NETのHandles等はエラーになりました。
Handlesがエラーになると、
画面系が変換できなくなるので、
融通を利かせて欲しいなぁ。。。
[.NET]VisualStudio2005でデバッグできない。(ASP.NET、IE8) [Programming .NET Tips]
下記環境で、ASP.NETの開発を行うと、
デバッグが行えないらしい。
・開発ツール:『Visual Studio 2005』(以下VS2005)
・ブラウザ:『Internet Explorer 8』(以下IE8)
よくよく調べてみるとこんな情報が。。。(英語ですが)
↓
『Tip #51 Did you know… how to use VS2005 to debug with IE8?』
最近はVS2005を使う人は少ないかもしれませんが、
もしいたらはまってしまうと思うので、
メモを残しておきます。
(…というよりも私がはまったので(笑))
↓
【手順】
1.RegEditを開きます。
2.HKEY_LOCALMACHINE ->
SOFTWARE ->
Microsoft ->
Internet Explorer ->
Mainを表示します。
3.「TabProcGrowth」キーを追加します。(DWORD値)
4.値を0にします。
デバッグが行えないらしい。
・開発ツール:『Visual Studio 2005』(以下VS2005)
・ブラウザ:『Internet Explorer 8』(以下IE8)
よくよく調べてみるとこんな情報が。。。(英語ですが)
↓
『Tip #51 Did you know… how to use VS2005 to debug with IE8?』
最近はVS2005を使う人は少ないかもしれませんが、
もしいたらはまってしまうと思うので、
メモを残しておきます。
(…というよりも私がはまったので(笑))
↓
【手順】
1.RegEditを開きます。
2.HKEY_LOCALMACHINE ->
SOFTWARE ->
Microsoft ->
Internet Explorer ->
Mainを表示します。
3.「TabProcGrowth」キーを追加します。(DWORD値)
4.値を0にします。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1] [Programming .NET Tips]
[はじめに]
・プログラムソース(C#、VB.NET)をHTMLに変換するツールを
作ってみましたので、ご紹介します。
(全てのソースは膨大なので、変換処理のみ)
このブログに貼り付けているプログラムソースもこのツールで変換したものです。
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
(インデントが無視されない)
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」リンクを付加)
但し、IEのJScriptであるclipboardData.setDataメソッドを使用している為、IE限定です。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
・プログラムソース(C#、VB.NET)をHTMLに変換するツールを
作ってみましたので、ご紹介します。
(全てのソースは膨大なので、変換処理のみ)
このブログに貼り付けているプログラムソースもこのツールで変換したものです。
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
(インデントが無視されない)
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」リンクを付加)
但し、IEのJScriptであるclipboardData.setDataメソッドを使用している為、IE限定です。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
| |
[VB.NET]変換機能の使用例 |
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]CodeConverterToHtml |
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2] [Programming .NET Tips]
[はじめに]
「[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
「[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]CSharpCodeConverterToHtml.vb |
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3] [Programming .NET Tips]
[はじめに]
「[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
「[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]」からの続きです。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]SqlServerCodeConverterToHtml |
[.NET]QRコードの変換 [Programming .NET Tips]
[はじめに]
・最近、仕事でQRコードを扱うシステム開発に携わる機会が多いので、
.NETでも作ってみました。
.NET FrameworkではQRコードを標準でサポートしていない為、
外部のコンポーネントを利用しています。
[関連情報]
・QRコードの仕様 (デンソーウェーブのサイト)
http://www.qrcode.com
・外部コンポーネント
「ThoughtWorks.QRCode.dll」を参照しています。
[Open Source QRCode Library] からダウンロードできます。
「ThoughtWorks.QRCode.dll」を参照は、「参照設定」から追加して下さい。
(※追加しないとコンパイルエラーになります。)
[ソース]
QRコードの変換ユーティリティクラスです。
提供するメソッドは、以下の2つです。
・Encodeメソッド:文字列をQRコードのイメージに変換する。
・Decodeメソッド:QRコードのイメージから文字列を取得する。
・最近、仕事でQRコードを扱うシステム開発に携わる機会が多いので、
.NETでも作ってみました。
.NET FrameworkではQRコードを標準でサポートしていない為、
外部のコンポーネントを利用しています。
[関連情報]
・QRコードの仕様 (デンソーウェーブのサイト)
http://www.qrcode.com
・外部コンポーネント
「ThoughtWorks.QRCode.dll」を参照しています。
[Open Source QRCode Library] からダウンロードできます。
「ThoughtWorks.QRCode.dll」を参照は、「参照設定」から追加して下さい。
(※追加しないとコンパイルエラーになります。)
[ソース]
QRコードの変換ユーティリティクラスです。
提供するメソッドは、以下の2つです。
・Encodeメソッド:文字列をQRコードのイメージに変換する。
・Decodeメソッド:QRコードのイメージから文字列を取得する。
| |
[VB.NET]QRコードの変換ユーティリティ |
[.NET]データベースの接続文字列の書式を簡単に知るには? [Programming .NET Tips]
[はじめに]
・.NETのアプリケーションからデータベースに接続する場合、
接続文字列という情報が必要になります。(.NETに限った話ではありませんが…)
.NETのアプリケーション開発で、接続文字列の書式が分からない場合、
書籍やインターネット、他のアプリケーションを参考にすることがありますが、
「Visual Studio 2008」の機能を使って、接続文字列を簡単に取得する方法があります。
(※「Visual Studio 2008」とありますが、
「Visual Studio.NET 2002」、「Visual Studio.NET 2003」、
「Visual Studio 2005」でも可能です。
試していないので若干方法が異なると思いますがご了承下さい。)
[前提条件]
・「Visual Studio 2008」がインストールされていること。
・データベースにアクセスできること。
[手順]
(1)「Visual Studio 2008」を起動し、「サーバーエクスプローラ」を選択します。
(※「サーバーエクスプローラ」が表示されない場合は、「ツール」から表示可能にできます。)
(2)「データ接続」を右クリックし、「接続の追加」を選択します。
(3)「データソースの変更」画面で、「データソース」や「データプロバイダ」を選択します。
選択する内容は、接続するデータベースの種類によって変わります。
ここでは、「SQL Server 2005 Express Edition」に接続する例として、
「データソース」に「Microsoft SQL Server」、
「データプロバイダ」に「.NETFrameworkSQLServer用データプロバイダ」を選択します。
(4)「接続の追加」画面で、接続情報を入力します。
ここでは、
・接続先のサーバを「(local)」、
・認証方式を「Windows認証」、
・接続先データベースを「master」
とします。
接続情報を入力したら、「テスト接続」ボタンを押して、
データベースの接続がうまく行えることを確認します。
(5)データベースの接続が成功したら、確認画面が表示されます。
確認メッセージを「OK」ボタンで閉じ、
「詳細設定」ボタンを押し「詳細プロパティ」画面を表示します。
(6)「詳細プロパティ」画面の一番下の欄に、接続文字列が表示されます。
通常のテキストなので、コピーして流用することもできます。
この場合の書式文字列は、
「Data Source=(local);Initial Catalog=master;Integrated Security=True」
です。
[関連サイト]
(1)接続文字列の使用
http://msdn.microsoft.com/ja-jp/library/ms254978(VS.80).aspx
・.NETのアプリケーションからデータベースに接続する場合、
接続文字列という情報が必要になります。(.NETに限った話ではありませんが…)
.NETのアプリケーション開発で、接続文字列の書式が分からない場合、
書籍やインターネット、他のアプリケーションを参考にすることがありますが、
「Visual Studio 2008」の機能を使って、接続文字列を簡単に取得する方法があります。
(※「Visual Studio 2008」とありますが、
「Visual Studio.NET 2002」、「Visual Studio.NET 2003」、
「Visual Studio 2005」でも可能です。
試していないので若干方法が異なると思いますがご了承下さい。)
[前提条件]
・「Visual Studio 2008」がインストールされていること。
・データベースにアクセスできること。
[手順]
(1)「Visual Studio 2008」を起動し、「サーバーエクスプローラ」を選択します。
(※「サーバーエクスプローラ」が表示されない場合は、「ツール」から表示可能にできます。)
(2)「データ接続」を右クリックし、「接続の追加」を選択します。
(3)「データソースの変更」画面で、「データソース」や「データプロバイダ」を選択します。
選択する内容は、接続するデータベースの種類によって変わります。
ここでは、「SQL Server 2005 Express Edition」に接続する例として、
「データソース」に「Microsoft SQL Server」、
「データプロバイダ」に「.NETFrameworkSQLServer用データプロバイダ」を選択します。
(4)「接続の追加」画面で、接続情報を入力します。
ここでは、
・接続先のサーバを「(local)」、
・認証方式を「Windows認証」、
・接続先データベースを「master」
とします。
接続情報を入力したら、「テスト接続」ボタンを押して、
データベースの接続がうまく行えることを確認します。
(5)データベースの接続が成功したら、確認画面が表示されます。
確認メッセージを「OK」ボタンで閉じ、
「詳細設定」ボタンを押し「詳細プロパティ」画面を表示します。
(6)「詳細プロパティ」画面の一番下の欄に、接続文字列が表示されます。
通常のテキストなので、コピーして流用することもできます。
この場合の書式文字列は、
「Data Source=(local);Initial Catalog=master;Integrated Security=True」
です。
[関連サイト]
(1)接続文字列の使用
http://msdn.microsoft.com/ja-jp/library/ms254978(VS.80).aspx
[.NET]例外の再スロー(Throwの引数の有無) [Programming .NET Tips]
[ポイント]
・.NET系言語(C#、VB.NET)のプログラムコードで、
以下のような構文を見かけることがあります。
Tryステートメント内で発生した例外をCatchして、
再度スローする処理で、「Throw ex」と書く人が結構多いようですが、
実はこのような書き方をすると、
ここでCatchする以前のトレース情報が失われてしまうのです。
トレース情報を保持しつつ再スローするには、
以下の様に、「Throw ex」ではなく「Throw 」と記述します。
なぜか書籍やMSDNにも、前者の書き方でサンプルを紹介している為、
知らない人が多いようです。
(Throwステートメントとは直接関係ないサンプルだから、
あまり重要視していないのだと思いますが…)
[参考文献]
[検証]
Throwステートメントの仕様について、
2つのパターンの検証プログラムを実行して、結果を比較してみた。
・パターン1(Throwステートメントに引数がある場合)
・パターン1の実行結果(Throwステートメント[引数あり])
Throwの引数を指定した場合は、
保持されているトレース情報は、Method1、Button1_Clickのみで、
Method2、Method3、Method4は保持されていないことがわかります。
引数指定での再スローでは、それより前のトレース情報を保持しない為です。
この例では、
Method3で再スローする時に、Method4以降のトレース情報を保持しない、
Method2で再スローする時に、Method3以降のトレース情報を保持しない、
Method1で再スローする時に、Method2以降のトレース情報を保持しない為、
図のような結果になります。
・パターン2(Throwステートメント[引数なし])
・パターン2の実行結果(Throwステートメント[引数なし])
Throwの引数を指定しない場合は、
関連するトレース情報(Method1、Method2、Method3、Method4、Button1_Click)を
全て保持していることがわかります。
・.NET系言語(C#、VB.NET)のプログラムコードで、
以下のような構文を見かけることがあります。
| |
[VB.NET]例外の再スロー[Throwの引数がある場合] |
再度スローする処理で、「Throw ex」と書く人が結構多いようですが、
実はこのような書き方をすると、
ここでCatchする以前のトレース情報が失われてしまうのです。
トレース情報を保持しつつ再スローするには、
以下の様に、「Throw ex」ではなく「Throw 」と記述します。
| |
[VB.NET]例外の再スロー[Throwの引数がない場合] |
なぜか書籍やMSDNにも、前者の書き方でサンプルを紹介している為、
知らない人が多いようです。
(Throwステートメントとは直接関係ないサンプルだから、
あまり重要視していないのだと思いますが…)
[参考文献]
・「C#クックブック 第3版」 |
「レシピ4.1 キャッチした例外を再スローするタイミングを把握する」で、 Throwステートメントの引数の有無の違いを明確に説明しています。 「Throw」(引数なし)の記述を推奨しています。 |
・「プログラミングC#―C#2.0/.NET2.0/Visual Studio2005対応」 |
「11.4 例外の再スロー」で、 理由の説明はないが、「Throw」(引数なし)の記述を推奨しています。 |
[検証]
Throwステートメントの仕様について、
2つのパターンの検証プログラムを実行して、結果を比較してみた。
パターン1 |
Throwステートメントに引数がある場合、 Button1_Click()→Method1()→Method2()→Method3()→Method4()と メソッドを呼び、最下層のMethod4()で ゼロ除算の例外(System.DevideByZeroException)を意図的に発生させる。 各々のメソッドのCatch句では、「Throw ex」(引数あり)で例外を再Throwする。 最上位メソッドにて、例外の内容(ToString()した結果)を表示する。 |
パターン2 |
Throwステートメントに引数がない場合、 Button1_Click()→Method1()→Method2()→Method3()→Method4()と メソッドを呼び、最下層のMethod4()で ゼロ除算の例外(System.DevideByZeroException)を意図的に発生させる。 各々のメソッドのCatch句では、「Throw 」(引数なし)で例外を再Throwする。 最上位メソッドにて、例外の内容(ToString()した結果)を表示する。 |
・パターン1(Throwステートメントに引数がある場合)
| |
[VB.NET]例外[Throwの引数がある場合] |
Throwの引数を指定した場合は、
保持されているトレース情報は、Method1、Button1_Clickのみで、
Method2、Method3、Method4は保持されていないことがわかります。
引数指定での再スローでは、それより前のトレース情報を保持しない為です。
この例では、
Method3で再スローする時に、Method4以降のトレース情報を保持しない、
Method2で再スローする時に、Method3以降のトレース情報を保持しない、
Method1で再スローする時に、Method2以降のトレース情報を保持しない為、
図のような結果になります。
・パターン2(Throwステートメント[引数なし])
| |
[VB.NET]例外[Throwの引数がない場合] |
Throwの引数を指定しない場合は、
関連するトレース情報(Method1、Method2、Method3、Method4、Button1_Click)を
全て保持していることがわかります。
[.NET]カスタマイズした構成情報の利用(.NET1.1以前が対象) [Programming .NET Tips]
[ポイント]
(1)カスタム構成セクションとは?
通常、アプリケーションの構成情報は、appSettingsノード配下の
addノード(key属性とvalue属性)に記述するルールですが、
独自のルール(独自のXMLタグ)で定義することもできます。
この独自のXMLタグで定義された構成情報を、「カスタム構成セクション」と呼びます。
「カスタム構成セクション」にアクセスする為には、
プログラム上で「カスタム構成セクションハンドラ」クラスを実装し、
構成ファイルに「カスタム構成セクションハンドラ」を追加する必要があります。
(2)カスタム構成セクションハンドラとは?
カスタム構成セクションにアクセスする為には、
その独自のXMLタグを解析する必要があります。
その独自のXMLタグを解析するクラスを、「カスタム構成セクションハンドラ」と呼びます。
カスタム構成セクションハンドラは、以下の(a)(b)の条件に従って実装する必要があります。
(a)System.Configuration.IConfigurationSectionHandlerインタフェースを実装する。
(b)IConfigurationSectionHandlerインタフェースのCreateメソッドに、
カスタム構成セクションを解析する処理を実装する。
(3)カスタム構成セクションハンドラが、カスタム構成セクションにアクセスするには?
カスタム構成セクションハンドラがカスタムセクションにアクセスする為には、
構成ファイルに、構成セクションハンドラを追加する必要があります。
追加することにより、カスタム構成セクションハンドラとカスタムセクションの対応付けを
定義したことになります。
(4)利用可能な.NET Frameworkのバージョンは?
本記事のサンプルは、.NET1.1以前で主流だった方法です。
.NET2.0以降では、「ConfigurationSection」クラスを使用する方法が
推奨されています。(.NET2.0以降でも使用可能)
(5))参考文献
・『MSDN Library for VisualStudio2008日本語版』
・『MCTSスキルチェック問題集70-536 .NET Framework2.0アプリケーション構築基礎』
カスタム構成セクションにアクセスする例を、以下の(1)~(4)に分けて示します。
(1)カスタム構成セクションの定義
例として、日本の地域と県、県と県庁所在地の対応を定義しています。
[ソース]
(2)カスタム構成セクションハンドラの実装
System.Configuration.IConfigurationSectionHandlerインタフェースを
実装したクラスを定義します。
System.Configuration.IConfigurationSectionHandlerインタフェースの
Createメソッドに、カスタム構成セクションのアクセス処理を実装します。
この例では、カスタム構成セクションから、県と県庁所在地の一覧を取得し、
HashTableに格納しています。
[ソース]
(3)構成ファイルにカスタム構成セクションハンドラの追加
「myCustomGroup」、「Country」の対応付けを定義し、
更に「Country」のセクションハンドラを定義しています。
type属性には、カスタム構成セクションハンドラのアセンブリ修飾名を指定します。
アセンブリ修飾名については、
MessageBox.Show( _
New MyCustomConfigHandler1_1().GetType().AssemblyQualifiedName)
で確認できます。
[ソース]
(4)構成情報の取得
以下に、カスタム構成セクションハンドラを使用して構成情報を取得する例を示します。
取得には、System.Configuration.ConfigurationSettingsクラスの
GetConfigメソッドを使用します。(※.NET2.0以降では警告がでます。)
GetConfigの引数には、起点となるカスタム構成セクションのノード名を指定します。
[ソース]
(1)カスタム構成セクションとは?
通常、アプリケーションの構成情報は、appSettingsノード配下の
addノード(key属性とvalue属性)に記述するルールですが、
独自のルール(独自のXMLタグ)で定義することもできます。
この独自のXMLタグで定義された構成情報を、「カスタム構成セクション」と呼びます。
「カスタム構成セクション」にアクセスする為には、
プログラム上で「カスタム構成セクションハンドラ」クラスを実装し、
構成ファイルに「カスタム構成セクションハンドラ」を追加する必要があります。
(2)カスタム構成セクションハンドラとは?
カスタム構成セクションにアクセスする為には、
その独自のXMLタグを解析する必要があります。
その独自のXMLタグを解析するクラスを、「カスタム構成セクションハンドラ」と呼びます。
カスタム構成セクションハンドラは、以下の(a)(b)の条件に従って実装する必要があります。
(a)System.Configuration.IConfigurationSectionHandlerインタフェースを実装する。
(b)IConfigurationSectionHandlerインタフェースのCreateメソッドに、
カスタム構成セクションを解析する処理を実装する。
(3)カスタム構成セクションハンドラが、カスタム構成セクションにアクセスするには?
カスタム構成セクションハンドラがカスタムセクションにアクセスする為には、
構成ファイルに、構成セクションハンドラを追加する必要があります。
追加することにより、カスタム構成セクションハンドラとカスタムセクションの対応付けを
定義したことになります。
(4)利用可能な.NET Frameworkのバージョンは?
本記事のサンプルは、.NET1.1以前で主流だった方法です。
.NET2.0以降では、「ConfigurationSection」クラスを使用する方法が
推奨されています。(.NET2.0以降でも使用可能)
(5))参考文献
・『MSDN Library for VisualStudio2008日本語版』
・『MCTSスキルチェック問題集70-536 .NET Framework2.0アプリケーション構築基礎』
カスタム構成セクションにアクセスする例を、以下の(1)~(4)に分けて示します。
(1)カスタム構成セクションの定義
例として、日本の地域と県、県と県庁所在地の対応を定義しています。
[ソース]
| |
例:カスタム構成セクションの定義 |
(2)カスタム構成セクションハンドラの実装
System.Configuration.IConfigurationSectionHandlerインタフェースを
実装したクラスを定義します。
System.Configuration.IConfigurationSectionHandlerインタフェースの
Createメソッドに、カスタム構成セクションのアクセス処理を実装します。
この例では、カスタム構成セクションから、県と県庁所在地の一覧を取得し、
HashTableに格納しています。
[ソース]
| |
[VB.NET]例:カスタム構成セクションハンドラの実装 |
(3)構成ファイルにカスタム構成セクションハンドラの追加
「myCustomGroup」、「Country」の対応付けを定義し、
更に「Country」のセクションハンドラを定義しています。
type属性には、カスタム構成セクションハンドラのアセンブリ修飾名を指定します。
アセンブリ修飾名については、
MessageBox.Show( _
New MyCustomConfigHandler1_1().GetType().AssemblyQualifiedName)
で確認できます。
[ソース]
| |
例:カスタム構成セクションハンドラの追加 |
(4)構成情報の取得
以下に、カスタム構成セクションハンドラを使用して構成情報を取得する例を示します。
取得には、System.Configuration.ConfigurationSettingsクラスの
GetConfigメソッドを使用します。(※.NET2.0以降では警告がでます。)
GetConfigの引数には、起点となるカスタム構成セクションのノード名を指定します。
[ソース]
| |
[VB.NET]例:カスタム構成セクションハンドラを使用して構成情報を取得する |
[.NET]メールの送信(.NET2.0以降) [Programming .NET Tips]
[ポイント]
・メールを送信するサンプルプログラムです。(最も簡単な例)
・クラスライブラリ
.NETFramework2.0から新たに追加されたクラスを使用しています。
(1.1以前では『System.Web.Mail』名前空間のクラスが使用されていましたが、
2.0以降は『System.Net.Mail』名前空間のクラスが推奨されています。)
・CDO(Microsoft Collaboration Data Objects)
Windowsでは、メールの送信機能として『CDO』を用意しています。
CDOは、VB6やEXCEL VBA等からも利用することができますが、
インタフェースがわかりにくいものでした。
.NETでは、CDOの呼び出しをカプセル化することで、
よりわかりやすいインタフェースを提供しています。
・参考文献
『MSDN Library for VisualStudio2008日本語版』
以下にサンプルソースを示します
・補足
・メールを送信するサンプルプログラムです。(最も簡単な例)
・クラスライブラリ
.NETFramework2.0から新たに追加されたクラスを使用しています。
(1.1以前では『System.Web.Mail』名前空間のクラスが使用されていましたが、
2.0以降は『System.Net.Mail』名前空間のクラスが推奨されています。)
クラス名/列挙体名 | 概要 |
System.Net.Mail.SmtpClientクラス | SMTPサーバを表すクラスです。 |
System.Net.Mail.MailMessageクラス | メールを表すクラスです。 |
System.Net.Mail.MailAddressクラス | メールアドレスを表すクラスです。 |
System.Net.Mail.Attachmentクラス | 添付ファイルを表すクラスです。 |
System.Net.NetworkCredential | 認証情報を表すクラスです。 |
System.Net.Mail.MailPriority列挙体 | メールの優先度を表す列挙体です。 |
・CDO(Microsoft Collaboration Data Objects)
Windowsでは、メールの送信機能として『CDO』を用意しています。
CDOは、VB6やEXCEL VBA等からも利用することができますが、
インタフェースがわかりにくいものでした。
.NETでは、CDOの呼び出しをカプセル化することで、
よりわかりやすいインタフェースを提供しています。
・参考文献
『MSDN Library for VisualStudio2008日本語版』
以下にサンプルソースを示します
| |
[VB.NET]メールを送信するサンプル |
| |
[C#]メールを送信するサンプル |
本サンプルは、送信元メールアドレスをYahooメールで確認しています。(2008.12.29現在) Yahooメールで確認するには、 『Yahooメールを他のメーラーで送受信できるようにする』必要があります。 Yahooメールの『POPアクセスとメール転送』で、『ブラウザアクセスとPOPアクセス』に設定して下さい。 あとは、 ユーザ名:YahooID パスワード:YahooIDのパスワード SMTPサーバ:『smtp.mail.yahoo.co.jp』 SMTPのポート番号:『587』 でメールを送信できます。 |
[.NET]関数(y=f(x))のグラフをImageに描画する [Programming .NET Tips]
[ポイント]
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
実行結果
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
実行結果
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
実行結果
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
実行結果
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
| |
[VB.NET]関数のグラフをImageに描画する例 |
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
| |
[VB.NET]例:一次関数の定義 |
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
| |
[VB.NET]DrawFunctionメソッドの呼び出し |
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
| |
[VB.NET]関数を二次関数で定義した場合 |
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
| |
[VB.NET]関数を三角関数で定義した場合 |
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
| |
[VB.NET]関数を平方根で定義した場合 |
[.NET]Imageの分割 [Programming .NET Tips]
ファイルから取り込んだImageを複数に分割する機会があったので、
作ってみました。
[ポイント]
(1)Imageオブジェクトを指定した個数で分割します。
例:縦5個、横10個と指定すると、5×10の2次元配列でImageを作成します。
(2)Imageを分割するには、
Graphics.DrawImage(Image, Integer, Integer, Rectangle, GraphicsUnit)
を使います。
(3)参考文献
『MSDN Library for VisualStudio2008日本語版』
[ソース]
作ってみました。
[ポイント]
(1)Imageオブジェクトを指定した個数で分割します。
例:縦5個、横10個と指定すると、5×10の2次元配列でImageを作成します。
(2)Imageを分割するには、
Graphics.DrawImage(Image, Integer, Integer, Rectangle, GraphicsUnit)
を使います。
(3)参考文献
『MSDN Library for VisualStudio2008日本語版』
[ソース]
| |
[VB.NET]Imageを分割する例 |
| |
[C#]Imageを分割する例 |