【问题标题】:Cannot implicitly convert type 'System.Windows.Forms.Form' to 'bool'无法将类型“System.Windows.Forms.Form”隐式转换为“bool”
【发布时间】:2019-05-18 01:08:50
【问题描述】:

我将 DiscordRPC 放入我的应用程序中。我确保窗口处于活动状态,因此它可以轻松更改并实际更改状态。问题是当使用 ActiveForm 时,它不起作用,因为它无法将其转换为“布尔”。这是我的代码。

private void active()
        {
            Form currentForm = Form.ActiveForm;

            if(Form.ActiveForm)
            {
                ptr2tools.Presence = new RichPresence()
                {
                    State = "Using pwf2tex",
                    Assets = new Assets()
                    {
                        LargeImageKey = "pwf2tex",
                        LargeImageText = "pwf2tex"
                    }
                };
                ptr2tools.DiscordClient.SetPresence(ptr2tools.Presence);
            }
        }

【问题讨论】:

  • 你想用 if (Form.ActiveForm) 验证什么?
  • 如果 (Form.ActiveForm != null),您可能想要这样做。

标签: c# boolean


【解决方案1】:

Form.ActiveForm 保留当前活动的表单,如果没有活动的表单,则为 null。

 var currentForm = Form.ActiveForm;

 if(currentForm != null)
 {
     //logic
 }

【讨论】:

  • 现在可以正常工作了,但唯一的问题是它没有随 Discord 更新。这是一个不同的问题,所以谢谢!
  • 太棒了!也许是因为您正在调试,然后您失去了 activeForm 焦点。尝试您的逻辑,无需调试或在标签中打印一些消息
【解决方案2】:

在您的代码更改中:

if(Form.ActiveForm)

if (currentForm != null)

它应该可以帮助你。 请注意,Form.ActiveForm 返回当前活动形式或 null,如果没有活动形式,因此您不能以这种方式在 if 语句中对其进行测试。您可以检查它是否不为空(甚至可以在不创建任何 Form 对象的情况下实现):

if (Form.ActiveForm != null) //it do same

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多