1. 程式人生 > >機房收費系統問題 — MDI子窗體不能顯示

機房收費系統問題 — MDI子窗體不能顯示

  今天在寫 “修改密碼” 窗體的時候,窗體始終顯示不出來,讓我翻閱了師哥師姐的好多部落格,終於拿下了問題!下面聽我娓娓道來...

  首先我們要知道窗體為什麼載入不出來,主要原因有以下幾點:

(1) 選單和和要載入的窗體命名不規範,我們在 frmMain(MDI)主窗體載入子窗體的時候一定要把命名給對上,不然它肯定載入不出來...

(2) 最重要的一個原因就是我們在學習機房收費系統的時候,MDI主窗體是需要加控制元件的,不能直接在MDI主窗體上加,只有在主窗體上新增 “Picture” 控制元件才能往窗體上新增控制元件; 

     看重點: 這個問題出現的主要原因就是 需要載入的子窗體在主窗體MDI和控制元件Picture之間,所以需要載入的所有子窗體都被遮蓋住了,遇到這種問題呢不要著急...

解決方法:

  我們使用API函式SetParent來解決問題,API函式就相當於給子窗體一個新的父窗體(也可以稱之為新的容器),這樣,需要載入的子窗體就會有一個新的容器,慢慢給加載出來。

我們在 “公共模組” 裡新增函式:

Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

然後我們會發現...

窗體依然被擋在下邊,還是不能在 Picture 控制元件上去新增。

那麼我們就要在 frmMain(MDI)主窗體裡新增程式碼:

                                    ’把修改密碼子窗體顯示出來
Private Sub ModifypwdMenu_Click()

    frmModifyuserinfo.Show     ’顯示        
    SetParent frmModifyuserinfo.hWnd, Picture1.hWnd

End Sub

 

這就載入成功了,可能我的方法比較笨,也比較麻煩,函式在模組定義一次就行了,多個窗體使用一個API函式,但是都得在Main主窗體裡新增上述程式碼:

SetParent frmModifyuserinfo.hWnd, Picture1.hWnd

如有更好的方法,請指教!

相關推薦

機房收費系統-MDI窗體控制元件不能放置以及窗體不能顯示問題

今天在整理機房系統主介面時,發現放置控制元件一直提示  剛開始一直以為自己把MDI窗體的屬性給修改錯了才會這樣的,然後自己找了找相關資料發現MDI窗體是不能放置無對其屬性的控制元件的。 那麼怎麼做才

【VB】MDI窗體顯示機房問題)

    開啟MDI主窗體,因為要顯示各個控制元件,所以添加了一個picturebox控制元件,然而問題來了,子窗體不能顯示,但當把子窗體的MDIChild屬性設定為flase時,窗體能正常顯示,顯然

機房收費系統——組合查詢窗體

組合查詢 這部分也是機房收費系統中的重難點,它的難點在於查詢語句和它的邏輯思路: 我們以上機記錄查詢窗體為例來看一下:首先我們會發現這個窗體的欄位名中不光有卡號、姓名,而且還有上機日期,上機時間,下機日期和下機時間,所以這個時候我們就需要用一個時間控制元件來減輕使用者的負擔! 為了便於和

機房收費系統問題 — MDI窗體不能顯示

  今天在寫 “修改密碼” 窗體的時候,窗體始終顯示不出來,讓我翻閱了師哥師姐的好多部落格,終於拿下了問題!下面聽我娓娓道來...   首先我們要知道窗體為什麼載入不出來,主要原因有以下幾點: (1) 選單和和要載入的窗體命名不規範,我們在 frmMain(MDI)主窗體

機房收費系統問題(一)MDI窗體顯示

       這兩天開始進行機房收費系統了。當然,萬事開頭不容易啊,比如,某人在MDI父窗體上放了個大大的Frame,某些人還放了Picture吧,不管放的是什麼,小的們(子窗體)卻怎麼也Show不出

機房收費系統之細化篇(跨日期下機,MDI窗體的運用,MDI窗體窗體的互動)

      最近在細化機房收費系統時,發現在下機窗體出現了很多消費時間為負值的情況,有時還會彈出Bug,仔細一看原來是跨日期的消費時間問題,那麼如何設定跨日期的下機呢?在機房收費系統中的MDI 窗體如何運用呢?下面就這兩個問題進行梳理分享。 一、跨日期的下機 核

機房收費系統MDI窗體窗體(覆蓋)

    在機房收費系統中,frmMain作為MDI的主窗體,想要在MDI主窗體上新增控制元件,picture控制元件可以起到此作用,但是在添加了picture控制元件以後,問題也就隨之而來了。     點選子窗體的時候,子窗體被“吃掉”了,怎麼樣讓他顯示出來呢?想要解

