C#从其他类调用函数

C#从其他类调用函数,c#,C#,我试图在“publicstaticvoidmain()”中运行“progr.SetMonitorState(MonitorState.OFF)”,但在尝试编译它时出错: progr命名空间中不存在“SetMonitorState” “MonitorState”在当前上下文中不存在 我只是想制作一个程序来关闭我的电脑并关闭显示器(我想检查它是否会关闭通过HDMI与电脑连接的电视) 代码: 使用系统; 使用系统诊断; 使用系统运行时; 使用系统数据; 使用System.Runtime.Interop

我试图在“publicstaticvoidmain()”中运行“progr.SetMonitorState(MonitorState.OFF)”,但在尝试编译它时出错:

  • progr命名空间中不存在“SetMonitorState”
  • “MonitorState”在当前上下文中不存在
  • 我只是想制作一个程序来关闭我的电脑并关闭显示器(我想检查它是否会关闭通过HDMI与电脑连接的电视)

    代码:

    使用系统;
    使用系统诊断;
    使用系统运行时;
    使用系统数据;
    使用System.Runtime.InteropServices;
    使用系统计时器;
    使用System.Windows.Forms;
    名称空间程序
    {
    公共类监视器
    {
    公共int SC_监视器电源=0xF170;
    公共uint WM_SYSCOMMAND=0x0112;
    [System.Runtime.InteropServices.DllImport(“user32.dll”)]
    静态外部IntPtr SendMessage(IntPtr hWnd、uint Msg、IntPtr wParam、IntPtr lParam);
    公共枚举监视器状态
    {
    ON=-1,
    关=2,
    待机=1
    }
    public void SetMonitorState(MonitorState状态)
    {
    表格frm=新表格();
    SendMessage(frm.Handle,WM_SYSCOMMAND,(IntPtr)SC_MONITORPOWER,(IntPtr)state);
    }
    }
    公共课堂关闭
    {  
    公共静态void Main()
    {
    程序设置监视器状态(监视器状态关闭);
    Console.Write(“Jestem jebanym leniem:)\n\n”);
    int t=0;
    
    对于(int i=0;i您需要从监视器中创建实例,如Main方法中的下面所示:

    MonitorSht somename = new MonitorSht();
    
    然后通过实例调用您的方法,如下所示:
    somename.SetMonitorState(MonitorState.OFF)

    您需要在Main方法中从监视器创建实例,如下所示:

    MonitorSht somename = new MonitorSht();
    
    然后通过实例调用您的方法,如下所示:
    somename.SetMonitorState(MonitorState.OFF)
    您的
    MonitorSht
    不是静态的,因此您需要创建一个实例才能使用其方法

    public static void Main()
    {
       var monitorSht = new MonitorSht();
       monitorSht.SetMonitorState(MonitorSht.MonitorState.OFF);
    
       Console.Write("Jestem jebanym leniem :)\n\n");   
       /*...*/
    }
    
    您还可以通过将枚举放在类的作用域之外(最好是放在新文件中)来公开它

    public class MonitorSht
    {
     /*...*/
    }
    
    public enum MonitorState
     {
         ON = -1,
         OFF = 2,
         STANDBY = 1
     }
    
    然后你可以写:

    var monitorSht = new MonitorSht();
    monitorSht.SetMonitorState(MonitorState.OFF);
    

    您应该阅读有关类如何工作的更多信息。

    您的
    监视器sht
    不是静态的,因此您需要创建一个实例以使用其方法

    public static void Main()
    {
       var monitorSht = new MonitorSht();
       monitorSht.SetMonitorState(MonitorSht.MonitorState.OFF);
    
       Console.Write("Jestem jebanym leniem :)\n\n");   
       /*...*/
    }
    
    您还可以通过将枚举放在类的作用域之外(最好是放在新文件中)来公开它

    public class MonitorSht
    {
     /*...*/
    }
    
    public enum MonitorState
     {
         ON = -1,
         OFF = 2,
         STANDBY = 1
     }
    
    然后你可以写:

    var monitorSht = new MonitorSht();
    monitorSht.SetMonitorState(MonitorState.OFF);
    

    您应该阅读更多关于类如何工作的信息。

    尝试一下,因为您的问题是从另一个类调用方法

    using [projectName].[classLocation];
    
    乙二醇

    然后创建一个对象的实例 乙二醇

    然后,要获取此类中的方法,只需调用Monitor 乙二醇


    尝试此操作,因为您的问题是从另一个类调用方法

    using [projectName].[classLocation];
    
    乙二醇

    然后创建一个对象的实例 乙二醇

    然后,要获取此类中的方法,只需调用Monitor 乙二醇


    您必须创建一个
    MonitorSht
    的实例才能使用它。您试图访问的命名空间没有真正意义他们在类
    MonitorSht
    中。您必须创建一个
    MonitorSht
    的实例才能使用它。您试图访问的命名空间没有真正意义他们是在类
    MonitorSht
    中。我今天已经开始了,我将肯定地阅读。现在我得到错误“Monitorstate在当前上下文中不存在”为了访问你的枚举,你必须先写类名,然后写枚举名,然后写枚举值,所以
    MonitorSht.MonitorState.OFF
    。我今天就开始了,我一定要读。现在我得到错误“MonitorState在当前上下文中不存在”为了访问枚举,您必须先写类名,然后写枚举名,再写枚举值,所以
    MonitorSht.MonitorState.OFF