サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
dobon.net
ここでは、複数のクライアントが同時に接続できる、TCPを利用したクライアントサーバー型チャットアプリケーション(僭越ながら、「DOBON Chat」と命名させていただきます)のサンプルを示し、その要点を解説します。 「DOBON Chat」の実行ファイル(バイナリファイル)とソースファイル(プロジェクトファイル)は、記事の最後(こちら)からダウンロードできます。 必要な環境サンプルはVisual Studio .NET 2003で作成され、.NET Framework 1.1で動作確認をしていますが、.NET Framework 1.0でも問題なく動作するでしょう。 基本的な方針.NET FrameworkではTCPを利用したデータ通信を行うためのクラスとして、TcpClientクラス及びTcpListenerクラス(共にSystem.Net.Sockets名前空間)が用意されています。こ
文字列を削除するここでは、例えば「あいうえお」の2文字目から3文字削除して「あお」にするように、文字列内の指定した位置から指定した長さを削除する方法を紹介します。また、「あうえおうえい」から「うえ」を削除して「あおい」にするように、文字列内の指定した文字列を削除する方法も紹介します。 なお、文字列から指定した文字を削除する方法は「文字列から指定した文字を削除する」で説明しています。 文字列内の指定した位置から指定した長さを削除するString.Removeメソッド文字列内の指定した位置から指定した長さを削除するには、String.Removeメソッドを使います。 細かい説明は後にして、まずは具体例を紹介します。 Dim s As String = "あいうえおかきくけこ" '先頭から5文字を削除する Dim s1 As String = s.Remove(0, 5) 'かきくけこ '2文字
オブジェクト、クラス、インスタンスの言葉の意味オブジェクト、クラス、インスタンスという言葉は、プログラミングの解説書などで頻繁に登場します。ここではこれらの言葉の意味と関係を説明します。 オブジェクトとは?「オブジェクト」という言葉は、色々な意味で使われます。解説書によって違った意味で使用されている可能性もあります。しかし、.NETプログラミングの本では、次のような意味で使用されていることが多いです。 オブジェクトとは、クラスのインスタンスである MSDN(「Visual Basic のプログラミング ガイド クラスとオブジェクト」)をはじめ、多くの解説書でこのような意味で使われています。DOBON.NETでもこの意味で使用しています。 それ以外では、特にVB.NET関係の書籍では、フォームを含むコントロールのことを「オブジェクト」と呼んでいる場合もあります。さらに、クラスのことを「オブジ
WPFコントロールをWindowsフォームに配置するWPFコントロール(WPF要素、UIElement)をWindowsフォームに配置(ホスト)するには、ElementHostコントロールを使います。方法は、ElementHost.ChildプロパティにWPFコントロールを割り当てたElementHostコントロールをWindowsフォームに配置するだけです。 ElementHostコントロールはWindowsFormsIntegration.dll内にありますので、使用するにはWindowsFormsIntegration.dllを参照に追加する必要があります。また、WPFコントロールを使用するためにPresentationFramework.dll、PresentationCore.dll、WindowsBase.dllも参照に追加します。さらに.NET Framework 4.0以降
コントロールのダブルバッファリングを有効にして、ちらつきを防止するコントロールの表示がちらつく時は、コントロールのダブルバッファリングを有効にすると改善することがあります。ここでは、コントロールのダブルバッファリングを有効にする方法を紹介します。 なお、ダブルバッファリングにすればすべてのちらつきを解消できるという訳ではありません。ちらつきの原因には様々なものがあり、ダブルバッファリングでは解決できないものもあります。ダブルバッファリングへの過剰な期待は禁物と言えるでしょう。 ダブルバッファリングとは?まずはダブルバッファリングについて簡単に説明します。 コントロールが描画される時、通常は、背景が描画されてから、前景が描画されます。この描画を直接画面に行うと、背景が描画された時に一瞬前景が消えるため、ちらついて見えてしまいます。 ダブルバッファリングを有効にすると、コントロールの描画はまず
文字列から指定した部分を取得する文字列内の指定した範囲を文字列として取得するには、String.Substringメソッドを使います。Substringメソッドを使えば、Stringの指定した位置から指定した文字数分のStringを取得することができます。 以下にSubstringメソッドを使用した具体例を幾つか紹介します。文字の位置はインデックスで指定しますが、先頭の文字のインデックスが 0 なので、n 文字目のインデックスは (n-1) になることに注意してください。 Dim s As String = "あいうえお" '先頭から2文字を取得する。先頭の文字のインデックスは0。 Dim s1 As String = s.Substring(0, 2) '「あい」となる '2文字目(インデックスは1)から3文字を取得する Dim s2 As String = s.Substring(1,
クラスと構造体の使い分けクラスと構造体には類似点が多いため、自作する時どちらにするか迷うこともあります。多くの場合はクラスで問題ありませんが、時には構造体の方がよいケースもあります。そこでここでは、どのようなケースでは構造体の方がよいのかについて考えます。 なおここではクラスと構造体の違いについてはあまり説明しません。クラスと構造体の違いについては、「クラスと構造体の違い」をご覧ください。 構造体を選択する時のガイドラインどのような時に構造体を選択すべきかのガイドラインが、MSDNの「クラスまたは構造体の選択」にあります。以下はこのページからの引用です。 型のインスタンスが小さく有効期間が一般に短い場合や、型のインスタンスが一般に他のオブジェクト内に埋め込まれる場合は、クラスではなく、構造体を定義することを検討します。 型が次に挙げるすべての特性を持たない場合、構造体は定義しません。 プリ
日時(DateTimeオブジェクト)の情報を取得するここでは、日時を表したDateTimeオブジェクトから、年、月、日、時、分、秒などの情報を取得する方法を説明します。つまりは、DateTime構造体のプロパティの説明をしているだけです。 補足:DateTimeのプロパティは読み取り専用で、値の設定はできません。プロパティの値を変更したい場合は、新たにDateTimeオブジェクトを作成します。その方法は、「指定した日時のDateTimeオブジェクトを作成する」で説明しています。
アプリケーション(自分自身)を終了させるここでは、Windowsフォームアプリケーションやコンソールアプリケーションで、自分自身のアプリケーション(あるいは、プログラム、プロセス)を終了させる方法について説明します。 なお外部のアプリケーションを終了させる方法は、「プロセスを強制的に終了する」で説明しています。 メインフォームを閉じるWindowsフォームアプリケーションの場合は、通常は、メインフォーム(メインウィンドウ)を閉じるとアプリケーションが終了します。 メインフォームとは、スプラッシュウィンドウなど一時的に表示されるフォームを除き、通常一番初めに表示されるフォームです。もっと具体的に言えば、アプリケーション開始時にApplication.Runメソッドに引数として渡したフォーム(VB.NETでは、スタートアップフォームに指定したフォーム)のことです。詳しくは、「フォームを連続して
セットアッププロジェクトをVisual Studio 2012に引き継ぐVisual Studio 2010以前では、セットアッププロジェクト(デプロイメントプロジェクト)によってWindows Installerのパッケージ(MSIファイル)を作成することができました。しかしVisual Studio 2012からは、セットアッププロジェクトが使えなくなりました。よって、Visual Studio 2010以前で作成したセットアッププロジェクトを2012で開くことができません。 セットアッププロジェクトが含まれるソリューションをVisual Studio 2012で開くと、下図のようなダイアログが出て、セットアッププロジェクトがサポート外で、開くことができないというメッセージが表示されます。 つまり、セットアッププロジェクトを使うには、Visual Studio 2010以前を使い続ける
配列やListを基にしてDictionaryを作成するここでは、配列やListをキーや値の基になるようにして、Dictionary(System.Collections.Generic名前空間)を作成する方法を紹介します。なおDictionaryクラスは、.NET Framework 2.0以降で使用できます。 ここで紹介しているサンプルでは配列を基にしてDictionaryを作成していますが、配列の代わりにコレクションを使用しても同じようにできます。 For文を使用する方法まずはFor文を使った、何の工夫もない、基本的な方法から紹介します。この方法ならば、Dictionaryだけでなく、Hashtableでもできます。 以下の例では、2つの配列の片方がキー、もう片方が値になるようなDictionaryを作成しています。 'Imports System.Collections.Generi
BOM無しのUTF-8でテキストファイルに書き込むStreamWriterクラスやXmlWriterクラスなどを使ってテキストファイルを作成する時、エンコーディングに「System.Text.Encoding.UTF8」を指定すると、BOM(byte order mark、バイトオーダーマーク、バイト順マーク)が付いたUTF-8のテキストファイルが作成されます。ここではBOMが付かないUTF-8(UTF-8N)のテキストファイルを作成する方法を紹介します。 なおBOMというのは、ファイルの先頭に付く数バイトのデータのことで、UTF-8の場合は、「0xEF 0xBB 0xBF」というデータです。詳しくは、Wikipediaの「UTF-8」や「バイトオーダーマーク」等をご覧ください。 もしテキストファイルを作成する方法が分からないという場合は、まず「文字コードを指定してテキストファイルに書き込
明日、昨日、年(あるいは月や週)の最初の日と最後の日などを取得するここでは、明日や昨日を表すDateTimeオブジェクトを取得する方法を紹介します。その他に、年の初めの日(元日)と終わりの日(大晦日)、月の初めの日と終わりの日、週の初めの日と終わりの日を取得する方法も紹介します。 なおここでは、今日の日付をDateTime.Todayで取得して、その日からみた明日や昨日を取得しています。別の日を基準にして明日や昨日を取得したい時は、その部分を変更してください。 DateTimeに関する知識がない方は、「指定した日時のDateTimeオブジェクトを作成する」と「日時(DateTimeオブジェクト)の情報を取得する」をご覧ください。また、日時の計算については「日時、時間の計算をする」をご覧ください。さらに、現在の日時を取得する方法については「現在の日時を取得する」で説明しています。 明日や昨日
外部アプリケーションのウィンドウをアクティブにするここでは、自分のアプリケーションではなく、外部のアプリケーションのウィンドウをアクティブにする方法(つまり、「フォームをアクティブにする」が使えない場合の方法)を紹介します。 VB.NETのAppActivateを使用する方法外部アプリケーションのウィンドウをアクティブにするには、VB.NETであればAppActivateメソッドを使うことができます。使い方は、アクティブにしたいウィンドウのタイトルを指定して呼び出すだけです。大文字と小文字は区別しません。完全に一致するタイトルのウィンドウがなかった場合は、指定された文字列で終わるタイトルのウィンドウをアクティブにします。それでも見つからなかった場合は、例外ArgumentExceptionをスローします。 以下に、「メモ帳」というタイトルのウィンドウをアクティブにする例を示します。C#では
目的の文字コードに合ったEncodingオブジェクトを取得する例えばテキストファイルを文字列(String型)として読み込む時、そのテキストファイルの文字コードが何であるかによって、適切なエンコーディング(注)を選択する必要があります。そのエンコーディングを表すのが、Encodingオブジェクトです。適切なEncodingオブジェクトを選択してテキストファイルを読み込まないと、文字化けします。 注:「エンコーディング」とは、どのように文字列をバイト列に変換(エンコード)するかという方法のことです。なおここでは、バイト列を文字列に変換(デコード)する方法を含めて「エンコーディング」と呼ぶことにします。 同様に文字列をテキストファイルに書き込む時も、どのような文字コードで書き込むかによって適切なEncodingオブジェクトを選択する必要があります。 ここでは、目的の文字コードに合ったEncod
題名: ORACLEへのADO接続がうまく行きません 著者: kane123 日時: 2012/07/02 16:12:17 ID: 30671 この記事の返信元: (なし) この記事への返信: [30675] Re[1]: ORACLEへのADO接続がうまく行きません 魔界の仮面弁士 2012/07/02 21:20:50 ツリーを表示 環境/言語:[OS : Windows 7 / 言語 : Visual Basic .NET / .NET Framework : 3.5] 分類:[.NET] 【解決したい問題】 初めて投稿させていただきます。 VB.net にて簡単なORACLEへの接続方法が確立できず、困っています。 まず状況としては、プロバイダ:OraOLEDB.Oracle を使った 接続にはひとまず成功しています。ですが、詳しい方ならご存知のように、 OraOLEDB.Ora
アプリケーション(自分自身)を再起動するここでは、自分自身のWindowsフォームアプリケーションを再起動する(現在実行中のアプリケーションを終了させて、新たに起動する)方法を幾つか紹介します。 .NET Framework 2.0以降で、Application.Restartメソッドを使用する方法.NET Framework 2.0からは、Application.Restartメソッドを使ってアプリケーションを再起動することができます。
Dictionaryのキーや値を配列やListに変換するここでは、ハッシュテーブルとして働くジェネリックコレクションであるDictionary(System.Collections.Generic名前空間)のキーと値を配列やListに変換する方法を紹介します。なおDictionaryクラスは、.NET Framework 2.0以降で使用できます。 CopyToメソッドを使用する方法KeyCollection.CopyToメソッドとValueCollection.CopyToメソッドを使用して、Dictionaryのキーや値を配列にコピーすることができます。 以下にその例を示します。 'Imports System.Collections.Generic '配列に変換するDictionary Dim dic As New Dictionary(Of Integer, String)() d
GIFアニメーションを作成するGIFアニメーションを作る方法は、「HOWTO: create an animated GIF using .Net (C#)」や「How could i create an animated .gif file from several other .jpg files in c# express?」で紹介されています。前者の記事はグローバルパレットだけを使っていますが、後者(および、前者に投稿されているコメント)ではローカルパレットだけを使っているようです。 これらの記事と、GIFのフォーマットについて書かれた「GIF89a仕様書抜粋」や「3MF Project: What's In A GIF - Animation and Transparency」を参考にして、ローカルパレットのみを使うGIFアニメーションを作成するコードを書いてみました。 'Imp
指定した日時のDateTimeオブジェクトを作成する指定した日時のSystem.DateTimeオブジェクトを作成する方法には、以下のようなものが挙げられます。 DateTime構造体のコンストラクタを呼び出す。DateTime.Parseメソッドなどを使って、日時を表した文字列をDateTimeに変換する。(この方法は、「日時を表す文字列をDateTimeオブジェクトに変換する」で説明しています。)VB.NETの場合、「#9/24/2000 3:30:00 PM#」のようなDateリテラルを使用する。(この方法は、MSDNの「日付型 (Date) (Visual Basic)」などが参考になります。)すでに存在しているDateTimeオブジェクトに時間を足したり引いたりして、新しいDateTimeを作成する。(この方法は、「日時、時間の計算をする」で説明しています。)DateTime.T
文字列の配列やコレクションを並び替える配列やコレクション内の要素を並び替える方法は、「配列やコレクション内の要素を並び替える」で詳しく説明しています。そちらでほぼ全て説明し終えているのですが、ここでは文字列の並び替えについて多少の補足をします。 デフォルトの並び替え方文字列の配列(または、コレクション)をSortメソッドで並び替えたとき、デフォルトでは、現在のカルチャに依存して、大文字小文字を区別する方法で大小が比較され、並び替えられます。このことは、SortメソッドがCompareToメソッドを使って並び替えており、こちらで説明したように、String.CompareToメソッドが大文字小文字の区別をして、カルチャに依存する事実から明らかです。 注意:「String compare not always transitive | Microsoft Connect」によると、文字列にハイ
2つの配列(またはコレクション)を比較して、等しいか調べるここでは、2つの配列(またはコレクション)を比べて、両者の要素がすべて同じか調べる方法を紹介します。 For文を使用する方法まず思いつくのは、For文を使って1つ1つの要素が等しいかを調べる方法です。例えば、以下のような方法です。 '比較する2つの配列 Dim ary1 As String() = New String() {"いち", "に", "さん"} Dim ary2 As String() = New String() {"いち", "に", "さん"} '結果を格納する変数 Dim isEqual As Boolean = True If Object.ReferenceEquals(ary1, ary2) Then '同一のインスタンスの時は、同じとする isEqual = True ElseIf ary1 Is No
ひらがなとカタカナ、全角と半角の変換を行うここでは、文字列内のひらがなをカタカナに、カタカナをひらがなに変換する方法を幾つか紹介します。また、半角文字を全角文字に、全角文字を半角文字に変換する方法も紹介します。 VB.NETのStrConv関数を使うVB.NETでは、StrConv関数を使ってひらがなをカタカナに、あるいは、カタカナをひらがなに変換することができます。また、半角文字と全角文字の相互変換もできます。StrConv関数はそれ以外に、大文字と小文字の相互変換もできます。 StrConv関数でどのような変換を行うかは、2番目のパラメータに指定するVbStrConv列挙体の値で決まります。VbStrConv列挙体の値とその意味は、以下の通りです(説明は、MSDNからの抜粋です)。
DoEventsを行うVB6のDoEventsと同様のものは、「System.Windows.Forms.Application.DoEventsメソッド」です。.NET Framework 2.0以降のVB.NETでは、「My.Application.DoEvents」を使うこともできます。 ただしDoEventsメソッドには欠点が多く意外と危険なため、できれば使うべきではありません。.NET Frameworkはマルチスレッドアプリケーションの作成に対応しているため、DoEventsを使うよりマルチスレッドとすることをお勧めします。 参考:Why DoEvents is Evil
現在のユーザーが管理者か調べる現在のユーザーが管理者であるかどうか調べる方法を幾つか紹介します。なおこの記事を書くに当たり、以下のページを参考にさせていただきました。 参考:In .NET/C# test if user is an administrative user - Stack Overflow.net - C#: Detect if running with elevated privileges? - Stack OverflowHow to Determine if a User is a Member of the Administrators Group with UAC Enabled on Windows Vista - The App Compat Guy - Site Home - MSDN Blogs[C#]アプリケーションのUAC対応 - MoonWingア
''' <summary> ''' アプリケーションのメイン エントリ ポイントです。 ''' </summary> Module Program <STAThread()> _ Sub Main() Application.Run(New Form1()) End Sub End Module /// <summary> /// アプリケーションのメイン エントリ ポイントです。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } しかし、例えばMSDNの「フォームが開始時に非表示になるように設定する」のコードには、MainメソッドにSTAThreadAttribute属性が付いていません。STAThreadAttribute属性は本当に必要なのでしょうか? STAThreadAt
注意:SmtpClientクラスは、.NET Framework 2.0以降でしか使用できません。また、ここではSmtpClientクラスについて詳しくは説明しませんので、まずは「SmtpClientクラスを使ってメールを送信する」をご覧ください。 SmtpClientクラスでメールを送信する時、SSL/TLSを使用するには、SmtpClient.EnableSslプロパティをTrueにします。MSDNによると、対応している方式はSTARTTLSのみで、SMTP over SSL(SMTP/SSL、SMTPS)には対応していません。 補足:.NET Frameworkの古いバージョンでは、Credentialsプロパティを設定し、EnableSslプロパティをtrueにすると失敗するという報告がありましたが(例えば、「Cannot enable SSL with a username an
フォルダ名とファイル名を結合して絶対パスを作成するここでは、フォルダ名(ディレクトリ名)とファイル名(あるいは、サブフォルダ名)を結合して、パスを作成する方法を紹介します。具体的に言えば、例えば「C:\dir」というフォルダにある「file.txt」というファイルの絶対パス(フルパス)「C:\dir\file.txt」を取得する時などに利用できる方法です。 なお相対パスから絶対パスを取得する方法は、「相対パスから絶対パスを取得する」で説明しています。 Path.Combineメソッドを使用する定番なのが、Path.Combineメソッドを使った方法です。このメソッドを使えば、フォルダ名の後ろが「\」で終わっているかを考慮して、適切に結合してくれます。 補足:.NET Framework 2.0以降のVB.NETでは、My.Computer.FileSystem.CombinePathメソッ
注意:ここで紹介している方法は、テキストファイルから文字列を一行ずつ読み込む方法ではなく、すでにString型となっている文字列から一行ずつ読み込む方法です。テキストファイルから文字列を一行ずつ読み込む方法は、「文字コードを指定してテキストファイルを読み込む」をご覧ください。 文字列(String型)から一行ずつ読み込んで何らかの処理をしたい時、通常は文字列から改行文字の位置をIndexOfで取得し一行切り出す方法や、String.Splitメソッドにより改行文字を区切り文字として配列に分割する方法(こちら)などが考えられます。TextBoxやRichTextBoxのTextプロパティに入っている文字列であれば、Linesプロパティで配列として取得することもできます。 しかしここではあえてStreamReaderやStringReaderクラスのReadLineメソッドを使う方法を考えてみ
次のページ
このページを最初にブックマークしてみませんか?
『DOBON.NET: VB.NET, C#,』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く