トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Programming_C#_sample

C#のサンプルとかチュートリアルとか

永遠に工事中

移行する前に知っておいて欲しいC/C++の知識

ポインタ(値渡しと参照渡しの区別がつく程度)

とにかくクラス

基本
C#では名前空間>クラス/列挙体など>変数/関数という構造にする必要があり、グローバル変数は使えず、関数も単体では存在できない。そのためクラスの習得は必至。とはいえ、定義/初期化/呼び出しだけ見ておけば当分は間に合う。
慣れてきたら
継承/カプセル化/ポリモーフィズムなど、設計に関する話も見ておくとよい。いずれもオブジェクト指向の基礎。

基本的な書式の違い

配列の宣言が若干異なる点に注意。後ほとんど同じ。

  • C
int list[5]; //サイズ固定
int[] list = new list[5]; //実体の生成時にサイズを設定

変数の宣言やステートメント(ifやswitch、forのようなもの)の書式はほぼ同じ。

他には、構造体/クラスメンバの参照に用いる演算子が統一されている。

//値の場合
Node node = new Node();
node.x = 5;
//ポインタの場合
Node* node = new Node();
node->x = 5;
//スコープを参照する場合
Network::Node node
//.,->,::の区別は必要ない
Node node = new Node();
node.x = 5;

フォームアプリケーションの基礎

基本的な流れ
フォームアプリは基本的にフォームはデザイナ上でマウスでポチポチと概観を作り、計算部分はソースコードを直接編集する形を取る。デザイナで設置したコントロールの定義と初期化は〜.Designer内に記述される。
基本的なコントロール
以下によく使うコントロールを示す。ついでに他の言語との名前の対比も示しておく(一部怪しいところは?付き)。
C# Java(Android) 機能
Label TextView 文字列を表示する
Button Button 名前の通りボタン
ComboBox Spinner クリックすると選択肢が表示されるボタン
TextBox TextEdit テキストの表示と編集
RichTextBox TextEdit 複数行のテキスト編集
PictureBox View/SurfaceView 画像を描画するコントロール
CheckBox ToggleButton クリックするとマーカーのON/OFFが切り替わるボタン
ListBox ListView 一列に文字や画像などを並べるコントロール

サンプル1 フォームを表示

Program.cs

...
namespace WindowsApplication1
{
    static class Program
    {
        /// <summary>
        /// アプリケーションのメイン エントリ ポイントです。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            
            // new Form1() がフォームの生成、描画ループを自分で管理したい場合は
            // ここを書き換える 
            Application.Run(new Form1());
        }
    }
}

変数やイベントを自分で追加する場合は、Form1.csのpublic partial class Form1 : Formの中に書く。

サンプル2 ボタンとテキスト

public partial class Form1 : Form
{
      ...
      private void button1_Click(object sender, EventArgs e)
      {
          //Textに文字列を設定
          textBox1.Text = "Click";
      }
}

サンプル3 四則演算を行うもの

コード中でコントロールを管理する
  • ライフサイクル
    • コントロールの作成
    • コントロールの初期化(パラメータ設定)
    • コントロールの親の決定
    • コントロールの子の決定
    • コントロールの破棄

サンプル4 コード中でコントロールを作成、削除する

Form1.cs

   public partial class Form1 : Form
   {
       Button button = null;
       ...
       //初期化メソッド
       private void Form1_Load(object sender, EventArgs e)
       {
           button = new Button();
           button.Text = "Dispose";
           button.Location = new Point(50, 150);
           button.Size = new Size(200, 50);
           
           //フォームにbuttonを所属させる
           this.Controls.Add(button);
           
           //クリック時のイベントの登録
           button.Click += new EventHandler(button_Click);
       }

画像の描画

画像の描画手順
画像の描画には、主にGraphicsクラスを用いて、PictureBoxのImageクラスに対して描画を行う。
コード例
//書き込む画像をファイルから読み込み
Image drawimage = new Bitmap(書きたい画像のパス);

//ピクチャボックスを作成
PictureBox picturebox = new PictureBox();

//ピクチャボックスのイメージを初期化
picturebox.Image = new Bitmap(picturebox.Width,picturebox.Height);

//描画を行うクラスを作成(ここで引数にしたImageに書き込んでいく)
Graphics graphics = Graphics.FromImage(picturebox.Image);

//画像を左上(0,0)に描画
graphics.DrawImage(drawimage,new Point(0,0));

//不要になったオブジェクトを破棄
graphics.Dispose();

//画面を更新(しないと反映されない)
picturebox.Reflesh();


サンプル5 画像の削除/読み込みと表示

プロジェクト

乱数の操作

乱数の生成
乱数の種を指定して、その系列を確かめるプログラム
乱数と種に関する話はシミュレーション参照

ネットワークシミュレーションの基礎の雛形

ノードの作成と表示

P2Pモデルの作成

車車間通信モデルの作成

Copyright(C) by 芝浦工業大学 工学部通信工学科, 森野研究室. All Rights Reserved.