[C#]DataGridViewのちらつき防止1
DataGridViewのちらつきを防止する
DataGridViewなどのコントロールに大量のデータが含まれる場合、リストの再描画に時間がかかる(再描画が目に見える状態)ことがよくある。はず。
これを解消するためにはPictureBoxやFormなどに含まれる、DoubleBufferedのプロパティを有効にしてやればよい。
しかし、DataGridViewなどではDoubleBufferedのプロパティはProtectedなので、通常は有効にできない。
有効にするための方法1
DataGridViewから派生したコントロールを作成する。
↓のような感じ。
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
class CustomDataGridView : DataGridView
{
public CustomDataGridView()
: base()
{
this.DoubleBuffered = true;
}
}
}
[ADO]SQL Server Management Studio
SQL Server 2005 Express Edition と SQL Server 2005 Express Edition with Advanced Services を管理するための、使いやすいグラフィカルな管理ツール(DLサイトの説明より)
上記サイトからDLし、インストール、起動すると次のような接続画面になる。
「サーバー名」
「サーバー名+SQL Server」のインスタンス名が初期値として入力されている。
「認証」
Windows認証とSQL Server認証の2種類があるが、推奨されるのはWindows認証。
これは、Windows認証であれば、ActiveDirectoryなど、Windowsで設定されている設定がそのまま適用されるからだとか。
接続が成功すると、Visual StudioのようなIDE画面になるので、オブジェクトエクスプローラから
適当にデータベースとテーブルを作成してみる。
TestDBとTestTableをつくってみた。
TestTableがもつフィールドは「TestID」と「TestName」。(画像では主キーの設定忘れた)
まぁIDEなので、直感的にさわってれば何かしらできるでしょう。
わからん人は先ずデータベースについて勉強。
[C#]Property Grid(プロパティグリッド)
プロパティグリッドを使う
プロパティグリッドとは、IDEのプロパティウィンドウをアプリケーション上で使用するためのツール。
↓のような感じのアプリを作れる。
上記のようにボタンとプロパティグリッドを配置してみた。
プロパティグリッドのプロパティ、「SelectedObject」に配置したボタンを選択すれば、プロパティグリッド上からボタンのプロパティを変更できるようになる。
今回は既存のコントロールをプロパティグリッドに設定したが、本来であればカスタムコントロールやユーザコントロールで作成したコントロールのデバッグ用や、自分で属性を指定して、独自の設定を行うのが正しい使い方と思う。
属性の設定方法やらカスタムコントロールやらはまたそのうち。
[用語][.NET]PEファイルとは
PEファイルとは
メモリ空間にそのまま読み込むことができるファイル形式のこと。
以下のような構成をしている
PEファイル
└┬ PEヘッダ
│ ├ MS-DOSヘッダ
│ ├ PEファイルヘッダ
│ │ └ オプションヘッダ
│ │ ├ 標準ヘッダ
│ │ ├ Windows NT固有フィールド
│ │ └ データディレクトリ
│ └ セクションヘッダ
└ Relational Virtual Address
[.NET]実行ファイルをダンプする
バイナリ情報をダンプする
ちょっと組込を思い出して楽しかった。
マイクロアドBTパートナーはブログやサイトに貼るだけ。お小遣いをゲットしよう!
[テスト環境]
Visual Studio 2008 StandardEdition
実行ファイルのダンプを行ってみる。
ダンプのためには、VisualStudio付属の dumpbin.exe を使用する。
先ず、ダンプする実行ファイルとして以下の簡単なソースを作成してみた。
(フォームLoad時にメッセージボックスを表示するだけ)
[テストコード]
using System;
using System.Windows.Forms;
namespace HelloWorld
{
public partial class HelloWolrdForm : Form
{
public HelloWolrdForm()
{
InitializeComponent();
}
private void HelloWolrdForm_Load(object sender, EventArgs e)
{
MessageBox.Show("Hello World");
}
}
}
ダンプするために以下を実行。
「ツール」→「Visual Studio 2008 Command Prompt」
コマンドプロンプトから、上記プロジェクトのexeファイルのあるディレクトリに移動し、プロンプトから以下を実行する。
>dumpbin /headers HelloWorld.exe
得られた結果は以下のような感じ。
--------------------------------------------------------------------------------------
Dump of file HelloWorld.exe
PE signature found
File Type: EXECUTABLE IMAGE
FILE HEADER VALUES
(中略)
OPTIONAL HEADER VALUES
10B magic # (PE32)
8.00 linker version
1400 size of code
800 size of initialized data
0 size of uninitialized data
32AE entry point (004032AE)
2000 base of code
4000 base of data
400000 image base (00400000 to 00407FFF)
2000 section alignment
(中略)
SECTION HEADER #1
.text name
12B4 virtual size
2000 virtual address (00402000 to 004032B3)
1400 size of raw data
200 file pointer to raw data (00000200 to 000015FF)
0 file pointer to relocation table
0 file pointer to line numbers
(以下略)
--------------------------------------------------------------------------------------
青字で示した部分の説明
entry point
最初の実行される命令が格納された場所
virtual address
メモリに読み込みまれる仮想アドレス
file pointer to raw data
実行ファイルのの読み込まれるアドレス
つまり、上記の情報から
(0x004032AE - 0x00402000 + 0x200) = 0x14AE
のアドレスが最初に実行される。
実際のexeファイルをバイナリエディタで開き、0x14AEのアドレスを確認すると、
FF 25 00 20 40 00
と続いていた。
上記は、アセンブリでは
jmp 0x00402000
ということらしい。
ということで、仮想アドレスの最初にジャンプするということになる。
今回のdumpbinには「/headers」オプションのほかにも多数のオプションがあるので、いろいろ試してみるべし。