3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

vb.net

(.Net)テキストファイルに簡単に書き込みする方法

.Net2.0から下記のメソッドを使うことで、簡単にテキストファイルの書き込みができるみたいです。 File.WriteAllText(String、String、Encoding) File.AppendAllText(String、String、Encoding) File.WriteAllLines(String、String[]、Encoding) Write…

(VB.Net)マウスカーソルで任意の画像を使う

.Netで任意の画像をマウスカーソルとして扱いたい場合です。 簡単にできるかと思ったら、結構はまりました。 まず、カーソルファイルを作ります。 そのカーソルファイルをプロジェクトに追加して、ビルド時に出力するようします。 ソースは下記のようにする…

(VB.Net)DataGridViewのショートカットキーでのコピー(Ctrl+C)をExcelに貼り付けると文字化けする

引き続き.NetのDataGridViewコントロールネタです。 DataGridViewで DataGridView.ClipboardCopyMode プロパティ を Disible 以外にするとなんと勝手にCtrl+Cでセルの値がタブ区切り形式でクリップボードにコピーされます。 お、これをそのままエクセルに貼…

(VB.Net)DataObject.GetText()の引数にCSV(TextDataFormat.CommaSeparatedValu)指定時のバグ!?

(VB.Net)DataGridViewで現在選択されているセルの値を簡単にタブ区切りやCSV文字列にする方法の続きです。 次のようなデータをDataGridViewに表示するとします。 ┌────┬───────┐ │備 考 │備 考2 │ ├────┼───────┤ │今日は │ │ │寒い │カンマ,カンマ │ └────┴…

(VB.Net)DataGridViewで現在選択されているセルの値を簡単にタブ区切りやCSV文字列にする方法

DataGridViewの値をCSVにしたり、コピペできるようにしてエクセルで扱いたいということは多いと思います。 DataGridViewにはそれらのデータ転送を簡単にできる方法があります(が、中途半端です) さて、DataGridViewで選択されたセルの値を取得するために、…

(VB.Net)DataGridViewでセルの値を複数行表示

DataGridViewColumn.DefaultCellStyle.WrapMode = DataGridViewTriState.True とすることで可能です。 サンプル: 'すべての列にかかわる設定 変数 dgvExtract は DataGridView For Each iClm As DataGridViewColumn In dgvExtract.Columns 'すべての列で改…

(.Net)DataGridViewで列、高さ自動設定の注意。

行の場合、DataGridView.AutoSizeRowsModeプロパティ 列の場合、DataGridView.AutoSizeColumnsModeプロパティで 指定できますが、これらのプロパティでNone以外の値指定すると、セルの値が変わったときに自動的に変更になるので、表示データが多い場合、パフ…

(VB.Net、SQL)OLEDBでのパラメータクエリ

.NetからOLE DBでmdb(Access)に対してパラメータクエリをする方法です。 OLEDBでは名前付きパラメータは使えず、パラメータの順序で対応するプレースホルダが決まるみたいなので注意が必要です。 (でも、パラメータに名前があっても問題は無いようです) 下記…

(.Net)DataGridViewでリンク列の値とDataSourceの列の値を対応させる方法

したいこと:DataTableの"Mail"列の値をDataGridViewのリンク列(DataGridViewLinkColumn)で表示したい。 最初は、ループでリンクセルの Value プロパティに値を入れてたのですが、それだと値が表示されませんでした。 で、いろいろMSDN徘徊してるうちによー…

生年月日(誕生日)から簡単に年齢出す方法

ITProに載ってました。こちらです。 ちょうどDBに文字列形式で yyyyMMdd 形式で保存された生年月日から年齢を求める必要があったので助かりました。 具体的にはこう書けばいいみたいです。 (今日の日付-誕生日)/10000の小数点以下切捨て。 ということで、VB.…

(.Net)任意の住所の地図をGoogleMaps(ブラウザ上で)で表示する

スタンドアロンアプリケーションから任意の住所の地図を表示する方法です。 最初はGoogle APIとかAPI Key取得し使って住所を緯度経度に変換して、マークつけて、とかしないといけないのかと思ってましが、GoogleAPIって自分のWebにGoogleMaps載せるときに使…

(VB.Net)[補足2].NetからのPDFファイル印刷方法

この記事は(VB.Net)[補足].NetからのPDFファイル印刷方法の追記情報です。 ジョブやキューはループの中でまわしてもそのままではステータスは最新のものにならないようです。 PrintQueue.Refresh() や PrintSystemJobInfo.Refresh() というメソッドを実行す…

(VB.Net)[補足].NetからのPDFファイル印刷方法

以前に(VB.Net).NetからのPDFファイル印刷方法という記事を書きましたが、それの追記です。 実はあの方法だと1つ問題が生じることが分かりました。 それはプロセスの終了方法です。 'プロセス終了 pro.WaitForExit(5000) pro.Kill() というやり方は時間指定…

