タグ

ブックマーク / dobon.net (62)

  • クラスと構造体の使い分け

    クラスと構造体の使い分けクラスと構造体には類似点が多いため、自作する時どちらにするか迷うこともあります。多くの場合はクラスで問題ありませんが、時には構造体の方がよいケースもあります。そこでここでは、どのようなケースでは構造体の方がよいのかについて考えます。 なおここではクラスと構造体の違いについてはあまり説明しません。クラスと構造体の違いについては、「クラスと構造体の違い」をご覧ください。 構造体を選択する時のガイドラインどのような時に構造体を選択すべきかのガイドラインが、MSDNの「クラスまたは構造体の選択」にあります。以下はこのページからの引用です。 型のインスタンスが小さく有効期間が一般に短い場合や、型のインスタンスが一般に他のオブジェクト内に埋め込まれる場合は、クラスではなく、構造体を定義することを検討します。 型が次に挙げるすべての特性を持たない場合、構造体は定義しません。 プリ

    クラスと構造体の使い分け
  • ひらがなとカタカナ、全角と半角の変換を行う - .NET Tips (VB.NET,C#...)

    ひらがなとカタカナ、全角と半角の変換を行うここでは、文字列内のひらがなをカタカナに、カタカナをひらがなに変換する方法を幾つか紹介します。また、半角文字を全角文字に、全角文字を半角文字に変換する方法も紹介します。 VB.NETのStrConv関数を使うVB.NETでは、StrConv関数を使ってひらがなをカタカナに、あるいは、カタカナをひらがなに変換することができます。また、半角文字と全角文字の相互変換もできます。StrConv関数はそれ以外に、大文字と小文字の相互変換もできます。 StrConv関数でどのような変換を行うかは、2番目のパラメータに指定するVbStrConv列挙体の値で決まります。VbStrConv列挙体の値とその意味は、以下の通りです(説明は、MSDNからの抜粋です)。

    ひらがなとカタカナ、全角と半角の変換を行う - .NET Tips (VB.NET,C#...)
    tarchan
    tarchan 2014/05/19
    >単独の濁点をVbStrConv.Wideで変換すると、Windows XPでは全角の濁点になりますが、Windows 7では「?」になります。
  • フォームウィンドウの特定の色を透明にする

    フォームウィンドウの特定の色を透明にするフォームのTransparencyKeyプロパティにより、フォームで透明にしたい色を指定できます。透明な部分は穴が開いたようになり、その下のウィンドウの操作が出来ます。ただし、透明なウィンドウおよび領域はWindows2000以降でだけサポートされているため、Windows98などでは無視されます。下の図はフォームの背景色を赤にしてTransparencyKeyに赤を指定した時のものです。 自由な形のフォームを作成するこのTransparencyKeyを使うことにより、簡単に自由な形のフォームを作ることも可能になります。つまり、フォームの形としたい形で描いた画像ファイルを用意し、フォームにその画像を描画し、画像の背景色をフォームのTransparencyKeyに指定すればよいのです。 例を示しましょう。まずフォームの形となる画像を作成します。ここでは

    フォームウィンドウの特定の色を透明にする
  • 型のメンバを動的に呼び出す - .NET Tips (VB.NET,C#...)

    型のメンバを動的に呼び出すTypeオブジェクトで表された型のインスタンスの作成、メソッドの呼び出し、プロパティ、フィールドの設定と取得の方法について説明します。 ここでは、次のようなクラスが宣言されているものとします。 Namespace MyNamespace Public Class TestClass 'フィールド Private PrivateField As Integer Public StringArray() As String 'プロパティ Public Property PublicProperty() As Integer Get Return PrivateField End Get Set(ByVal Value As Integer) PrivateField = Value End Set End Property 'インデクサ Default Public

    型のメンバを動的に呼び出す - .NET Tips (VB.NET,C#...)
    tarchan
    tarchan 2013/07/12
  • MDIアプリケーションを作成する

    MDIアプリケーションを作成するここではMDI(マルチドキュメントインターフェイス、multiple-document interface)アプリケーションを作成する上で必要な基的な知識を一通り説明します(メニューのマージンに関しては、こちらで説明します)。なお、MDIが何かついては、「Windows フォームのレイアウト オプション」等をご覧ください。 MDIの親となるフォーム(以下「親フォーム」)を作成するには、フォームを作成し、IsMDIContainerプロパティをTrueにするだけです。 MDIの子となるフォーム(以下「子フォーム」)を作成するには、フォームを作成し、MdiParentプロパティに親フォームを指定します。そして、子フォームをShowメソッドで表示すれば、親フォーム内に子フォームが表示されます。 MDI子フォームを表示する具体的なコードを示します(親フォームのクラ

    MDIアプリケーションを作成する
  • TabControlのタブが横にあると正常に表示されない

    TabControlのタブが横にあると正常に表示されないビジュアルスタイルが有効になっており、タブコントロールの外観が通常(TabControl.AppearanceプロパティがTabAppearance.Normal)のとき、タブを右または左に表示しようとすると(TabControl.AlignmentプロパティをTabAlignment.LeftまたはTabAlignment.Rightにすると)、テキストが表示されなくなります。また、タブを下に表示したとき(TabControl.AlignmentプロパティをTabAlignment.Bottomにしたとき)は、テキストは表示されますが、タブの向きが上下逆になります。これを回避するには、ビジュアルスタイルを無効にするか、タブを自分で描画します。ここではこれらの方法を説明します。 TabControlのビジュアルスタイルを無効にするアプ

    TabControlのタブが横にあると正常に表示されない
  • PREPARE文を使用して追加を行う: DOBON.NETプログラミング掲示板過去ログ

    題名: PREPARE文を使用して追加を行う 著者: がちゃぴん 日時: 2005/09/09 11:15:26 ID: 12700 この記事の返信元: (なし) この記事への返信: [12706] Re[1]: PREPARE文を使用して追加を行う 封真 2005/09/09 13:27:37 ツリーを表示 環境/言語:[WindowsNT VB.NET .NETFramework1.1] 分類:[.NET] はじめまして。 がちゃぴんと申します。 いつもこのサイトを参考にさせて頂いています。 現在VB.NETからODBC接続でIBM Informix7.31のデータベースへレコードを追加しようとしています。 しかし7.31では列に文字列を追加する場合の制限があり、256を超えたものは追加できません。 調べているとPREPARE文を使用すると追加できるという情報がありました。 WEB等で

  • オブジェクトの内容をXMLファイルに保存、復元する: .NET Tips: C#, VB.NET, Visual Studio

    オブジェクトの内容をファイルに保存、復元する オブジェクトのXMLシリアル化、逆シリアル化を行うオブジェクトの内容をXMLファイルにして保存し、そのXMLファイルから元のオブジェクトに復元できると色々と便利です。例えば、INIファイルの代わりとして、設定を保存、復元したい時などに有用です。(設定を保存する場合は、「アプリケーションの設定を保存する」も参考にしてください。) これを行うには、XmlSerializerクラス(System.Xml.Serialization名前空間)を使うと簡単です。XMLファイルに書き込む時はSerializeメソッドを使ってオブジェクトをXMLシリアル化(シリアライズ)し、XMLファイルを読み込む時はDeserializeメソッドを使ってXML逆シリアル化(デシリアライズ)をします。 オブジェクトの内容をXMLファイルに保存(シリアル化)する次のコードでは

    オブジェクトの内容をXMLファイルに保存、復元する: .NET Tips: C#, VB.NET, Visual Studio
  • MD5やSHA1などでハッシュ値を計算する

    MD5やSHA1などでハッシュ値を計算するここでは、認証やデジタル署名、ファイルが改ざんされていないことの確認などに使用される、MD5(Message Digest 5)やSHA1(Secure Hash Algorithm 1)などのハッシュ値を計算する方法を説明します。 注意:現在では、あるMD5ハッシュ値と同じハッシュ値のデータを作成することが比較的容易にできます。また、SHA1についても脆弱性が指摘されています。電子政府推奨暗号リストにはMD5は入っておらず、SHA1やRIPEMD-160も注釈として「256ビット以上のハッシュ関数を選択することが望ましい」としています。 文字列のMD5ハッシュ値を計算するMD5CryptoServiceProviderクラスを使用すれば、MD5ハッシュ値を計算することができます。 下の例では、文字列のMD5ハッシュ値を計算し、結果を16進数の数字

    MD5やSHA1などでハッシュ値を計算する
  • DOBON.NET .NET Tips - Drag&Drop(ドラッグ&ドロップ)を行う

    Drag&Dropを行うここではドラッグ&ドロップの例として、あるリストボックス内のアイテムをもう一つのリストボックスにドラッグ&ドロップにより移動させる方法を紹介します。 ドラッグ&ドロップの基まずは、ドロップを受け入れるリストボックスのAllowDropプロパティをTrueにしておきます。 実際にドラッグを開始するには、ドラッグされるアイテムのあるリストボックスのDoDragDropメソッドを呼び出します。ドロップを受け入れるリストボックスでは、リストボックス内にドラッグされた時にDragEnterイベントが発生しますので、ここでドロップを受け入れるか、受け入れるとしたらどのように受け入れるか(コピーか移動か等)を決定します。リストボックスにドロップされるとDragDropイベントが発生しますので、ここでドロップされたデータを取得し、リストボックスへデータを追加します。 次のコードで

    DOBON.NET .NET Tips - Drag&Drop(ドラッグ&ドロップ)を行う
  • TabControlのタブを選択できないようにする

    TabControlのタブを選択できないようにするタブコントロール内のTabPageのEnabledプロパティをFalseにしてもそのタブは選択できてしまいます。ここでは、指定したタブが選択できないようにする方法を紹介します。 .NET Framework 2.0以降で、Selectingイベントを使う方法.NET Framework 2.0以降では、Selectingイベントを使って指定されたタブが選択される前にキャンセルすることができます。 以下の例では、2番目のTabPageを選択できないようにしています。 'TabControl1のSelectingイベントハンドラ Private Sub TabControl1_Selecting(ByVal sender As System.Object, _ ByVal e As System.Windows.Forms.TabControl

    TabControlのタブを選択できないようにする
  • ユーザーがDataGridViewのセルに正しくない値を入力した時に発生するエラーを捕捉する

    注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 例えば、数値型の列のセルにアルファベットを入力すると、「DataGridView の既定のエラーダイアログ」というダイアログが表示され、例外が発生したことをユーザーに知らせます。ユーザーがセルに正しくない値を入力するとこのようなダイアログが表示されますが、ユーザーにとっては意味不明の内容ですので、このようなダイアログをそのまま表示させるのは適切ではありません。 このダイアログを表示しないようにするには、DataErrorイベントをハンドルします。この方法は、ヘルプの「DataGridView の既定のエラーダイアログ」でも説明されています。 DataErrorイベントハンドラにより、独自のダイアログを表示するごく簡単なサンプルを示します。 'DataErrorイベントハンドラ Pri

    ユーザーがDataGridViewのセルに正しくない値を入力した時に発生するエラーを捕捉する
  • ファイルをロック(アクセスを制限)する

    ファイルをロック(アクセスを制限)するファイルを開いているときに、そのファイルの内容が他のプロセスから勝手に変更されては困るというケースは多いでしょう。FileShare列挙体を指定してFileStreamクラスでファイルを開けば、そのファイルへのアクセスをどのように制限するか(読み込みのみを制限するか、書き込みのみを制限するか、両方制限するか、何も制限しないか)を変更できます。この制限は、Closeメソッドでファイルを閉じるまで有効です。 なお、FileStreamでファイルを開く方法については、「ファイルをバイト型配列に読み込む、バイト型配列をファイルに書き込む」で詳しく説明していますので、そちらをご覧ください。 以下の例では、ファイルを閉じるまで、書き込み、読み込みすべてのアクセスを禁止しています。このような方法でファイルを開いている最中に別のプロセス(または自分のプロセス)がファイ

    ファイルをロック(アクセスを制限)する
    tarchan
    tarchan 2012/09/05
    >WordやExcelなどで現在開いているファイルをFileStreamで読み込もうとすると、例外System.IO.IOException(「別のプロセスで使用されているため、プロセスはファイル '(ファイルのパス)' にアクセスできません。」)が発生しま
  • 自作したクラスライブラリのヘルプ(ドキュメント、仕様書)を作成する

    自作したクラスライブラリのヘルプ(ドキュメント、仕様書)を作成する自作したクラスライブラリのヘルプ(ドキュメント、仕様書)を作成するのは面倒ですが、それを自動で作成してくれるツールがあります。これらのツールを使えば、ソースコードファイルに記述されたドキュメントコメントを基にして、MSDNのようなヘルプやHTMLを簡単に作成できます。ここではこのようなツールを幾つか紹介します。 なおここで紹介しているツール(「コードコメントWebレポート」以外)には、ソースコードファイルのドキュメントコメントを出力したXMLファイルが必要ですので、その作り方がわからないという場合は、まず「ドキュメントコメントにより型の概要をXMLファイルに出力する」をご覧ください。 Sandcastle Help File Builderを使用してヘルプを作成する現在最もメジャーなツールが、「Sandcastle Help

    自作したクラスライブラリのヘルプ(ドキュメント、仕様書)を作成する
  • ListViewのサブアイテムの色、フォントを変更する

    ListViewのサブアイテムの色、フォントを変更するListViewのサブアイテムの前景色、背景色、フォントを変更するには、そのサブアイテムのListViewItem.ListViewSubItemオブジェクトのForeColor、BackColor、Fontプロパティをそれぞれ変更すれば良い訳です。ところが、これだけではサブアイテムの見た目は変更しません。これは、そのサブアイテムの親であるListViewItemオブジェクトのUseItemStyleForSubItemsプロパティがTrueになっているためです。UseItemStyleForSubItemsプロパティをFalseにすれば、サブアイテムの色、フォントの変更が反映されます。 次の例では、前景色を黄色、背景色を赤、フォントを太字にしたサブアイテムを持つアイテムをリストビューコントロールListView1に追加しています。 '

    ListViewのサブアイテムの色、フォントを変更する
    tarchan
    tarchan 2012/04/05
    >UseItemStyleForSubItemsプロパティをFalseにすれば、サブアイテムの色、フォントの変更が反映されます。
  • 文字コードを判別する: .NET Tips: C#, VB.NET, Visual Studio

    文字コードを判別するバイト型配列を文字列に変換する方法は「バイト型配列のデータを文字コードを指定して文字列に変換する」で紹介しましたが、データの文字コードが分からなければ変換できません。ここでは、バイト型配列のデータから文字コードを判別する方法を紹介します。 .NET Frameworkでは、基的には、文字コードを判別する方法が用意されていませんので、外部DLL、OCX等を使うか、自分でコードを書くかということになります。 BOMで判断する方法BOM(バイトオーダーマーク、byte order mark)と呼ばれる「印」がデータの先頭に付いている時は、これを手掛かりに文字コードを判別することができます。 以下に、BOMから文字コード(UTF-8、UTF-16BE、UTF-16LE、UTF-32BE、UTF-32LE)を判別するメソッドの例を示します。 ''' <summary> '''

    文字コードを判別する: .NET Tips: C#, VB.NET, Visual Studio
  • 指定したフォルダをエクスプローラで開く

    指定したフォルダをエクスプローラで開くここでは、指定したフォルダをエクスプローラで開いて表示する方法を紹介します。なおここで紹介しているエクスプローラの機能は、OSのバージョンによっては違う動作になる可能性もあります。最後に動作を確認したOSは、Windows 8.1です。 「ファイルを関連付けられたソフトで開く」と同じように、フォルダも関連付けで開くことができます。フォルダは通常エクスプローラに関連付けられていますので、関連付けが変更されていない限り、エクスプローラでフォルダが開きます。 下の例では、関連付けでフォルダ「C:\My Documents\My Pictures」を開いています。

    指定したフォルダをエクスプローラで開く
  • 文字コードを指定してテキストファイルに書き込む

    文字コードを指定してテキストファイルに書き込むここでは、テキストファイルに文字列を書き込む方法について説明します。 ストリームを使ってテキストファイルに書き込む最も基的な方法は、StreamWriterクラスのWriteメソッドを使う方法です。 早速ですが、以下に簡単な例を示します。この例ではテキストボックス"TextBox1"の内容をShift JISコードでテキストファイル"C:\test\1.txt"に書き込んでいます。 'Shift JISで書き込む '書き込むファイルが既に存在している場合は、上書きする Dim sw As New System.IO.StreamWriter("C:\test\1.txt", _ False, _ System.Text.Encoding.GetEncoding("shift_jis")) 'TextBox1.Textの内容を書き込む sw.W

    文字コードを指定してテキストファイルに書き込む
  • DataGridViewのセルにフォーカス枠が表示されないようにする

    注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 DataGridViewで現在フォーカスのあるセルには点線の枠が表示されます。このフォーカス枠が表示されないようにする方法を紹介します。 それには、CellPaintingイベントハンドラでDataGridViewCellPaintingEventArgs.Paintメソッドにより、フォーカス枠以外を描画するようにします。 以下に例を示します。 'CellPaintingイベントハンドラ Private Sub DataGridView1_CellPainting(ByVal sender As Object, _ ByVal e As DataGridViewCellPaintingEventArgs) _ Handles DataGridView1.CellPainting 'ヘ

    DataGridViewのセルにフォーカス枠が表示されないようにする
  • 現在アクティブな(選択されている、フォーカスのある)コントロールを取得する、指定したコントロールをアクティブにする

    'Imports System.Windows.Forms '現在アクティブなコントロールを取得する Dim c As Control = f.ActiveControl If Not (c Is Nothing) Then Console.WriteLine("現在アクティブなコントロールは、{0}です。", c.Name) Else Console.WriteLine("現在アクティブなコントロールはありません。") End If //using System.Windows.Forms; //現在アクティブなコントロールを取得する Control c = f.ActiveControl; if (c != null) { Console.WriteLine("現在アクティブなコントロールは、{0}です。", c.Name); } else { Console.WriteLine("現

    現在アクティブな(選択されている、フォーカスのある)コントロールを取得する、指定したコントロールをアクティブにする