所以我的SQL = "select * from tbluser Where doj >=#" & DateTimePicker1.Text & " # and <=#" & DateTimePicker2.Text & "#"
acscmd = New OleDbCommand(SQL, acsconn)
acscmd.CommandType = CommandType.Text
acsdr = acscmd.ExecuteReader
If acsdr.Read = True Then
Label1.Text = (acsdr.GetValue(0).ToString())
End If
看起来像这样:
Program.cs
所以我的问题是我真的可以这样做吗? using System;
using System.Windows.Forms;
using myProj.GameScreens;
namespace myProj
{
#if WINDOWS
/// <summary>
/// The main class.
/// </summary>
public static class Program
{
static StartScreen startScreen;
static MainGame mainGame;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
mainGame = new MainGame();
startScreen = new StartScreen();
Application.EnableVisualStyles();
if (startScreen.ShowDialog() == DialogResult.OK) mainGame.Run();
}
}
#else
System.Environment.Exit(1);
#endif
}
指令中的代码是否可以访问?如果应用程序没有从Windows操作系统启动,如何退出应用程序?或者我可以使用#else
吗? Exception
不会在其他操作系统上运行,所以我该怎么办?即使没有Win32Exception
,代码也会退出吗?
选项#1:退出应用程序,如果不是Windows
选项#2:告诉用户该应用需要Windows并退出(可能是自定义异常?也是首选。)
我有一些代码严重依赖于#else
所以我只能使用Windows。是的,你猜对了,它是一个Windows MonoGame入口点类。
答案 0 :(得分:2)
这不起作用,因为#if
是一个编译时操作,它改变了可执行文件的生成方式。
如果您在Windows上编译并尝试在其他地方运行它,则会尝试(并且失败)运行该程序。
您需要编写用于操作系统运行时检查的代码。 Environment.OSVersion
属性可能就是您所需要的,但它返回一个您需要解析的字符串。另请注意:
在某些情况下,OSVersion属性可能不会返回与为Windows程序兼容性模式功能指定的版本匹配的操作系统版本。
至于你的行为方式,没有必要明确调用Exit
。如果你不做任何其他事情,你的程序将会停止。虽然您的测试必须 Main
。