有人可以通过一些代码让我知道如何从另一个类调用位于Form类中的函数吗?

一些代码将有很大的帮助!

谢谢

编辑:这是我当前的代码

 public partial class frmMain : Form
 {
    //*******Class Instances*******
    ImageProcessing IP = new ImageProcessing();


    //********************
    public void StatusUpdate(string text)
    {
        tlsStatusLabel.Text = text;
    }//


    public frmMain()
    {
        InitializeComponent();
    }//
}


class ImageProcessing
{

    private void UpdateStatusLabel(frmMain form, string text)
    {
        form.StatusUpdate(text);
    }//

   private UpdateLabel()
   {
        UpdateStatusLabel(frmMain, "Converting to GreyScale");
   }
}

我遇到的问题是frmMain。

最佳答案

一种快速而肮脏的方法是在上面列出的Program.cs文件中创建MainForm的引用。

另外,您可以创建一个静态类来处理对您的主窗体的调用:

    public delegate void AddStatusMessageDelegate (string strMessage);

    public static class UpdateStatusBarMessage
        {

        public static Form mainwin;

        public static event AddStatusMessageDelegate OnNewStatusMessage;

        public static void ShowStatusMessage (string strMessage)
            {
            ThreadSafeStatusMessage (strMessage);
            }

        private static void ThreadSafeStatusMessage (string strMessage)
            {
            if (mainwin != null && mainwin.InvokeRequired)  // we are in a different thread to the main window
                mainwin.Invoke (new AddStatusMessageDelegate (ThreadSafeStatusMessage), new object [] { strMessage });  // call self from main thread
            else
                OnNewStatusMessage (strMessage);
            }

        }

将以上内容放入命名空间内的MainForm.cs文件中,但与MainForm类分开。
接下来,将此事件调用放入MainForm.cs主类中。
     void UpdateStatusBarMessage_OnNewStatusMessage (string strMessage)
     {
          m_txtMessage.Caption = strMessage;
     }

然后,在初始化MainForm.cs时,将此事件句柄添加到表单中。
     UpdateStatusBarMessage.OnNewStatusMessage += UpdateStatusBarMessage_OnNewStatusMessage;

在与您要调用的表单(MDI)关联的任何UserControl或表单中,只需执行以下操作即可...
     UpdateStatusBarMessage.ShowStatusMessage ("Hello World!");

由于它是静态的,因此可以在程序中的任何位置调用它。

关于c# - 从另一个类C#.NET调用Form类中的函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2950326/

10-17 02:15