« 2010年11月 | トップページ | 2011年1月 »

2010年12月21日 (火)

InvokeRequired と Invoke の使用例

C# における InvokeRequired と Invoke の使用例

※別スレッドからアイテム操作を行う場合に使用する

// delegate の定義(引数・戻り値をAddListViewと合わせる)
private delegate void AddListViewDelegate(ListView view, ListViewItem item);

/// <summary>
/// リストビューにアイテムを追加
/// </summary>
/// <param name="view">追加対象のリストビュー</param>
/// <param name="item">追加内容。</param>
private void AddListView(ListView view, ListViewItem item)
{
  // Invoke メソッドを使用するべきかどうかを判断(別スレッドの場合)
  if (InvokeRequired)
  {
    //AddListViewDelegateの作成(メソッドを指定)
    AddListViewDelegate dlg = new AddListViewDelegate(AddListView);

    // Invokeメソッドを使用する
    // dlg : delegateを指定
    // object[] : delegate で使用する引数を指定する。
    this.Invoke(dlg, new object[] { view, item });
    return;
  }
  // 通常の処理(同一スレッドの場合)
  view.Items.Add(item);
}

C# ComboBox の DataSource 書き換え時の即時反映

ソース上でコンボボックスの DataSource を単に書き換えても、
フォーム上には反映されない。
反映させる場合は一旦 null を設定し、その後で再設定する必要がある。

■ フォーム読み込み時

// データソース用のデータを Setting.settings より取得&設定(型:System.Collections.Specialized.StringCollection)
cmbBoxYyyyy.DataSource = Properties.Settings.Default.XxxxxList

■ボタンなどを押した時の処理

// ComboBox の入力値を保存
String SaveText = cmbBoxYyyyy.Text ;

// DataSource 用のデータを取得
StringCollection SaveItem = Properties.Settings.Default.xxxxxList;

// ComboBox 入力値を追加
SaveItem.Add(SaveText);

// Setting.settings のデータを保存
Properties.Settings.Default.xxxxxList = SaveItem;
Properties.Settings.Default.Save();

// 保存したデータで再設定する(下記のNull設定が無いと表示が更新されない)
cmbBoxYyyyy.DataSource = null;
cmbBoxYyyyy.DataSource = Properties.Settings.Default.xxxxxList;

// 入力値を再設定
cmbBoxYyyyy.Text = SaveText;

2010年12月17日 (金)

DataGridViewのサイズをフォームのサイズに合わせて変更する

Anchor プロパティーを変更すると、
画面のサイズに合わせてコントロールのサイズ位置などが変更される。

画面サイズが決まっていない場合、
画面の最大化、サイズ変更等を行って確認する必要がある

■ 参考サイト

http://www.atmarkit.co.jp/fdotnet/csharptips/002anchor/002anchor.html

■CSVファイル→dataGridview( = gridview ) にデータを設定する

DataGridViewにデータを追加(CSV→DataGrid( = gridview ))

   // 追加アイテム用に配列を宣言
   String[] item = new String[] { };

   // ファイルを読み込む
   using (StreamReader sr = new StreamReader(
     files, Encoding.GetEncoding("Shift_JIS")))
   {
     while (sr.EndOfStream == false)
     {
       // 1行読込
       text = sr.ReadLine();

       // CSV分解
       item = text.Split(',');

       //データグリッド追加、行アイテム宣言
       DataGridViewRow gridline = new DataGridViewRow();

       // もともとのGridView( = gridview )のセル定義を利用
       gridline.CreateCells(gridview);

       // 行アイテムにデータを設定
       gridline.SetValues(item);

       // 行アイテムをDataGridViewに追加する
       gridview.Rows.Add(gridline);

                }
                sr.Close();
            }

2010年12月 1日 (水)

PartCover インストールメモ

Nunitのカバレッジ取得で使用

1.インストール
  http://sourceforge.net/projects/partcover/
  →ファイルをダウンロードする(partcover.setup-2.3.0.35109.msi)
  →ダウンロードファイルを実行してインストール

2.PartCoverをVisual Studioに組み込む
  →メニューバーの[ツール]-[外部ツール]を選択する。
  →以下の情報を登録する。
  1)タイトル→PartCover
  2)コマンド→C:\Program Files\Gubka Bob\PartCover .NET 2.3\PartCover.exe
  3)引数    →--target $(TargetPath) --output $(TargetDir)\PartCoverResult.xml --include *
  4)[出力ウィンドウを使用]にチェックをつける。

Executable File  :NUnitのインストールディレクトリのnunit.exeを選択
Working Direcotry:コードカバレッジを測定したいフォルダ(例:dllの出力フォルダ)
Working Arguments:コードカバレッジを測定するdll(例:***.dll)

« 2010年11月 | トップページ | 2011年1月 »