在catch块中设置textbox属性值

时间:2015-05-23 04:30:35

标签: vb.net visual-studio-2013 try-catch

将VS 2013 VB.net用于我的ClickOnce应用程序。我有一个验证数据库功能的函数,并且guts包含在Q中。我的Catch块的一部分如下所示:

Try Catch

Intellisense Error

我想要做的是,根据底部的两个自定义错误消息清除两个不同的字段。类似于Catch ex As Exception When Err.Number = "5" My.Application.Log.WriteException(ex) If My.Settings.g_blnDebugMode Then MessageBox.Show(Err.Number & " " & ex.ToString, "Exception Error") End If If Err.Description.Contains("The specified table does not exist") Then MessageBox.Show("Selected file is not a valid database.", "Exception Error") ElseIf Err.Description.Contains("The specified password does not match the database password.") Then MessageBox.Show("The specified password does not match the current database password.", "Exception Error") End If Return False TextBox1.Text = ""的内容,具体取决于引发的错误(密码无效或数据库无效)。我的问题是我似乎无法直接设置它们或者在catch块中设置模块或全局变量的值。

错误是:

  

如果没有该类的显式实例,则无法在共享方法或共享成员初始值设定项中引用类的实例成员。

如果有可能,我该怎样解决这个问题并根据Catch块中的结果设置我的TextBox?

1 个答案:

答案 0 :(得分:0)

通常,实现你正在尝试的方法是使用第二个catch块

Catch ex As Exception When Err.Number = ""
    MessageBox.Show(ex.Message)
    FlushTextBox1();
Catch ex As Exception When Err.Number = ""
    MessageBox.Show(ex.Message)
    FlushTextBox2();

错误很可能出现,因为try-catch块在Shared方法中。这意味着,TextBox的值的变化将对该类的所有实例重复。如果您希望TextBox的行为与此类似,请将Shared关键字添加到其自己的声明中,并将其从Sub的声明中删除。如果您根本不想要这种行为,只需删除Shared关键字即可。有关错误的详细信息,请查看MSDN article

或者,您可以调用本地函数(如代码所示)FlushTextBox1()来更改Sub之外的TextBox的值。