2016-09-19 61 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

你有没有设法尝试一下? –