Form とは, GUI をはりつける部品の領域のこと.
System.Windows.Forms.Form
USAGE
File > New > C# WindowsApplication
コントロールはツールボックスから配置する。
d:/img/test/test.bmp
File 構成
Form1_Designer.cs // Form1 class が定義されている. Form 用の code ( 自動生成 )
Program.cs // EntryPoint
新たにフォームを作る
SE > NodeApp > RMB > 「追加」→「Windowsフォームの追加」
■ DialogBox
// どのボタンを選択したかを判断する
if (MessageBox.Show("ボタンを選択", "タイトル", MessageBoxButtons.YesNo) == DialogResult.Yes) {
MessageBox.Show("[はい] ボタンを選択しました");
} else {
MessageBox.Show("[いいえ] ボタンを選択しました");
}
■ Event
■ Mouse(マウスイベント)
// マウスボタンの左ボタンが押されたときにウィンドウを移動する。
private void splitContainer1_Panel1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Left += e.X;
this.Top += e.Y;
}
}
■ KeyboardEvent(キーボードイベント)
■ Form
using System.Windows.Forms;
// Icon
// タイトル
Form.Text = "タイトル";
// 透明
Form.Opactiy = 0.5f;
// 最前面
Form.TopMost = true;
// 最大, 最小ボタン
Form.MaximizeBox = false;
Form.MinimizeBox = false;
// 背景画像
Form.backgroundImage = Image.FromFile( "d:/test.bmp" );
// ウィンドウ枠( フレーム )をなしにする。
Form.FormBorderStyle = FormBorderStyle.None;
Form.TransparencyKey = Color.White;
// 表示する。
Form.Show();
// 閉じる
Form.Close();
// 非表示にする。
Form.Hide();
// フォームを強制的にアクティブにする
// 複数のフォームやマルチタスクによりフォーカスが他のフォームに移る場合に使う。
this.Activate();
Show メソッドは生成元のオブジェクトが残る。
Form1とForm2が同時 に表示され
同時にフォーム上のコントロールを操作できる。
private void Form1_Load(object sender, System.EventArgs e)
{
Form Form2=new Form();
Form2.Show();
}
ShowDialog メソッドは生成元のオブジェクトからフォーカスを奪うとともに
生成元を閉じる。
private void Form1_Load(object sender, System.EventArgs e)
{
Form Form2=new Form();
Form2.ShowDialog();
}
ShowDialogメソッドで開いたフォームの場合
Closeメソッドを実行してもフォームオブジェクトは捨てられないので
Disposeメソッドを併せて実行すること。
(Disposeすることによって使用メモリが開放される。)
this.Dispose();
フォームを画面中央に表示するには
画面全体の大きさを取得する。
int w, h;
w = Screen.PrimaryScreen.WorkingArea.Width; //画面の幅
h = Screen.PrimaryScreen.WorkingArea.Height; //画面の高さ
// Form の表示前
private void Form_load( object sender, EventArgs e ) {
}
// Form の閉じる前
private void Form_FormClosing( object sender, EventArgs e ) {
}
// Form の閉じた後
private void Form_Closed( object sender, EventArgs e ) {
}
// Form のサイズが変わったとき
private void Form_Resize( object sender, EventArgs e ) {
}
■ DragDrop
まず DragDrop をうけつけるように form の AllowDrop プロパティを true にする。
// DragDrop をうけつける
プロパティエディタで "イベント" で"DragDrop" と "DragEnter" に用意する。
// "DragEnter" のイベントハンドラー内で、ドラッグされてきたファイルを受け入れられることを通知するプログラムを記載します。
private void dataGridMeisaisyo_DragEnter(object sender, DragEventArgs e)
{
// ファイルのドラッグアンドドロップのみを受け付けるようにする。
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
// ドロップされたファイルは、アプリケーション側に内容がコピーされる
e.Effect = DragDropEffects.Copy;
}
}
// "DragDrop" イベントハンドラーに、ドロップされた時の制御プログラムをかく
private void dataGridMeisaisyo_DragDrop(object sender, DragEventArgs e)
{
// ドラッグアンドドロップされたファイルのパス情報を取得します。
foreach (String path in (string[])e.Data.GetData(DataFormats.FileDrop) )
{
// "filename" 変数に格納されたドロップされたファイルの処理をする。
}
}
■ Control
// 表示, 非表示
Control.Visible = true;
// 有効/無効
Control.Enabled = true;
// 位置
Control.Left = 0;
Control.Top = 0;
// 大きさ
Control.Width = 100;
Control.Hight = 100;
// 自身にフォーカスする
Control.Focus();
■ Control.の動的な追加
Form.Controls.Add( Control )
Form_load() {
Label l = new Label();
this.Controls.Add( l );
this.Controls.Remove( l );
}
■ layout
■ SplitContainer
DESC
Control がない状態でフォームに配置すると
縦に分割した2つの領域を作成できる。
■ TrackBar(Slider)
// 最大最小を設定
TrackBar1.Minimum = 1;
TrackBar1.Maximum = 10;
// 現在の値 ( カーソル位置も変更される )
TrackBar1.Value = 5;
カーソルが移動した時のコールバック
private void trackBar1_Scroll(object sender, EventArgs e)
{
int value = trackBar1.Value;
}
■ Textbox
{
this.LogWindow.Clear ();
// 文字列を追加
LogWindow.
// Accept.cs 参照
textbox1.Text = "aaa";
textbox1.Clear();
// ReadOnly にする
textbox1.ReadOnly = true;
// 選択された文字列
textbox1.SelectedText;
// 選択された文字数
textbox1.SelectionLength;
// 行数( string 配列 )
textbox1.Lines.Length;
// 追加する。
textbox1.AppendText ( str + "\r\n" );
MessageBox.Show( textbox1.Text );
■ CheckBox
if ( CheckBox1.Checked() ) {
}
■ Listbox
// 項目を追加
listBox1.Items.Add( "A" );
listBox1.Items.Add( "B" );
// 削除
listBox1.Items.Remove( "B" );
listBox1.Items.RemoveAt( 2 );
listBox1.Items.Clear()
Object o = listBox1.SelectionItem;
int i = listBox1.SelectedIndex;
■ CommboBox
// 項目を追加
commboBox1.Items.Add( "A" );
commboBox1.Items.Add( "B" );
// 選択中のアイテム
commboBox1.Text;
■ ProgressBar
//progressBar1.Maximum = 100;
//progressBar1.Value += 10;
//progressBar1.Value += 50;
progressBar1.Value += 33;
WARNING
Value が 100 を超えると, 落ちる
query すること
// windows の style の影響をうける
//progressBar1.Style = ProgressBarStyle.Marquee;
progressBar1.Style = ProgressBarStyle.Continuous;
■ PictureBox
// 画像を設定
pictureBox1.Image = Image.FromFile( "d:/foo.bmp" );
// 大きさの調整
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;