C# 如何从UserControl类调用方法?

C# 如何从UserControl类调用方法?,c#,winforms,user-controls,C#,Winforms,User Controls,我有一个Windows窗体应用程序,我想在UserControl类中调用一个方法 我的方法放在桌面上: public Desktop(StringWrapper stringWrapper, AppConfigManager appConfigManager, RecoveryManager recoveryManager, IProfileManager profileManager, IScanPerformer scanPerformer, IScannedImagePrinter sca

我有一个Windows窗体应用程序,我想在UserControl类中调用一个方法

我的方法放在
桌面上

public Desktop(StringWrapper stringWrapper, AppConfigManager appConfigManager, RecoveryManager recoveryManager, IProfileManager profileManager, IScanPerformer scanPerformer, IScannedImagePrinter scannedImagePrinter)
{ 
  public void ScanDefault()
   {
     if (profileManager.DefaultProfile != null)
      {
        scanPerformer.PerformScan(profileManager.DefaultProfile, new ScanParams(), this, notify, ReceiveScannedImage());
        Activate();
      }
      else if (profileManager.Profiles.Count == 0)
      {
         ScanWithNewProfile();
      }
      else
      {
         ShowProfilesForm();
      }
   }
}
在同一文件夹中,我创建了一个用户控件类:

public partial class UserControlTest : UserControl
{
    public UserControlTest()
    {
        InitializeComponent();
    }
}
在这个
UserControlTest
中,我想调用一个
ScanDefault
方法。

ScanDefault()是一个内联函数

它就像一个局部变量

您不能从Desktop()的范围之外调用它

要调用它,必须将其作为类方法并添加要在签名中使用的参数

public Desktop(StringWrapper stringWrapper,
               AppConfigManager appConfigManager,
               RecoveryManager recoveryManager,
               IProfileManager profileManager,
               IScanPerformer scanPerformer,
               IScannedImagePrinter scannedImagePrinter)
{
  ScanDefault(profileManager, scanPerformer);
}

public void ScanDefault(IProfileManager profileManager, IScanPerformer scanPerformer)
{
  // ...
}

“如何从另一个类调用方法”这是一个非常常见的初学者问题
scanfault()
是实例方法,要调用它,需要包含它的类的实例。但是很难推荐任何解决方案(例如,
newusercontrol1().ScanDefault()
),因为缺少上下文,您没有显示足够的代码来演示问题:您想在哪里调用它,这个方法(即
Scan…()
方法)在做什么,等等。显示您的尝试和错误。
Desktop
是类还是方法?它应该是没有参数的
public class Desktop
,还是带有子函数ScanDefault的
public void Desktop
?我已经像Olivier所说的那样对它进行了更改,它就是这样工作的。我只是无法从UserControl yetOk呼叫它,谢谢你的帮助。我已经这样做了,但是现在如何从UserControl调用它呢?您可以像调用任何其他类方法一样调用它:Scanfault(profileManager,scanPerformer);