Windbg で sosex を使ってマネージコードのソースレベルでブレークポイント設定

Windbg でマネージコードをデバッグするとき、sosex を使えば、ソースレベルでブレークポイントを設定できる。 '.load sosex.dll' で sosex をロード。 '!mbp ソースファイル名 行番号' でブレークポイント設定。 'g' で実行開始。 ブレークポイントにヒット…

あるアセンブリの実行に必要なアセンブリ

あるアセンブリの実行に必要なアセンブリは、そのアセンブリのマニフェストに書いてある。アセンブリのマニフェストは ildasm で表示できる。

Visual Studio のインクリメンタルサーチ

Visual Studio のインクリメンタルサーチを使えば、1文字打つごとにカーソルが移動し検索できる。 Ctrl + I でインクリメンタルサーチ開始。マウスカーソルが双眼鏡の形に変わる。 サーチする文字を入力すると、その文字へカーソルが移動する。下の例では 'c…

Native Exe ファイルの実行開始アドレス

Dumpbin コマンドで exe ファイルのヘッダ情報を表示すると、その中に開始アドレスが含まれている。ためしに windbg で、開始アドレスから逆アセンブルしてみる。64 ビットのアドレスは ***長い***。

Visual Studio の F8 で次の項目に移動できる。

Visual Studio の Error List Find Results Find Symbol Results で、 F8 を押すと、 これらのウインドウの選択項目が次へ移動し、 コードエディタでは対応する行にカーソルが移動 します。とっても便利!

DataGridView のあるセルの境界線スタイルを変更する

DataGridView のあるセルの境界線スタイルを変更するには、 CellPainting イベント で、 変更したいセルの AdvancedBorderStyle を設定する。 次のプログラムは、セル (1, 1) の境界線を DataGridViewAdvancedCellBorderStyle.InsetDouble に設定する。e.Adv…

UserControl のキャプション用ラベル

UserControl のキャプションとして使うラベル。 親コントロール内にフォーカスがあるかないかで、背景色を変える。 背景色は、グラデーションで表示する。 using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms…

TextBox のサイズを内容に応じて設定する

TextBox のサイズを内容に応じて設定するには、TextRenderer クラスの MeasureText メソッドで表示サイズを計算し、その値を TextBox に設定する。TextBox のサイズは境界を含んでいる。そのため BorderStyle が None 以外の場合、計算したサイズをそのまま…

シリアライズ LOB パターン

データベースに関連が複雑なオブジェクトを保存するときに使用するパターン。参照: P of EAA: Serialized LOBたとえば、あるオブジェクトが個数が可変のオブジェクトを保持する場合、普通にデータベースのテーブルに保存しようとすると、 データベースに、そ…

Visual Studio の Document Outline ウインドウ

フォームをデザイナーで作成するとき、Document Outline ウインドウが便利。 フォーム内のコントロールの構造が表示される。 クリックするとそのコントロールがデザイナで選択される。 Document Outline ウインドウは、メニューの "View -> Other Windows ->…

ポップアップから続けてポップアップを表示する

ポップアップパネル - プログラマのメモ書きtt195361.hatenablog.comで表示したポップアップからさらにポップアップを表示すると、もともと表示していたポップアップが閉じてしまう。これを閉じないようにするには ToolStripDropDown.OwnerItem プロパティ …

DataGridView.AutoSizeColumnsMode を Fill にしたときの動作

DataGridView の AutoSizeColumnsMode プロパティ を DataGridViewAutoSizeColumnsMode.Fill に設定したときの動作について。 行の横幅は、ちょうど DataGridView の幅になる。 各カラムの幅は、DataGridViewColumn.FillWeight プロパティ で設定した割合に…

Padding と Margin の違い

System.Windows.Forms.Control の Padding プロパティと Margin プロパティの違いは、 Padding は Control の中に空けるスペース。 Margin は Control の外に空けるスペース。 以下は注意点。 Dock プロパティでドッキングしたコントロールの Margin は使わ…

ポップアップパネル

ポップアップパネルの作り方。ポップアップパネルは、 パネル外をクリックすると閉じる。 表示してもフォーカスは親フォームに残る。 というもの。手順は、 中身として表示するコントロールを含む ToolStripControlHost を作成し、 ToolStripDropDown を作成…

DataGridView での SetCurrentCellAddressCore 関数への再入呼び出しエラー

DataGridView クラス の CellEnter イベント で、選択されたセルを別のセルに変更するために、 private void dataGridView1_CellEnter(Object sender, DataGridViewCellEventArgs e) { dataGridView1[columnIndex, rowIndex].Selected = true; } を実行した…

DataGridView への行追加時の "セルテンプレートが指定されていません"

DataGridView クラス の Rows.Add メソッド で行を追加しようとしたら、 DataGridView コントロールの列のうち少なくとも 1 つにセルテンプレートが指定されていません。 というエラーが発生した。DataGridViewColumn.CellTemplate プロパティ の説明にある…