#C事件触发的方法-在Form1中访问

本文关键字:Form1 访问 方法 事件 | 更新日期: 2023-09-27 17:59:50

我正试图使用dll编写一个屏幕弹出呼叫日志,以捕获电话系统上的事件。正如你可以在下面的代码中看到的3个事件:

OnOffering-电话铃声超过当前号码时的呼叫方法OnConnect-在回答传递的当前号码时调用方法OnDisconnect-调用断开方法

这个想法是在调用OnConnect方法时从SQL数据库中提取信息,并显示在windows窗体上(前提是该数字以前已经存储)。我已经设计了表单,并在一个单独的类中编写了所有的sql函数,我可以从我的表单ok中调用这些函数。我计划在事件发生时调用的方法从数据库中返回一个引用传入数字的数据表。

我可以在OnConnect方法中调用我的sql搜索方法,但问题是如何将数据表传递给我的Form?

或者有更好的方法吗?

感谢

程序.cs

using System;
using System.Windows.Forms;
using TelephonyProxy;
using System.Data;
namespace CallLog
{
   static class Program
   {
      private static Listener listener;
      private static MainForm mainForm;
      /// <summary>
      /// The main entry point for the application.
      /// </summary>
      [STAThread]
      static void Main()
      {
         Application.EnableVisualStyles();
         Application.SetCompatibleTextRenderingDefault(false);
         mainForm = new MainForm();
         listener = new Listener();
         SubcribeToListener();
         Application.Run(mainForm);
      }
      private static void SubcribeToListener()
      {
         listener.Connect += OnConnect;
         listener.Disconnect += OnDisconnect;
         listener.Offering += OnOffering;
      }
      private static void OnOffering(string name, string number)
      {
      }
      private static void OnDisconnect()
      {
      }
      private static void OnConnect(string name, string number)
      {
          DataTable dt;
          dt = CommonSQLFunctions.SearchQuery(number);
      }

   }
}

#C事件触发的方法-在Form1中访问

所以,do应该有一个MainForm.cs,我认为在MainForm类中而不是在Program类中拥有subscribe、offer、connect和disconnect方法会更有意义。

MainForm类将有一个Listener字段,在MainForm构造函数中,您可以调用SubscribeToListener方法将事件处理程序附加到Listener上的事件。这样,当您的OnConnect事件处理程序运行时,您已经在MainForm的中了,因此您可以轻松地对此时的数据集执行任何需要的操作。