【问题标题】:Disabling a checkbox by getting its name from a server通过从服务器获取其名称来禁用复选框
【发布时间】:2015-06-09 02:02:23
【问题描述】:

很难解释我的想法,但我会尽力而为......

我有一个带有大量复选框的安装程序。每个复选框都是 mod(游戏的修改)。有时模组会干扰游戏并导致游戏崩溃。因此,我必须使用更新的 mod 更新安装程序,或者我必须暂时禁用导致崩溃的一个或多个 mod。

它将连接到一个服务器,检查文​​件是否包含“真或假”,如果它包含“真”,它将执行执行此操作的代码:

连接到不同的服务器,获取复选框的名称,然后执行以下操作:

NameOfCheckBox.Enabled = False

问题是……我知道怎么做,除了最后一部分。

如何告诉我的程序它从服务器获取的文本是位于表单上的复选框名称?

这是我的代码:

Try

        Dim request As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("https://docs.google.com/document/d/1G3R0CoRG-LCXy-8jm-LcCJZJ9B0whsOJ64efjL0btc8/edit?usp=sharing")
        Dim response As System.Net.HttpWebResponse = request.GetResponse()
        Dim sr As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
        Dim status As String = sr.ReadToEnd()

        Dim request2 As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create("https://docs.google.com/document/d/1cYkhGTDEpxqltOvCSSD0Kw9J_1DG1dyJSV2qQ1Xekto/edit?usp=sharing")
        Dim response2 As System.Net.HttpWebResponse = request2.GetResponse()
        Dim sr2 As System.IO.StreamReader = New System.IO.StreamReader(response2.GetResponseStream())
        Dim checkboxtodisable As String = sr2.ReadToEnd()


        If status.Contains("True") Then
            Dim chk As CheckBox
            chk.Name = checkboxtodisable
            chk.Enabled = False
        Else

        End If
    Catch ex As Exception
        MessageBox.Show("Unable to connect to server!")
        MessageBox.Show(ex.Message)
    End Try

我得到的错误是:

Object reference not set to an instance of an object

错误位于这行代码:

chk.Name = checkboxtodisable

【问题讨论】:

  • 尝试创建一个新的CheckBox... 例如:Dim chk As New CheckBox 如果这不起作用,请确保checkboxtodisable 不是什么都不是...
  • 我没有收到任何错误...但是复选框没有被禁用。
  • 当然,但那是你的问题(你的错误)。我知道它不会改变状态,但这不是错误。如果您想包含它,请使用相关信息更新您的帖子。
  • @436f6465786572 对于可能的愚蠢问题,我深表歉意。但是你是什么意思这是我的错误?我想要做的是通过将复选框名称放在服务器上来远程取消选中或禁用复选框。
  • 我指的是您在上面的问题中发布的错误。我是说这是你的第一个问题,你的下一个问题是让你想要切换的控件是错误的。

标签: vb.net checkbox server


【解决方案1】:

您可以像这样按名称检索控件:

Dim MyCheckBox As Checkbox = Me.Controls("checkbox1")

所以你的代码应该是这样的:

If status.Contains("True") Then
    Dim chk as checkbox = Me.Controls(checkboxtodisable)
    chk.Enabled = False
End If

【讨论】:

  • 区分大小写吗?
  • 没有。而且我不确定您希望chk.Enabled = False 做什么,但请确保您不会将其与chk.Checked = False 混淆
  • 不,我不会混淆 .Enabled 和 .Checked... 但是,如果我能够通过服务器取消选中该复选框,那也适合我。
  • 关于您的代码...不幸的是,我遇到了同样的错误。
  • 删除 checkboxtodisable 周围的引号---我将编辑答案。
猜你喜欢
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
  • 2016-10-19
  • 2015-07-02
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
相关资源
最近更新 更多