乙個簡易的便簽工具 探索窗體之間傳值和傳引用的方法

2022-02-26 06:41:35 字數 3674 閱讀 7064

簡單的便簽工具:實現了基於文字的便簽資訊的瀏覽,刪除,新增。可以檢視時間,實時更新資料。

這個便簽工具完全基於物件導向的程式設計方式,首先定義note類,然後使用notemanager類進行便簽的管理。其中的關鍵就是在notemanager類中定義list泛型集合。原理上和arraylist基本是一致的。

notemanager的工作原理:

public listlist;//定義乙個泛型集合,並在建構函式中初始化。

private int currentindex = 0;//指示當前便簽所在位置

public note getcurrentnote; //乙個唯讀屬性,讀取當前索引下的note物件

public bool addnewnote(note note); //方法,想list中新增新的note物件

public int move(int direc, label lbltip); //方法,根據引數是-1還是1,移動currentindex,達到翻頁效果

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.windows.forms;

namespace

簡易便簽

}//新增乙個note

public

bool

addnewnote(note note)

public

notemanager()

//diec只能是-1或者1

//0 1 2 3 4 length=5

//返回當前的currentindex

public

int move(int

direc, label lbltip)

}if (direc == 1

)

}return

currentindex;}}

}而在note.cs類中則定義了便簽的基本屬性:

簡易便簽

public

string title

public

string content

public datetime time

}}窗體檔案:frmaddnewnote.cs

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

namespace

簡易便簽

private

void btnok_click(object

sender, eventargs e)

);notemanager manager =record.manager;

manager.addnewnote(

new note );

messagebox.show(

"新增成功!");

this

.close();}}

}

窗體檔案:frmmain.cs

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.windows.forms;

using

system.io;

namespace

簡易便簽

private

notemanager manger;

private

string

alllines;

private

void form1_load(object

sender, eventargs e));}

//窗體載入完成之後馬上給值

writecontent();

lblpage.text = "

1/" +manger.list.count;

}private

void btnprev_click(object

sender, eventargs e)

private

void btnnext_click(object

sender, eventargs e)

private

void

writecontent()

private

void

clearalltext()

private

void form1_formclosing(object

sender, formclosingeventargs e)

file.writealllines(

"note.txt

", strarr, encoding.default);

}private

void tsbtnaddnew_click(object

sender, eventargs e)

);//frmaddnewnote fan = new frmaddnewnote();

frmaddnewnote fa = new

frmaddnewnote();

record.manager =manger;

fa.show();

}private

void tsbtnclear_click(object

sender, eventargs e)

private

void tstool_itemclicked(object

sender, toolstripitemclickedeventargs e)

private

void tsbtnupdate_click(object

sender, eventargs e)

);lbltip.text = "

已經更新!";}}

}

這個小案例中有兩點要特別關注:

1.首先是物件導向的思維方式,將每個note便簽都看做乙個物件,物件裡有各種屬性。通過notemanager物件管理note物件。達到了指揮者的效果

2.其次便是窗體之間的傳值,我這裡使用的是構建中介軟體static class record類,進行引用的傳遞

中介軟體:

static

class

record

使用中介軟體進行資料的共享很方便。

乙個簡易的shell

shell本質上就是將程序程式替換 替換原理 用fork建立子程序後執行的是和父程序相同的程式 但有可能執行不同的 分支 子程序往往要呼叫一種exec函式以執行另乙個程式。當程序呼叫一種exec函式時,該程序的使用者空間 和資料完全被新程式替換,從新程式的啟動例程開始執行。呼叫exec並不建立新程序...

乙個簡易的SocketIM

今天做了乙個簡易的socketim的小示例。基本思想是開啟兩個winform,每個winform既充當伺服器也充當客戶端。乙個監聽8000埠,另外乙個監聽8001埠,兩個winform接收到資訊之後將資訊顯示在form的控制項上。這篇記錄一下碼code中學到的一些東西。net的socket庫已經將c...

C 乙個窗體呼叫另乙個窗體的方法

乙個窗體呼叫另乙個窗體的方法 例如 窗體b要呼叫窗體a中的方法 1 首先在窗體a中將窗體a設為靜態窗體 public static forma m forma 設此窗體為靜態,其他窗體可呼叫此窗體中的方法 2 然後在此窗體a的建構函式中加入 m forma this public forma ini...