サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
jeanne.wankuma.com
コントロールの背景色を変更するには、BackColor プロパティを変更したい色に設定します。BackColor プロパティは System.Drawing.Color 構造体で指定します。 C# 全般 // textBox1 の背景色を赤にする (システム定義色による指定) this.textBox1.BackColor = Color.Red; // button1 の背景色を青にする (RGB による指定) this.button1.BackColor = Color.FromArgb(0x00, 0x00, 0xFF); // このフォームの背景色をウィンドウの背景にする (システム色の名前による指定) this.BackColor = Color.FromKnownColor(KnownColor.Window);
.NET Framework には、ディレクトリ (フォルダ) 内をすべてコピーするようなメソッドは用意されていません。手動でディレクトリを作成し、配下にあるすべてのディレクトリとファイルをコピーすることになります。 以下は、その処理をメソッド化したものです。再帰呼び出しを使って、配下にあるすべてのディレクトリとファイルをコピーしています。第 3 引数の "上書き指定" によって同名のファイルの上書きを指定することができます。 C# 全般 /// ------------------------------------------------------------------------------------ /// <summary> /// ファイルまたはディレクトリ、およびその内容を新しい場所にコピーします。 /// 新しい場所に同名のファイルがある場合は上書きしません。<sum
フォームをモーダルで表示するには、表示したい Form のインスタンスの ShowDialog メソッドを使用します。モーダルで表示した場合は、呼び出し先のフォームが閉じられるまで、呼び出し元のフォームに制御を移しません。 呼び出し元のフォームも操作するようにするには、フォームを表示する をご覧ください。 C# 全般 // Form1 の新しいインスタンスを生成する Form1 cForm1 = new Form1(); // Form1 をモーダルで表示する cForm1.ShowDialog(); // 不要になった時点で破棄する (正しくは オブジェクトの破棄を保証する を参照) cForm1.Dispose(); 関連するリファレンス 以下に関連するリファレンスを示します。 クラス System.Windows.Forms.Form クラス メソッド System.Windows.
当サイトは、Visual C# .NET と Visual Basic .NET (VB.NET) を中心とした .NET プログラミング初心者用の入門サイトです。C# と VB.NET だけでなく、Visual C++ .NET (C++/CLI)、Visual J# .NET (Java) などについてもサポートしています。初心者・入門者向きのサンプルコードが主な内容となっております。Visual Basic 6.0 (VB6) 以前のプログラマのために Visual Basic 6.0 (VB6) についても提供しておりますので、ステップアップにご利用ください。
指定の位置から文字列を切り出して取得するには、System.String クラスの Substring メソッドを使用します。Substring メソッドはインスタンス化された文字列から、指定した位置から指定した文字数文の文字列を取得することができます。第 1 引数のみを指定すると、指定した位置から末尾までの文字列を返します。 C# 全般 // 文字列を格納するための変数を宣言する string stTarget = "ABC1234あいうえお5678"; // 3 文字目の後から 9 文字の文字列を取得する stTarget = stTarget.Substring(3, 9); // 4 文字目の後から末尾までの文字列を取得する stTarget = stTarget.Substring(4); // 取得した文字列を表示する MessageBox.Show(stTarget);
VB6 以前では、文字列の一部を取り出すために、Left, Mid, Right (Left$, Mid$, Right$) などの関数を使用していました。VB.NET 以降では、System.String クラスの Substring メソッドを使用することは、文字列の一部を取り出す でも紹介しました。 System.String クラスの Substring メソッドを使用せずとも、Microsoft.VisualBasic 名前空間には、VB6 と同じように Left, Mid, Right などの関数が用意されています。ただ、Microsoft.VisualBasic 名前空間の配下を使いたくない、VB 訛りのコーディングをしたくないという理由で使われなくなっています。 しかし、VB に慣れている方が、Substring を扱うと取り出し開始位置が Mid 関数と違うために混乱する
CSV のように区切り文字で分割された文字列を配列に変換するには、System.String クラスの Split メソッドを使用します。第 1 引数には、区切り文字が複数指定可能で、第 2 引数には、最大でいくつの要素を作成するかを指定可能です。大抵は CSV のようなデータを配列に格納することが多いですので、あまり使用しないかもしれません。 C# 全般 // 必要な変数を宣言する string stCsvData = "5, Jitta, ABC"; // カンマ区切りで分割して配列に格納する string[] stArrayData = stCsvData.Split(','); // データを確認する foreach (string stData in stArrayData) { MessageBox.Show(stData); }
旧システムなどの外部連携のために、テーブルに格納するデータにバイト制限をかける場合があります。良くあるのが、半角を 1 バイト、全角を 2 バイトでカウントして規定の長さに収めるなどです。 System.String クラスの Length プロパティでは文字数しか取得できません。というよりは、半角または全角という概念は消滅しつつあります。(Unicode や UTF-8 の文字コードを参照) VB6 では LenB という関数で、バイト数を取得できました。StrConv 関数などの合わせ技で文字コードを変えてから、使用していました。 半角は 1 バイト、全角は 2 バイトという考えは、Shift_JIS という文字コードの考えです。つまりは、Shift_JIS にエンコードしてやれば、半角 1 バイト、全角 2 バイトでのバイト数が取得できます。 System.Text.Encoding
System.Diagnostics.Process クラスの Start メソッドを使用して、起動するアプリケーションまたはドキュメント名、コマンドライン引数程度の指定ができます。もっと細かい指定をする場合は、ProcessStartInfo に対して設定する必要があります。 以下の例では、主要となるプロパティを列挙されていますが、必要ないものは削ってください。 C# 全般 // ProcessStartInfo の新しいインスタンスを生成する System.Diagnostics.ProcessStartInfo hPsInfo = ( new System.Diagnostics.ProcessStartInfo() ); // 起動するアプリケーションを設定する hPsInfo.FileName = "Notepad"; // コマンドライン引数を設定する hPsInfo.Argu
指定した書式で日付を文字列に変換するには、ToString メソッドで Format を指定します。書式には数々の種類がありますので、詳しくは MSDN の「カスタム DateTime 書式指定文字列」をご覧ください。 また VB6 以前の経験がある方は、大文字と小文字のカスタム書式に明確な区別があることに注意してください。VB6 以前で「yyyy/mm/dd」とすると、年月日が帰ってきますが、VB2002 以降では「mm」は Minute (分) 扱いになります。Month (月) を扱う場合は「MM」のように、大文字にする必要があります。 C# 全般 // 必要な変数を宣言する DateTime dtNow = DateTime.Now; // 指定した書式で日付を文字列に変換する string stPrompt1 = dtNow.ToString("yyyy/MM/dd (ddd)
文字列内の文字を別の文字に置換するには、System.String クラスの Replace メソッドを使用します。Replace メソッドはインスタンス化された文字列から、置換対象となる任意の文字と置換後の文字を指定します。 C# 全般 // 文字列を格納するための変数を宣言する string stTarget = "ABCD"; // 文字列 "ABC" を "1234" に置き換える stTarget = stTarget.Replace("ABC", "1234"); // 1 文字だけを置き換える場合は char 型を使用する stTarget = stTarget.Replace('D', '5'); // 置換後の文字列を表示する MessageBox.Show(stTarget);;
PictureBox コントロールに画像を表示するには、Image クラスを使用します。PictureBox コントロールには、Image プロパティがありますので、これを利用します。 最も簡単な方法は、System.Drawing.Image クラスの FromFile メソッドを使用する方法です。ただし、これだとプログラムが終了するまで、ファイルがロックされたままになります。 FromFile メソッドではなく、FromStream メソッドを使用しましょう。 VB.NET 全般 ' FileStream を開く Dim hStream As New System.IO.FileStream("C:\Hoge.bmp", System.IO.FileMode.Open) ' FileStream から画像を読み込んで表示 Me.PictureBox1.Image = Image.Fro
ファイルのタイムスタンプには、作成日時、更新日時、アクセス日時があります。作成日時を取得するには、System.IO.File クラスの GetCreateTime メソッドを使用します。更新日時を取得するには、同クラスの GetLastWrite メソッドを使用します。アクセス日時を取得するには、同クラスの GetLastAccessTime メソッドを使用します。 C# 全般 // パスを定数で定義する const string FILE_PATH = @"C:\Hoge.txt"; // 作成日時を取得する DateTime dtCreate = System.IO.File.GetCreationTime(FILE_PATH); // 更新日時を取得する DateTime dtUpdate = System.IO.File.GetLastWriteTime(FILE_PATH);
文字列の配列を区切り文字で連結した文字列に変換するには、System.String クラスの Join メソッドを使用します。Join メソッドの第 1 引数には、どの区切り文字を使用して連結するかを設定します。第 2 引数には、展開元の文字列配列を指定します。 オーバーロードとして、第 3 引数と、第 4 引数も指定することができます。第 3 引数には、展開元の文字列配列の最初のインデックスを指定します。第 4 引数は、その位置からいくつまで展開するかを指定できます。 C# 全般 // 必要な変数を定義する string[] stArrayData = {"8", "中博俊", "XYZ"}; // 配列内のデータをすべてカンマ区切りで連結する string stCsvData = string.Join(",", stArrayData); // 連結した文字列を表示する Messag
カレントディレクトリを取得するには、System.IO.Directory クラスの GetCurrentDirectory メソッドを使用します。 カレントディレクトリとは、ファイルパスをドライブ文字から指定しなかった場合に開始位置となる場所を指します。つまり「C:\Hoge\FooBar.txt」というファイルを取得する場合に、カレントディレクトリを「C:\Hoge\」に設定しておけば「FooBar.txt」と指定するだけで、アクセスできるというものです。(相対パスによる指定です) アプリケーション開始時は、実行ファイルと同じ場所が設定されています。 VB.NET 全般 ' カレントディレクトリを取得する Dim stCurrentDir As String = System.IO.Directory.GetCurrentDirectory() ' カレントディレクトリを表示する Me
指定した名前に合致するすべてのプロセスを取得するには、System.Diagnostics.Process クラスの GetProcessesByName メソッドを使用します。 C# 全般 // Explorer という名前のプロセスをすべて取得する System.Diagnostics.Process[] hProcesses = System.Diagnostics.Process.GetProcessesByName("Explorer"); // コンピュータ名を指定すると、別のコンピュータで実行されているプロセスの取得が可能です //hProcesses = System.Diagnostics.Process.GetProcessesByName("Explorer", "MachineName"); string stPrompt = string.Empty; // 取得
二重起動 (多重起動) を防止するついでに、既に起動中だったプログラムのメインウィンドウをアクティブにします。残念ながら .NET Framework では、他のプログラムのウィンドウを操作することはできません。Win32API に頼らざるを得ないので、お勧めはできません。(Microsoft.VisualBasic.AppActicate メソッドを使う方法もありますが、アンマネージドです) ここでは、既に起動中のプログラムのメインウィンドウをアクティブにし True を返す関数を紹介します。起動中でなければ、False を返しますので、エントリポイントで合わせて使うことができます。 VB.NET 全般 Option Strict On ' 以下の名前空間をインポートする Imports System.Diagnostics Imports System.Runtime.InteropS
旧システムなどの外部連携のために、テーブルに格納するデータにバイト制限をかける場合があります。良くあるのが、半角を 1 バイト、全角を 2 バイトでカウントして規定の長さに収めるなどです。 System.String クラスの Substring メソッドでは、文字単位でしか指定ができません。というよりは、半角または全角という概念は消滅しつつあります。(Unicode や UTF-8 の文字コードを参照) VB6 では LeftB, MidB, RightB などの関数で、バイト単位での文字の取り出しができました。StrConv 関数などの合わせ技で文字コードを変えてから、使用していました。 半角は 1 バイト、全角は 2 バイトという考えは、Shift_JIS という文字コードの考えです。つまりは、Shift_JIS にエンコードしてやれば、半角 1 バイト、全角 2 バイトでのバイト数
System.Diagnostics.Process クラスの Start メソッドを使用して、起動するアプリケーションまたはドキュメント名、コマンドライン引数程度の指定ができます。もっと細かい指定をする場合は、ProcessStartInfo に対して設定する必要があります。 以下の例では、主要となるプロパティを列挙されていますが、必要ないものは削ってください。 VB.NET 全般 ' ProcessStartInfo の新しいインスタンスを生成する Dim hPsInfo As New System.Diagnostics.ProcessStartInfo() ' 起動するアプリケーションを設定する hPsInfo.FileName = "Notepad" ' コマンドライン引数を設定する hPsInfo.Arguments = "C:\Hoge.txt" ' 新しいウィンドウを作成す
テキストボックスで数字または一部の文字しか入力できないようにするには、System.Windows.Forms.TextBox を継承したカスタム コントロールを使う方法が最も手軽です。 KeyPress イベントなどで入力を規制しているサンプルを良く見かけますが、あれでは「貼り付け」の対応ができません。少なくとも、コンテキスト メニューからの [貼り付け] は、キーの入力から排除できるものではありません。これを防ぐために TextChanged イベントと併用しているサンプルもありますが、あれではチラツキが生じます。 どのデバイスで入力されようと、一元で排除できるような機構にした方が楽なのです。だからといって 入力チェックをしなくても良いわけではない です。そういう意味でも、「最終チェックに一任する」という選択肢があることも忘れないでください。 実装方法ですが、先に申し上げたように Sy
Windows 内でも「フォーカスを取得したらテキストを全選択状態にする」という仕様は良く見かけます。以下の例のように、TextBox の Enter イベントで実装してみると良いでしょう。 すべての TextBox コントロールでこのコードをベタ書きすると、骨が折れる上ソースが汚くなります。これらの機能を実現したカスタム コントロールを作成すると良いでしょう。 VB6 では、GotFocus イベントになります。しかし困ったことに、マウスで選択した際にも全選択状態になってしまいます。(マウスで選択した時に、全選択状態になってしまう TextBox は Windows 内では見かけません) 以下の例では、マウスで選択したかどうかの判断を用いて、マウスでは全選択状態にならないように実装しています。 VB6.0 以前 Option Explicit ' マウスで選択したことを示すフラグ Pri
数値を切り捨てするには、System.Math クラスの Floor メソッドと Ceiling メソッドを使用します。数値が正の数であれば、Floor メソッドを、負の数であれば、Ceiling メソッドを使用します。 これを利用して、指定した桁数で切り捨てするメソッドがあると便利です。指定した桁数で切り捨てするには、累乗を用いて指定した桁数を整数とする必要があります。これを毎回書くのは煩わしいので、以下のようなメソッドを考えます。 Floor メソッド、Ceiling メソッド及び、Pow メソッドの詳細は以下をご覧ください。 指定した数値以下の最大の整数を取得する 指定した数値以上の最小の整数を取得する べき乗 (累乗) を計算する VB.NET 全般 ''' --------------------------------------------------------------
指定した年・月・日が正しい日付かどうか判断するようなエラーチェックが必要になる場合があります。VB で言えば IsDate 関数のようなメソッドです。 Microsoft.VisualBasic 名前空間配下に IsDate メソッドは存在するものの、この IsDate メソッドは DateTime.Parse メソッドに対して例外処理を行っているだけです。初回での例外クラスのインスタンスが生成されるまで、プログラムの制御が止まってしまいますので、ユーザーフレンドリとは言えません。 .NET Framework 2.0 では、System.DateTime 構造体の TryParse メソッドを使うことができますが、.NET Framework 1.1 までは TryParse メソッドがないため自作の判定メソッドを書く他に回避方法はありません。 C# 全般 using System; /
WebMoney (ウェブマネー) を安く購入するには当たり前ですが単価の安い店を探すことになります。ということで、インターネット上で安く販売している店を挙げてみました。 メモした当時の情報ですので現在は状況が変わっているかもしれません。そのあたりの責任は持てませんので、掲載されている情報については自己責任でお願いします。
こちらは、文字列 (String) に関する Tips の一覧です。 別ウィンドウで開きたい場合は、Shift を押しながらリンク先をクリックしてください。
コントロールの配列を作成するには、配列を定義し、それらをインスタンス化してフォームに追加する必要があります。 まず、コントロールの配列を、プライベートなメンバとして定義しておきます。この配列をインスタンス化して、フォームへ追加するだけで配置されます。追加する際に、初期化しておきたいプロパティなどの設定も忘れずに行ってください。 また、この時イベント ハンドラの統合もできます。統合されたイベントでは、sender 引数を利用してイベントが起きたコントロールを特定できます。 当たり前ですが、これらの作業はフォームが表示される前に行うことが多いと思います。以下の例は Form が Load された時に、動的にコントロールの配列を作成しフォームに追加します。ついでに、イベント ハンドラの統合の一例も行っています。 C# 全般 // プライベートなフィールドとして配列を定義する private Te
文字列を比較するには、System.String クラスの CompareTo メソッドを使用します。または、静的メソッドである Compare メソッドを使用しても良いでしょう。Char の文字コードとして比較する場合は CompareOrdinal メソッドを使用します。 最初に、CompareTo メソッドを使用した例です。 C# 全般 // 必要な変数を宣言する string stTarget1 = "ABCDEF"; string stTarget2 = "ABCEGI"; // stTarget1 の文字列と stTarget2 の文字列を比較する int iCompare = stTarget1.CompareTo(stTarget2); // 比較した結果を表示する if (iCompare == 0) { MessageBox.Show(stTarget1 + " と "
あるファイルパスが「絶対パス」か「相対パス」かを判断するには、System.IO.Path クラスの IsPathRooted メソッドを使用します。IsPathRooted メソッドは、絶対パスならば true を返し、相対パスならば false を返します。 絶対パスは、ルートディレクトリであるドライブレターを先頭に含んだパスのことです。相対パスは、それ以外のパスのことです。 C# 全般 // 絶対パスか相対パスかを判断する if (System.IO.Path.IsPathRooted(@"..\..\Hoge.txt")) { MessageBox.Show("絶対パスです"); } else { MessageBox.Show("相対パスです"); }
こちらは、ダイアログ (Dialog) に関する Tips の一覧です。ここで言う「ダイアログ」は、メッセージ ボックスから、コモン ダイアログまで含んでいます。 別ウィンドウで開きたい場合は、Shift を押しながらリンク先をクリックしてください。
次のページ
このページを最初にブックマークしてみませんか?
『C# と VB.NET の入門サイト』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く