2016-09-19 65 views
-2

老實說,我不知道如何構建我的問題。但我的想法是,我想在我們的案例研究中複製Facebook Messenger的用戶界面。我們的任務是做一個猜謎遊戲。
我不知道如何編碼我的想法。我的計劃是每次點擊發送按鈕時添加一個新標籤,並且添加附加標籤的面板將被擴展,以便屏幕顯示爲滑動。C#WinForms |點擊按鈕時添加標籤

下面是winform的屏幕截圖。

這裏是我的btnSendClicked初始代碼。

private void btnSend_Click(object sender, EventArgs e) 
    { 
     Label lblnew = new System.Windows.Forms.Label(); 
     lblnew.Location = new Point(50, 50); 
     lblnew.Text = txtMessage.Text; 
     lblnew.AutoSize = true; 
     lblnew.BackColor = System.Drawing.Color.LightGray; 
     lblnew.Font = new System.Drawing.Font("Microsoft JhengHei UI", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 
     pnlGame.Controls.Add(lblnew); 
    } 
+3

你需要用一個實際的問題來完成你的問題 - 我們可以看到你想要達到的目標,但是你需要什麼幫助? –

+0

我需要幫助來添加新標籤。我的想法有可能完成嗎?我不知道我是否應該繼續我的想法。它只是,我真的不知道該怎麼做hahaha – KuysChan

+0

你正在同一個位置添加你的標籤。即在彼此之上。嘗試改變y點值以考慮以前標籤的高度。 –

回答

0

你需要跟蹤你的面板上呈現的標籤,以管理您的滾動機制,這可能是一個循環的算法來進行:

循環中通過所有Label控制pnlGame

  • 如果當前標籤的頂部位置小於或等於頂部的pnlGame,隱藏標籤(可見= FALSE)。這同樣適用於底部。 (刪除滾動時不可見的所有標籤),否則,取消隱藏標籤以將其重新顯示。

把上面的邏輯進入一個方法,像void RefreshVisiblePanelMessages()

,當點擊一個按鈕即可生成一個新的消息,爲Label添加新的消息,你的pnlGame,然後調用RefreshVisiblePanelMessages();更新列表。

+0

非常感謝!要試試這個:D – KuysChan

+0

你有沒有設法嘗試一下? –