LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

從一個(gè)實(shí)際需求看C#的跨窗體操作

admin
2023年9月4日 9:46 本文熱度 661

很多人學(xué)習(xí)C#會(huì)遇到一個(gè)這樣的問題,很多知識(shí)點(diǎn)不知道在什么情況下使用,或者面對(duì)一些需求時(shí),不知道用哪種方法來解決。在本文中,我們將結(jié)合一個(gè)實(shí)際需求來談?wù)勅绾芜x擇合適的方法來更合理的實(shí)現(xiàn)需求。

在我們的批次報(bào)表中,有個(gè)功能就是我們可以根據(jù)用戶選擇的變量生成曲線并插入報(bào)表中。在報(bào)表界面上有一個(gè)按鈕,點(diǎn)擊可以彈出曲線窗體。在這個(gè)曲線窗體中我們可以選擇需要的變量并生成曲線。

圖1 選擇并生成曲線

當(dāng)選擇變量后,點(diǎn)擊按鈕“添加”即生成曲線。預(yù)覽沒問題后再點(diǎn)擊按鈕“插入到報(bào)表”即可將生成的曲線插入到報(bào)表中。下圖展示了曲線插入到報(bào)表中的效果。

圖2 曲線插入報(bào)表

這種需求如何實(shí)現(xiàn)呢?我們可以在曲線窗口關(guān)閉時(shí)根據(jù)返回值判斷是否需要插入曲線。如果點(diǎn)擊了按鈕“插入到報(bào)表”就返回YES,代碼如下。

private void btninsert_Click(object sender, EventArgs e)
{
     this.Close();
     //曲線窗體返回YES
     this.DialogResult = DialogResult.Yes;
}

如果沒有點(diǎn)擊按鈕“插入到報(bào)表”而是直接關(guān)閉曲線窗體,則返回NO,代碼如下:

private void FrmChart_FormClosing(object sender, FormClosingEventArgs e)
{
    this.Close();
    //曲線窗體返回NO
    this.DialogResult = DialogResult.No;
}

我們可以在上一層窗口中根據(jù)曲線窗口的返回值判斷是否插入圖片。

private void btnChart_Click(object sender, EventArgs e)
{
    FrmChart frm = new FrmChart();
     //如果返回值是YES,則插入曲線
    if (frm.DialogResult==DialogResult.Yes)
    {
         ///插入曲線
         ///
     }
}

這種方法可以實(shí)現(xiàn)我們的需求。但是它有個(gè)缺點(diǎn)就是必須要在窗體關(guān)閉后才插入曲線。如果我們還要再添加或者刪除曲線,只能再次打開曲線窗口,選擇、添加變量生成曲線。在使用上稍微有點(diǎn)麻煩。那如何做到曲線窗體不關(guān)閉就可以在報(bào)表中同步插入曲線呢?這時(shí)委托就派上用場(chǎng)了。

  //聲明一個(gè)委托  public delegate void _GetChart();
 //聲明一個(gè)方法  public _GetChart GetChart;

我們?cè)谇€窗體中聲明一個(gè)委托類型_GetChart,并聲明一個(gè)類型為_GetChart的方法。然后在上一層窗口中創(chuàng)建一個(gè)名為GetChart的方法。

private void getChart()
{
    try
    {
        ///插入曲線
     }
    catch (Exception ex)
    {
       MessageBox.Show(ex.Message);
   }
}

在調(diào)用曲線窗口時(shí)將該方法綁定到曲線窗口的GetChart方法上。

private void btnChart_Click(object sender, EventArgs e)
{
     FrmChart frm = new FrmChart();
     frm.GetChart += getChart;
     frm.ShowDialog();
}

最后在曲線窗體中點(diǎn)擊按鈕“插入到報(bào)表”事件中調(diào)用該委托方法即可。

private void btninsert_Click(object sender, EventArgs e)
{
     //其它代碼
     if (GetChart != null)
     {
          GetChart();
     }
}

運(yùn)行程序。當(dāng)我們?cè)谇€窗口中點(diǎn)擊按鈕“插入到報(bào)表”時(shí),上一層窗口中會(huì)同步展示新的曲線。如果需要更新曲線,也不用關(guān)閉窗口再重新打開,操作更加人性化。

圖3 上一層窗體和曲線窗體同步更新


該文章在 2023/9/4 9:46:25 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

黄频国产免费高清视频,久久不卡精品中文字幕一区,激情五月天AV电影在线观看,欧美国产韩国日本一区二区
日韩欧美精品一区二区三区动漫 | 日本三日本三级少妇三级66 | 日本国产中文字幕欧美 | 婷婷久久高清国外AV免费 | 五月天婷婷在线亚洲综合一页 | 亚洲第一页在线视频 |