2013-11-26 4 views
0

У меня есть программа, которая нуждается в аутентификации пользователя. Теперь я храню имя журнала в общедоступной строке, но я хочу использовать больше информации о пользователе, например, какой язык он выбрал для использования, его имя и тому подобное. Я мог бы создать еще одну публичную строку, но мне не нравится эта идея. Моя цель - сохранить некоторые данные о пользователе, когда он вводит свое имя пользователя и пароль. Я хочу создать что-то вроде этого:Создать глобальную переменную в Visual Studio 2008

user.logonname 
user.language 

Я думал, что структура будет делать трюк, поэтому я создал это:

Public Structure user 
    Public logonname As String 
    Public languagetype As String 
End Structure 

Но я могу получить доступ только так:

Dim user1 as new user 

Но это не может перезаписать публичную структуру, просто создайте экземпляр, поэтому другие формы не будут иметь необходимой мне информации. Я видел что-то подобное в VB6, но эта программа использовала DLL, содержащую этот тип переменной, и я не очень понимаю ее, и я уверен, что есть лучший способ. Может кто-нибудь мне помочь? Спасибо заранее.

+0

почему структура не является классом? scope (access) будет зависеть от того, где объявлен 'user1'. – Plutonix

+0

Я знаю, что могу использовать классы, но я надеялся, что есть тип переменной или что-то, что я мог бы использовать. – Joe88

+0

проблема не является классом, структурой или переменной - это 'scope' - где вы объявляете user1, определяет, является ли он глобальным, уровнем модуля, уровнем класса или уровнем уровня процедуры (видимость) – Plutonix

ответ

1

Благодаря Plutonix, я понял это. Если кому-то это нужно, я сделал следующее:

Public Module GeneralModule 
    Public Structure user 
     Public logonname As String 
     Public languagetype As String 
    End Structure 

    Public guser As New user 
End Module 

И я могу получить доступ к guser в любом месте.

Пример:

Private Function login 
    'Some other code 
    guser.logonname = Me.userid.text 
    guser.languagetype = Me.ComboBoxLanguage.Text 
End Function 
1

Возможно, это поможет вам в вашем проекте. Удачи!

Public Type EmployeeName 

FirstName As String 

MidInit As String 

LastName As String 

End Type 



Public Type EmployeeRecord 

udtEmpName As EmployeeName 

dtmHireDate As Date 

sngHourlyRate As Single 

dblQuarterlyEarnings(1 To 4) As Double 

End Type 



Dim udtEmpRec As EmployeeRecord 

Вы бы ссылаться на поля EmployeeName следующим образом:

udtEmpRec.udtEmpName.FirstName 

udtEmpRec.udtEmpName.MidInit 

udtEmpRec.udtEmpName.LastName 
0

Создайте модуль и объявить общедоступные переменные в этом модуле. Эти переменные будут доступны для всего проекта, тогда

Смежные вопросы