0

我正在尝试从我的主窗体中使用我的控制用户的功能,我的代码是下一个:

chatbox bbl = new bunifchat.chatbox();
            bbl.sendmessage("a");

chatbox 是我的控制用户,我正在尝试使用函数 sendmessage 发送字符串,但没有任何反应。这是我的控制用户中的功能:

public void sendmessage(String message)
        {
            bubble bbl = new bunifchat.bubble(message);//this is another control user 
            bbl.Location = bubble1.Location;
            bbl.Size = bubble1.Size;
            bbl.Anchor = bubble1.Anchor;
            bbl.Top = bbl_old.Bottom + 10;
            panel2.Controls.Add(bbl);


            panel2.VerticalScroll.Value = panel2.VerticalScroll.Maximum;

            bbl_old = bbl;  
        }
4

1 回答 1

0

首先,您需要确保使用正确的控件。

chatbox bbl = new bunifchat.chatbox();
bbl.sendmessage("a");

这将创建一个新的聊天框对象并在其上调用一个方法。但除非这个实际对象被添加到主窗体的控件中,否则它不是 UI 的一部分,并且不会发生任何事情。您可能希望在设计器中将 Chatbox 控件添加到您的表单中,为其命名,然后调用该对象上的方法:

myChatbox.sendmessage("a");

第二个问题是您的发送方法试图通过对接单个控件来模拟列表。这可能会导致问题。更好的解决方案是使用listView

第三个问题是控制sendmessage失效。有时需要确保 Windows 使用最新更新重绘控件。这可能是由 隐式完成的Control.Add,但是每当有某些内容未显示更新时,我通常会添加一个无效调用并检查是否解决了问题(如果没有解决问题,则将其删除)。

于 2020-06-27T20:54:18.197 回答