33
Visual Studio 入門 森理 (moririring)

Visual studio 入門

  • Upload
    -

  • View
    1.444

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Visual studio 入門

Visual Studio入門

森理 麟(moririring)

Page 2: Visual studio 入門

自己紹介

   森理 麟(@moririring)● 職業 : ゲームプログラマ

● HP : 森理 麟(moririring)のHP● ブログ : 森理 麟(moririring)のプログラマブログ

● VSハッカソン倶楽部代表、EffectiveC++読書会

運営、MetroStyleDeveloperスタッフ、

TDDBCTA、わんくま同盟スタッフ

● MicrosoftMVP for C#

Page 3: Visual studio 入門

質問について

海外のイベントに参加して、参加者と発表者の質問のやりとりが非常に洗練されていると思った。

わからない場合は参加者がバンバン質問して、発表者はドンドンそれに答えていく。

うまく出来るか分からないけれど、簡単なルールなので、どんな小さいことでも、疑問を持ったら質問してください。

Page 4: Visual studio 入門

今日の環境と目的

説明に使用する言語はC#、アプリケーションはWindowsForm

Visual Studioや.NET Frameworkのバージョン、言語仕様や環境に依存する話は極力なし

初めての人が、兎に角Visual Studioをさわってアプリを作ってみたくなることが目標。

Page 5: Visual studio 入門

アジェンタ

● とりあえずアプリを作る

● アプリを効果的に見なおす

● アプリをもっと効果的に見なおす

Page 6: Visual studio 入門

とりあえずアプリを

作る

I make the application.

Page 7: Visual studio 入門

それでは

細かいことは後にして、早速、簡単なアプリを作ってみます。

Page 8: Visual studio 入門

作るアプリ

ファイルを選択して中身がテキストなら表示するアプリ

Page 9: Visual studio 入門

DEMO1

ライブコーディングで作っていきます。

private void button1_Click(object sender, EventArgs e){ openFileDialog1.ShowDialog();}private void openFileDialog1_FileOk(object sender, CancelEventArgs e){ textBox1.Text = openFileDialog1.FileName; StreamReader sr = new StreamReader(openFileDialog1.FileName); textBox2.Text = sr.ReadToEnd();}

Page 10: Visual studio 入門

修正

とりあえずアプリは完成しました。

それでは、1つずつ見なおしていきましょう。

Page 11: Visual studio 入門

アプリを効果的に

見なおす

Effective check for the application

Page 12: Visual studio 入門

こだわり #1 ボタン

他のウィンドウが開くボタンは、表示に三点リーダーを使う。幅は自動に任せると楽。

【 表示 】○ : 「...」←ドット三点

× : 「…」←三点リーダー

【 パラメータ 】AutoSize = True;AutoSizeMode = GrowAndShrink;

Page 13: Visual studio 入門

こだわり #2 一行テキストボックス

読み取り専用の場合、テキストボックスに限りReadOnlyを使う。普通はEnabled。

【 パラメータ 】○ : ReadOnly = false;× : Enabled = false;

Page 14: Visual studio 入門

こだわり #3 ファイル選択ダイアログ

ファイル選択ダイアログは選択させるファイルの種類が決まっていれば必ずそれを設定しておく。

【 パラメータ 】Filter = "txtファイル|*.txt";

Page 15: Visual studio 入門

こだわり #4 複数行テキストボックス

複数行テキストボックスはスクロールバーを両方につける。Bothの場合自動切り返しに注意する。

【 パラメータ 】ReadOnly = false;ScrollBars = Both;WordWrap = false;

Page 16: Visual studio 入門

こだわり #5 ファイルロード

全テキスト読み込みは専用関数があるので、そちらを使った方が楽。エラー処理までやってくれる。

【 パラメータ 】○ : File.ReadAllText× : StreamReader

Page 17: Visual studio 入門

こだわり #6 レイアウト

なるべく吸着して補助線が出る所に置く。デザインセンスに自信がないならルールを決めると良い。

【 色 】● ピンク フォントの位置をあわせ● ブルー コントロールの位置をあわせ● グレー 他のコントロールとの再近

Page 18: Visual studio 入門

こだわり #7 フォーム

フォームが可変だとレイアウト的におかしく見えるので、固定に。その際、最大化も忘れずにオフ。

