サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ドラクエ3
dobon.net
小数(浮動小数点数型)の計算が思った結果にならない理由と解決法 Decimal型はいつ使うか?小数の計算をしていて、その計算結果が常識では考えられない、変な値になったという経験はないでしょうか?単精度浮動小数点型であるSingle型(C#では、float型)や、倍精度浮動小数点数型であるDouble型(C#では、double型)を使った計算ではそのようなことがあります。ここではそのようなことが起こる理由と、その対策を説明します。 また、Decimal型はどのような時に使うのかについても説明しています。 不可解な小数の計算の例「0.1 + 0.2 = 0.3」は正しいでしょうか?数学では、当然そうでなくては困ります。 それでは、VB.NETで「0.1 + 0.2 = 0.3」(C#では、「0.1 + 0.2 == 0.3」)は「True」になるでしょうか?実は「False」になります。信じら
ドライブの情報(タイプ、ボリュームラベル、ファイルシステムなど)を取得するここでは、ドライブのタイプ、ボリュームラベル、ファイルシステムなどの情報を取得する方法を紹介します。なおドライブの容量や空き容量を取得する方法は、こちらで紹介しています。 .NET Framework 2.0以降で、DriveInfoクラスを使用する方法.NET Framework 2.0からはDriveInfoクラスにより、ドライブの情報を取得することができます。 以下の例では、"C:"ドライブの情報を表示しています。 'C:ドライブの情報を取得する Dim drive As New System.IO.DriveInfo("C") 'ドライブの名前 Console.WriteLine("ドライブの名前:{0}", drive.Name) 'ドライブタイプ Dim typeDescription As String
フォームを最小化あるいは最大化するフォームを最小化あるいは最大化状態にするには、そのフォームのWindowStateプロパティをFormWindowState.MinimizedあるいはFormWindowState.Maximizedにします。フォームを元の状態に戻すには、WindowStateプロパティをFormWindowState.Normalにします。 次の例では自分自身のフォームを最大化しています。
題名: ユニコードエスケープ文字のエンコードについて 著者: 坂津 日時: 2010/08/15 9:05:53 ID: 27179 この記事の返信元: (なし) この記事への返信: [27180] Re[1]: ユニコードエスケープ文字のエンコードについて Hongliang 2010/08/15 10:19:04 ツリーを表示 環境/言語:[.NET Framework2.0 / C#] 分類:[.NET] いつも参考にさせていただいています。 実は、ファイルに格納している以下の文字列 「今日は、\u702c\u6238へ行く。」 を読み込もうとしています。 この際、unicodeをエスケープ表記している部分が 漢字の「瀬戸」にならなくて困っております。 ネットでも調べましたが、上手くヒットしません。 どなたかお知恵を拝借願えればと存じポストいたしました。 題名: Re[1]: ユニコ
文字列を置換するここでは、文字列内の指定した文字列を別の文字列に置換する方法(例えば、「昨日は雨でした。」の「雨」を「晴れ」に置換して、「昨日は晴れでした。」という文字列を作成する方法)を幾つか紹介します。 String.Replaceメソッド最も一般的な方法は、String.Replaceメソッドを使う方法です。String.Replaceメソッドは、1番目のパラメータに検索する文字列を、2番目のパラメータに置換後の文字列を指定します。するとこのメソッドは、置換された文字列を返します。 見つかった文字列はすべて置換されます。はじめに見つかった文字列だけを置換するといったことはできません。 文字列を検索する方法は、序数による検索のみです。よって、全く同じ文字列しか検索できません。大文字小文字を区別しない検索や、カルチャに依存した検索はできません。 String.Replaceメソッドは置換
文字列が空かどうか調べる文字列(String)が空の文字列かを調べるには、「2つの文字列が等しいかを調べる」で紹介したように、等値演算子(VB.NETは=、C#は==)やEqualsメソッドを使って、空の文字列(""やString.Empty)と比較すればよいだけです。 Dim s As String = "こんにちは" If s = "" Then Console.WriteLine("文字列は空です") End If If s = String.Empty Then Console.WriteLine("文字列は空です") End If If s.Equals("") Then Console.WriteLine("文字列は空です") End If If s.Equals(String.Empty) Then Console.WriteLine("文字列は空です") End If st
'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("現
.NET Framework 3.5以降で、TimeZoneInfoクラスを使用する.NET Framework 3.5以降では、TimeZoneInfoクラスを使ってタイムゾーンに関する情報を取得できます。後述するTimeZoneクラスより機能が拡張されており、.NET Framework 3.5以降ではTimeZoneよりTimeZoneInfoの使用が推奨されています。ただしTimeZoneInfoクラスはWindows XP SP2以降のOSでしか使用できません。 ローカルコンピュータのタイムゾーンを取得する現在のコンピュータシステムのタイムゾーンは、TimeZoneInfo.Localプロパティで取得できます。(UTCのタイムゾーンは、TimeZoneInfo.Utcプロパティで取得できます。) 指定した時刻でのUTCオフセット(タイムゾーン標準時とUTCとの差、時差)は、Get
TextBoxやRichTextBoxのタブの幅を変更するRichTextBoxであれば、SelectionTabsプロパティにより、タブの位置を設定することができます。ただしこれはタブの位置をピクセル単位で、数値型の配列として指定するものです。 SelectionTabsプロパティを使わないのであれば、Win32 APIを使うことになります。EM_SETTABSTOPSメッセージを使って、タブ幅の文字数を指定できます。 次の例では、Button1をクリックすることにより、TextBox1のタブの幅を16にしています。 <System.Runtime.InteropServices.DllImport("User32.dll")> _ Shared Function SendMessage(ByVal hWnd As IntPtr, _ ByVal msg As Integer, ByVa
文字列を印刷する文字列の印刷も「印刷する」と同様にして、PrintDocumentクラスのPrintPageイベントハンドラ内で、PrintPageEventArgsオブジェクトのGraphicsにDrawStringで描画するだけです。なおDrawStringにつきましては、「文字を描く」をご覧ください。 しかし複数行の文字列を印刷するとなると、多少面倒なことになります。ヘルプの「PrintDocument クラス」にも複数行のテキストを印刷する例が載っていますが、文字数の長い行の右端で折り返す処理を怠っているため、実用的ではありません。 そこで複数行のテキストを右側で折り返して印刷するサンプルを私なりに書いてみましたので、参考にしてください。下の例ではフォームにあるボタン(Button1)をクリックすると、テキストボックス(TextBox1)に入力されている文字列を印刷します。 'Im
Imports System.ComponentModel Imports System.Windows.Forms ''' <summary> ''' バックグラウンド処理の進行状況を表示するフォーム ''' </summary> Partial Public Class ProgressDialog Inherits Form ''' <summary> ''' ProgressDialogクラスのコンストラクタ ''' </summary> ''' <param name="caption">タイトルバーに表示するテキスト</param> ''' <param name="doWorkHandler">バックグラウンドで実行するメソッド</param> ''' <param name="argument">doWorkで取得できるパラメータ</param> Public Sub Ne
小数点を切り捨て、切り上げ、四捨五入するここでは、数値の端数処理(丸め、整数化)を行う方法を説明します。 切り捨てる小数点以下を切り捨てるには、Mathクラス(System名前空間)のFloorまたはTruncateメソッドを使用します。 正の数を丸めるのであれば、どちらのメソッドも同じ結果(整数部分をそのまま残して小数点以下を0とする)になります。違いが現れるのは、負の数を丸めた時です。負の数を丸めた時、Floorメソッドはより小さな整数に丸められ(負の無限大への丸め)、Truncateメソッドはより大きな整数に丸められます(0への丸め)。例えば -1.5 を丸めると、Floorでは -2 、Truncateでは -1 になります。 VB.NETのInt関数はFloorメソッドと同じ丸め方をし、Fix関数はTruncateメソッドと同じ丸め方をします。 C#では、キャストで小数を整数に変
ファイル名に使用できない文字列が含まれていないか調べるここでは、指定した文字列に、ファイル名やフォルダ名(以下、ファイル名)に使用できない文字や文字列が含まれていないか調べる方法を紹介します。 しかしここで紹介している方法は完全な方法ではありませんので、本当にそのファイル名でファイルを作成できるかは、実際にファイルを作成してみることでしか確認できないでしょう。 なお、ファイル名に使用できない文字が含まれている場合これをすべて削除する方法は、「文字列から指定した文字を削除する」を参考にしてください。 Path.GetInvalidFileNameCharsメソッドを使用する方法ファイル名に使用できない文字は、Path.GetInvalidFileNameCharsメソッドで取得できます。また、ファイルのパスに使用できない文字は、Path.GetInvalidPathCharsメソッドで取得で
ファイルのタイムスタンプ(作成日時、更新日時、アクセス日時)を取得、設定するFileクラスを使用する方法ファイルのタイムスタンプ(作成日時、更新日時、アクセス日時)を取得、設定するには、Fileクラスを使えば簡単です。 以下に、ファイル"C:\test.txt"のタイムスタンプを取得し、また、タイムスタンプを現在の時間にする例を示します。 '作成日時の取得(DateTime値を返す) 'C:\test.txt が存在しないときは、UTCの 1601/01/01 9:00:00 を返す Console.WriteLine(System.IO.File.GetCreationTime("C:\test.txt")) '更新日時の取得 Console.WriteLine(System.IO.File.GetLastWriteTime("C:\test.txt")) 'アクセス日時の取得 Cons
配列やコレクションのフィルタ処理を行う(条件に合う要素を抜き出す)ここでは、配列やコレクションの要素のうち、条件に合った要素だけを取り出して新たな配列やコレクションを作成する(フィルタ処理を行う)方法を紹介します。 For文を使用する方法For文ですべての要素を一つずつ調べて、条件に合えばコレクションに追加するというのが最も基本的な方法です。 以下の例では、整数の配列から5未満の数だけ抽出して新しい配列を作っています。 '基の配列 Dim nums As Integer() = New Integer() {8, 2, 9, 1, 7, 4, 5, 3} '5未満の要素を覚えておくためのコレクション '.NET Framework 2.0以降ならば、List(Of Integer)を使った方が良い Dim al As New System.Collections.ArrayList() F
現在どの修飾子キーが押されているか調べる現在どの修飾子キー(Shift、Ctrl、およびAlt)が押されているかを調べるには、Control.ModifierKeysプロパティを参照します。 次の例ではButton1をクリックしたときに修飾子キーが押されていれば、どの修飾子キーが押されているか表示します。 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click 'どの修飾子キー(Shift、Ctrl、およびAlt)が押されているか If (Control.ModifierKeys And Keys.Shift) = Keys.Shift Then Console.WriteLine("Shiftキーが押されています。") End
より高い精度で時間を計測するここでは、ベンチマークを計るときなどのように、ある時点からある時点までの時間をより高い精度で計測する方法を紹介します。 Stopwatchクラス.NET Framework 2.0以降では、Stopwatchクラスを使うことにより、経過時間を高い精度で計測することができます。 使い方は非常に簡単で、Startメソッドで計測を開始し、Stopメソッドで停止し、Elapsedプロパティで経過時間を取得します。 'Stopwatchオブジェクトを作成する Dim sw As New System.Diagnostics.Stopwatch() 'ストップウォッチを開始する sw.Start() '次のようにStartNewメソッドを使うと、上の2行と同じことが1行でできる 'Dim sw As System.Diagnostics.Stopwatch = System
アプリケーションが64ビットで動いているか調べるIntPtr.Sizeを使うアプリケーションのプロセスが32ビットで動作しているか、64ビットで動作しているか(32ビットCLR上で実行されているか、64ビットCLR上で実行されているか)を判断するには、IntPtr.Sizeプロパティを使うと簡単です。IntPtr.Sizeが4ならば32ビット、8ならば64ビットで動作しています。
画像ファイルを読み込み、Imageオブジェクトを作成する.NET Framework Windowsフォームアプリケーションでは、画像を表現するクラスとしてImageクラスが用意されています。このサイトで紹介している様々なTipsでも、画像を表示するためにImageオブジェクトを作成しています。ここでは、画像ファイルを読み込んで、Imageオブジェクトを作成する方法を紹介します。 Image.FromFileメソッドで読み込むImageクラス(System.Drawing名前空間)のFromFileメソッドを使うと、画像ファイルからImageオブジェクトを作成できます。読み込むことのできる(GDI+でサポートされる)画像ファイルの形式は、MSDNの「イメージ、ビットマップ、およびメタファイル」によると、ビットマップ形式のBMP、JPG、GIF、PNG、EXIG、TIFF、メタファイル形式の
題名: log4netで設定したログ出力先パス、ファイル名の取得 著者: marine 日時: 2008/05/15 10:59:00 ID: 22030 この記事の返信元: (なし) この記事への返信: [22078] Re[1]: log4netで設定したログ出力先パス、ファイル名の取得 ima 2008/05/21 14:27:09 ツリーを表示 環境/言語:[.NetFramework2.0] 分類:[ASP.NET] ASP.Net2.0で、log4netを利用してログ出力を行っています。 log4net.configにて設定したログ出力先のパス、ファイル名を取得しようと思っているのですが、 APIからなかなか見つけれません。 どのようにすれば取得することができるのか教えて頂けないでしょうか。 現在の設定は下記の通りで、「.\log\Online.log」を取得したいと考えていま
指定したURLをブラウザで開く、電子メールソフトを開く指定したURLをブラウザで開くProcess.Startメソッドを使い、関連付けにより、簡単に指定したURLをブラウザで開くことができます。「通常使用するブラウザ」として設定されているブラウザが開きます。
Win32リソースを実行ファイルに埋め込むここでは、アセンブリファイルにWin32リソースを埋め込む方法を紹介します。なおここで紹介している方法は、プロジェクトをビルドした時に作成されるアセンブリファイルにWin32リソースが埋め込めれるようにする方法で、プログラムによって埋め込む方法ではありません。 リソースファイルを作成するまず、埋め込むリソースをひとまとめにしたリソースファイルを作成します。(Resource Hackerを使用すればリソースファイルを作成しなくても大丈夫ですが、このようなツールを使用しないのであれば必要です。) Visual Studioを使用して作成するVisual Studioを使用してリソースファイルを作成する手順は、以下のようになります。 Visual Studioのメニューから「ファイル」-「新規作成」-「ファイル」を選択する。下図のようなダイアログが表示
DataGridViewの一番下の新しい行(新規行)を非表示にして、ユーザーが新しい行を追加できないようにするこの記事への評価、コメント
線を描画するときに使用するPenオブジェクトのEndCapプロパティをLineCap.ArrowAnchorにするだけで、簡単に矢印が描けます。なお線の描き方に関しては、「線を描く」や「曲線を描く」等をご覧ください。 EndCapプロパティは線の終点で使用するパターン(キャップスタイル)を指定するものです。同様にStartCapプロパティで始点のキャップスタイルも指定できます。 実際にStartCapとEndCapプロパティをいろいろ変えて直線を描いてみましょう。 'Imports System.Drawing 'Imports System.Drawing.Drawing2D 'がソースファイルの一番上に書かれているものとする '描画先とするImageオブジェクトを作成する Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.H
直線を描くまずは直線を一本引いてみましょう。直線を描画するには、Graphics.DrawLineメソッドを用います。 早速ですが、具体例を示します。次の例ではPictureBoxコントロール(PictureBox1)の座標 (10, 20)-(100, 200) に太さ1の黒い線を描いています。 'Imports System.Drawing '描画先とするImageオブジェクトを作成する Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height) 'ImageオブジェクトのGraphicsオブジェクトを作成する Dim g As Graphics = Graphics.FromImage(canvas) '(10, 20)-(100, 200)に、幅1の黒い線を引く g.DrawLine(Pens.Black, 10,
ColorMatrixを使用した方法ネガティブイメージ(色を反転させた画像)を作成するには、画像のすべてのピクセルで、255からRGBの各成分を引きます。この処理は、ColorMatrixクラスを使用すれば簡単にできます。ColorMatrixに関して詳しくは「画像のカラーバランスを補正して表示する」をご覧ください。 以下の例では、指定された画像からネガティブイメージを作成するメソッドを作成しています。また、PictureBoxコントロール(PictureBox1)をクリックすると、画像ファイル(C:\test\1.bmp)のネガティブイメージが表示されるようにしています。 'Imports System.Drawing ''' <summary> ''' 指定された画像からネガティブイメージを作成する ''' </summary> ''' <param name="img">基の画像</
注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。 通常(DataGridViewTextBoxColumn列)は、DataGridViewの列ヘッダーをクリックすることにより、ユーザーが並び替えを行うことができますが、これをできないようにする方法を紹介します。 ユーザーの並び替えを禁止するには、DataGridViewColumn.SortModeプロパティをDataGridViewColumnSortMode.ProgrammaticかNotSortableにします。Programmaticにすると、DataGridView.Sortメソッドで並び替えを行った時に、列ヘッダーの右側に昇順、降順のどちらで並び替えが行われているかを示す矢印(並び替えグリフ、ソートグリフ)が表示されます。NotSortableでは、ソートグリフは表示さ
注意:ここで紹介する方法は、主にVisual Studio 2003以前で使用される方法です。Visual Studio 2005以降でもこの方法は可能ですが、「Visual Studioでリソースを管理する」で紹介している方法を使ったほうがよいでしょう。 ここでは、画像やテキストファイルなどのリソースをプロジェクトに追加して、ビルドした時に作成されるアセンブリファイルに埋め込まれるようにする方法を紹介します。なおここで紹介している方法はマネージリソースを埋め込む方法であり、Win32リソースを埋め込む方法は「Win32リソースを実行ファイルに埋め込む」で紹介しています。 リソースを埋め込むVisual Studioの場合、ソリューションエクスプローラでプロジェクトを右クリックして表示されるメニューの「追加」-「既存項目の追加」(または「新しい項目の追加」)から埋め込みたい項目を追加し、プ
TabControlのタブが横にあると正常に表示されないビジュアルスタイルが有効になっており、タブコントロールの外観が通常(TabControl.AppearanceプロパティがTabAppearance.Normal)のとき、タブを右または左に表示しようとすると(TabControl.AlignmentプロパティをTabAlignment.LeftまたはTabAlignment.Rightにすると)、テキストが表示されなくなります。また、タブを下に表示したとき(TabControl.AlignmentプロパティをTabAlignment.Bottomにしたとき)は、テキストは表示されますが、タブの向きが上下逆になります。これを回避するには、ビジュアルスタイルを無効にするか、タブを自分で描画します。ここではこれらの方法を説明します。 TabControlのビジュアルスタイルを無効にするアプ
次のページ
このページを最初にブックマークしてみませんか?
『DOBON.NET: VB.NET, C#,』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く