winform不能循环引用,使用接口传值到界面

 1 public partial class frmMain : Form, IFormManager
 2     { 
4
public frmMain() 5 { 6 InitializeComponent();
8
} 9 10 private void frmMain_Load(object sender, EventArgs e) 11 { 12 Init(); 13 } 14 private void Init() 15 { 16 SocketServer socketServer = new SocketServer(this);
18 } 19 /// <summary> 20 /// 数据写入日志 21 /// </summary> 22 /// <param name="str">数据</param> 23 public void LogOutPut(string str) 24 { 25 this.logTextBox.AppendText(DateTime.Now.ToString("yyy-MM-dd HH:mm:ss") + "" + str+"\r\n");
27 } 28 }
public class ServerLog
    {
        private static IFormManager form;
        public ServerLog(IFormManager _form)
        {
            form = _form;
        }
        /// <summary>
        /// 传值到日志
        /// </summary>
        /// <param name="_passValue"></param>
        public static void PassValueToLog(string _passValue)
        {
            if (_passValue != string.Empty)
                form.LogOutPut(_passValue);
        }
}
 public class SocketServer
    {
        ServerLog serverLog;
        public SocketServer(IFormManager _form)
        {
            serverLog = new ServerLog(_form);
        }
}
public interface IFormManager
    {
        void LogOutPut(string str);
    }

在frmMain中,界面需要调用LogOutPut方法,客户端收到服务端发送的也需要调用,不能循环引用,所以使用接口来传值。

在客户端收到服务端发送的数据时,使用ServerLog.PassValueToLog(“收到的数据:”+str)。

 

posted @ 2020-02-27 11:03  昨天忆  阅读(250)  评论(0编辑  收藏  举报