【 パラメータ 】FormBorderStyle = FixedSingle;MaxmizeBox = false;

Page 19: Visual studio 入門

レイアウトへのこだわりを教えてくれた人

Page 20: Visual studio 入門

完成

最初に作った時よりも、見た目も良く、エラーが出にくいアプリになりました。

Page 21: Visual studio 入門

アプリをもっと効果的に

見なおす

More Effective check for the application

Page 22: Visual studio 入門

こだわり #8 一行テキストボックス2

ファイルを選択する方法で手書きにも対応させる。これで処理がまとめられる。ロード処理中はボタンを無効にすると良い。【 パラメータ 】ReadOnly = false【 メソッド 】private void textBox1_TextChanged(object sender, EventArgs e){ if (File.Exists(textBox1.Text)) { button1.Enabled = false; textBox2.Text = File.ReadAllText(textBox1.Text); button1.Enabled = true; }}

Page 23: Visual studio 入門

こだわり #9 ドラッグアンドドロップ

テキストボックスへのドラッグ&ドロップにも対応させる。

【 パラメータ 】AllDrop = true

【 メソッド 】DragEnterDragDrop

Page 24: Visual studio 入門

こだわり #9 ドラッグアンドドロップ

【ソース】private void textBox1_DragEnter(object sender, DragEventArgs e){ e.Effect = DragDropEffects.Copy;}private void textBox1_DragDrop(object sender, DragEventArgs e){ if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] fileName = (string[])e.Data.GetData(DataFormats.FileDrop); if (File.Exists(fileName[0]) == true) { textBox1.Text =fileName[0]; } }}

Page 25: Visual studio 入門

こだわり #9 ドラッグアンドドロップ

string dropFileName = "";private void textBox1_DragEnter(object sender, DragEventArgs e){ e.Effect = DragDropEffects.None; if (e.Data.GetDataPresent(DataFormats.FileDrop)) { var fileName = (string[])e.Data.GetData(DataFormats.FileDrop); if (File.Exists(fileName[0]) == true) { dropFileName = fileName[0]; e.Effect = DragDropEffects.All; } }}

private void textBox1_DragDrop(object sender, DragEventArgs e){ textBox1.Text = dropFileName;}

Page 26: Visual studio 入門

こだわり #10 ファイル選択2

テキストファイルはtxtだけと限らない。すべてを選べるように。エラー対策はどちらにしろ必要。

【 パラメータ 】Filter = "txtファイル|*.txt|すべてのファイル|*.*";

Page 27: Visual studio 入門

こだわり #11 ボタン2

ボタンを押した場合、テキストボックスにパスがあるならば、そのパスでダイアログは開いて欲しい。

【 メソッド 】private void button1_Click(object sender, EventArgs e){ if (File.Exists(textBox1.Text)) { openFileDialog1.InitialDirectory = Path.GetDirectoryName(textBox1.Text); openFileDialog1.FileName = Path.GetFileName(textBox1.Text); } openFileDialog1.ShowDialog();}

Page 28: Visual studio 入門

こだわり #12 レイアウト2

サイズと位置を可変にしたいコントロールは、Anchorと組み合わせて使う。

【コントロール】Anchor:コントロールが固定されるコンテナーの端を定義します。コントロールがいずれかの端に固定されるとその端と、その端に最も近いコントロールの端の間は、一定の距離を保ちます

Page 29: Visual studio 入門

こだわり #13 フォーム2

テキストボックスが可変になったらフォームも可変に。見た目も変更可能に。タイトルもつける。

【 パラメータ 】FormBorderStyle = Sizable;MaxmizeBox = true;○ : SizeGripStyle=Show;× : SizeGripStyle=Auto;Text = "Visual Studio入門アプリ";

Page 30: Visual studio 入門

こだわり #14 アイコン

画竜点睛を欠いては台無しです。アイコンを作りましょう。icoファイル作成はIcoFXがオススメです。

【 パラメータ 】リソースのアイコンフォームのicon

Page 31: Visual studio 入門

まとめ

これで完成です。

Page 32: Visual studio 入門

総評

今日は合計で14個のこだわりを説明しました。

最後にアプリを作る際にとても重要で好きな言葉です。「神は細部に宿る」

みなさんも自分のこだわりを見つけて下さい。

Page 33: Visual studio 入門

謝辞

ご清聴有難うございます。