機房收費系統——註冊窗體

這是機房收費系統的第一個窗體,所以也很基礎,雖然很基礎,但是這些程式碼我們仍然沒有能力去獨立完成,那麼這個時候我們就會藉助很多工具,比如師哥師姐的部落格,百度等等。從他們的部落格裡面我們也就能找到自己的思路了,請看一下我的思路! 以下是程式碼展示: Option Explicit Pr

機房收費系統——上機窗體

上機窗體是在註冊完之後需要上機的時候開始使用,但是具體的一些限制還是需要注意一下,比如該卡 號是否註冊,是否退卡等等,接下來就看看這個過程。 具體程式碼如下所示: Private Sub cmdOnline_Click() '定義資料庫物件 Dim mrcStudent As adodb

機房收費系統——登入窗體

這是機房收費系統的第一個窗體,所以它很重要,這個窗體和我們剛敲完的學生格外的相似,登入介面都是一樣的,所以可以借鑑那個的登入窗體,首先來理一下這個思路: 以下是程式碼部分,希望可以幫助到大家 Private Sub cmdOk_Click() '用來存放SQL語句 Dim tx

【第一次機房收費系統優化】-登入窗體

一、重點 這個窗體增加了判斷使用者的類別(操作員、一般使用者、管理員)。 二、控制元件優化 label為空白:Label1.BackStyle = 0 command新增圖片:(1)將Command控制元件的Style設定為1 - Graphical (2)在C

個人重構機房收費系統DataGridView顯示使用者資訊

    在做機房收費系統的過程中,刪除使用者需要將資料庫的表顯示到程式的窗體中,我使用的控制元件是DataGridView     先說說我編寫程式的思路把。     ①、將資料庫T_UserInfo

個人重構機房收費系統報表使用之最簡單的顯示連線

    在做機房收費系統報表的時候,感覺沒有第一次用的時候困難,這篇部落格先寫一些最簡單的報表顯示。      1.建立一個windows窗體          2.在窗體中劃一個控制元件  

MDI窗體在父窗體中居中顯示的設定

需要在建構函式或者load事件函式中加入以下程式碼: form.StartPosition=FormStartPosition.Manual; form.StartPosition=FormStartPosition.CenterScreen; 有的人說 form.Star

解決winform中mdi窗體載入時顯示最大化最小化按鈕的方法

場景:在mid載入子窗體的時候如果指定WindowState為Maximized,載入完成後主窗體會顯示最大化、最小化、關閉的按鈕圖示。 解決方法: 1.更改主窗體FormMain的屬性。制定MainMenuStrip的屬性為menuStrip1控制元件。menuStrip1控制元件就是主窗體上的選單欄。

機房收費系統之退卡窗體

       退卡窗體的敲寫還是比較順利的,並沒有像自動下機那樣的絞盡腦汁,退卡窗體裡並沒有什麼新鮮的知識點,都是前面窗體裡用到的一些語句,此窗體重點在它的應用範圍、邏輯梳理、資料更新。這次沒有錯誤集和查詢集,就對流程和程式碼進行分享吧^_^ 一、退卡窗體流程圖 二、

機房收費系統——新增刪除使用者窗體

    新增刪除使用者這個視窗看起來並不是太難,但是還是有一些細節需要注意的。         首先,要設定myflexgrid控制元件的屬性,因為我們刪除使用者時要求選中一整條記錄,而不是單個一

充值窗體 機房收費系統

宣告:這個文章上個星期寫已發表結果誤刪了,從回收站沒法還原,只能從新發表了,見諒。 首先我們先對這個窗體進行下分析。 (1)檢測卡號和金錢的輸入      1.1 首先輸入卡號(檢查輸入卡號是否存

機房收費系統之六(上下機窗體

上機 1.剛開始進行上下機窗體的時候,想的比較簡單,以至於後來遺漏很多問題。所以流程圖改了好幾遍才算比較完善。 上機模組主要功能就是輸入卡號開始計時消費,類似於登陸窗體模組。需要注意的有兩點:一是要考慮輸入的卡號是否正在上機(卡號不能重複上機),二是考慮餘額是否充足(不充足

機房收費系統之巨集觀聯絡(各窗體與資料表的聯絡)

         剛開始的機房收費系統並不是上來就敲程式碼,而是執行已有的exe小程式,看每個表格與資料庫的關係,對整個機房的邏輯進行了梳理,以下是梳理出來的巨集觀聯絡,還算不是標準的流程圖,只是用於自己的邏輯梳理,還希望巨人們可以多多給予指導^_^