Visual Studioの使い方ファイル操作編6

プログラム学習

動的にコントロールオブジェクトを作成し、それにイベントハンドラを加える。
動的にフォルダのビュー(一覧)を作ろうと思います。先ず最初は、Formデザインを使ってForm1にlistview1を貼り付けて、このlistview1をフォルダの表示用に使いたいと思います。listview1には論理ドライブを表示して、その表示された項目をダブルクリックするとTabpageとlistviewが動的に生成されて、生成されたlistviewにはダブルクリックした場所に表示されていた論理ドライブの直下のフォルダを表示させtabpageのタイトルは、その論理ドライブの名前にする。

画面はドライブGをダブルクリックしたところ。
最初のtabpageのタイトルはドライブ、例えばドライブGを選んでダブルクリックすれば、Gの直下のフォルダを新たに生成したlistviewに読み込んで、新たに生成したtabpageのタイトルをG¥とする。
こうしてtabpageとlistviewを追加していくのですが、追加したページを閉じたい場合も出て来るので、stringlistを使って今まで開いたフォルダのリストを作成してページを閉じる時にstringlistから、そのフォルダの情報を削除します。
更に、tabpageのリストも作成して置いて閉じる時にtabpageもリストから削除するようにします。
listview_DoubleClick(){
Tabpage newtab = new Tabpage(this); 新たにタブページを作る
ListView newview = new ListView(this); 新たにリストビューを作る
newtab.title = ダブルクリックしたフォルダの名前
newview.Pearent = newtab(newviewの親コントロールをnewtabに指定する。こうするとnewtabが破棄されたとき自動的にnewviewも破棄される。)
stringlist.add(ダブルクリックしたフォルダの絶対パス);
newtab.name = ダブルクリックしたフォルダの絶対パス;
tabpagelist.add(newtab);タブページリストに新しいタブページを加える
newview.addrange(ダブルクリックしたフォルダの子フォルダのリスト);
新しいリストビューの項目に子フォルダのリストを加える
newview.DoubleClick += listviewDoubleClick;
新しいリストビューのイベントハンドラにlistviewDoubleClickイベントハンドラを加える。リストビューをダブルクリックしたと同時に、生成した新しいリストビューに、ダブルクリックイベントハンドラを加えています。
}
タブページとフォルダリストの削除。
Tabpage_Close(){
CurrentTabpage = ActiveTabPage;
アクティブなタブページを取得して、パスのリストから削除するタブページのパスを削除して、タブページリストからこのタブページも削除してタブページを閉じる。
for(int j = 0;j < stringlist.count; ++j)
{
if(stringlist[j] == CurrentTabpage.name)
{
stringlist.RemoveAt(j);
tabpagelist.RemoveAt(j);
}
}
}
と、こんな具合で、生成と破棄をしたいと思います。

コメント

タイトルとURLをコピーしました