(.Net)画像ファイルを表示しながら削除可能にする方法

PictureBoxであるイメージファイルを表示したままそのファイルを消す場合の方法です。通常ファイル名を指定して Bitmap オブジェクトを作成し、Pictureboxにセットした後、File.Delete(パス) で消しますが、こうすると例外発生します。 なぜなら Bitmap をフ…

(VB.Net).NetからのPDFファイル印刷方法

.Netで作ったプログラムからPDFファイルを印刷する方法です。なお、.Net自体はPDFを理解できないので、AcrobatかAdobeReaderプロセスを起動させて印刷させる方法です。(これ以外に方法があったら教えてください。) ということで、AcrobatかAdobeReaderがイン…

(VB.Net)パラメタ使ったSQLで、NULL値を入れる。

ついつい忘れてしまうのでメモ。 SqlParameterを使って、値を入れるときにNullを入れる方法です。 Imports System.Data.SqlClient Public Class TestClass Private Sub DBTest() Dim conn As New SqlConnection("DB接続文字列") 'StringBuilder使ったほうがS…

(vb.net)VB.NetではList.Findとかのデリゲートの実装が必要なメソッドは使えない!?

たとえばある List から特定の条件のものを探したいという時、今までは List をループでまわし、その中の条件式で探していました。 しかし、MSDNなど見てみると、 List.Find メソッド:指定された述語によって定義された条件と一致する要素を検索し、List 全…

(.net)紛らわしいTypeofとかいう単語

VB.NetにもC#にもtypeofという予約されてる語がありますが、挙動はまったく異なります。 C#,VB.Net両方やってるとたまに迷うので一応メモ。 VB.Netのtypeof 構文: TypeOf <名前> Is <型> <名前>のランタイム型に<型>との互換性があるかどうかを判断します。…

(vb.net)DateTime構造体の特定の部分だけ値を変えたい時

たとえば現在日時を取得し、時間だけ変えたいという時はこんな書き方ができます。 Dim dt As DateTime = DateTime.Now() Console.WriteLine(dt.ToString()) dt = DateTime.Parse(dt.ToString("yyyy/MM/dd 12:01:00")) Console.WriteLine(dt.ToString()) '結…

(VB.Net)DoubleからIntegerへのキャスト時の小数点以下のおかしな挙動。

doubleからintegerにキャストするときに、小数点以下の扱いですが、どうやらCやJavaのように切り捨てではないようです。 VB.Netの場合は結果は丸められるようです。(VB6もそうだったのか?) しかも丸めの法則が理解不能です。 具体的には下記のコードを見比…

カスタムコントロールでのデフォルトのフォントの変更

カスタムコントロール(Butonを継承し+αしたもの)を作っていて、デフォルトでのFontプロパティのフォント種を変えてほしいという話がありました。 実は.NetにControl.DefaultFontというプロパティがあるのですが、これは読み取り専用でしかもMSDNによると、…

(vb.net)VB.Net、VB2005で変わった点1

プログラム人生の最初にCをやってるせいか、VB6のプロジェクトに入ったとき、IF文の評価の時に、たとえば If 最初の条件式 And 2つ目の条件式 Then '.... End If というコードの時、"最初の条件式"の結果が False でも"2つ目の条件式"は評価されてしまう …

(vb.net)構成マネージャでのdebug,releaseの設定

VS2005の環境設定(VS初回起動時に設定)をを全般的な設定にしておくと標準ツールバーにてビルドのモードを選ぶことができます。 (これが環境設定をVisual Basicにしているとメニューとかツールバーに簡単には出てこないようで。。 自分はVBが嫌いなので、全般…

(vb.net)カスタムコントロール作成時に初期化処理を何でもかんでもコンストラクタに書いてはいけない

今回System.Windows.Forms.Buttonクラスを継承したカスタムコントロールを作ってます。 このとき自作コントロール側で、配置してる親フォームの名前を取得したいと思って下記のようなコードを書きました。 Public Class TButton Inherits System.Windows.For…

(.NET)あるオブジェクトのクラス名を取得する方法

アプリ内であるオブジェクトがどのクラスが出力したい時があります。まあ前から使ってたんですが、すぐ忘れるので一応メモ。 Dim str As String = "" MsbBox(str.GetType.ToString) とすると System.String というような感じで出てきます。 ちゃんと名前空間…

DirectShow(VB.NET)で描画時にユーザイベントを取得する方法

Panelコントロール内部で動画再生を行うコードをActiveMovie control type livraryを使って書いてますが、ユーザのマウスイベントとかが取得できなかった(Panelのイベントとして)でその方法を調べてみました。 'グラフマネージャの作成 Dim m_Grp As Filgrap…