63 개의 양식을 가진 vb.net 응용 프로그램을 만들었습니다. 각 양식에 label2
은 응용 프로그램을 사용하여 사용자 이름을 포함해야합니다. 사용자에게 표시되는 첫 번째 양식은 로그인 양식입니다. 이 양식에서 사용자가 로그인 버튼을 클릭하면 새로 열린 모든 창에서 사용자 이름이 label2
안에 표시됩니다. 어떻게해야합니까?루프를 통해 다른 양식에 액세스하고 vb.net에서 레이블 텍스트를 변경하는 방법
답변
우선 내가 미래에 userLabel과 같이 관리 할 수있는 무언가로 컨트롤과 레이블의 이름을 변경하는 것이 좋습니다.
편집 :
응용 프로그램에 대한 그들은 (아직) 존재하지 않는 귀하의 로그인 폼 표시하면 다른 창을 열지 않은 따라서 당신이 그들을 통해 루프 수 없거나 상태를 변경합니다.
많은 수의 양식이 있으므로 반복적 인 코드가 많이 필요없는 솔루션을 찾아야합니다. 다른 사람들은 해결책이 될 수있는 MDI 창을 제안했습니다. 또 다른 솔루션은 사용자가 생성 한 사용자 정의 로그인 사용자 정의 컨트롤입니다.
이러한 사용자 지정 컨트롤을 만드는 것은 어렵지 않습니다. 필요에 따라 스타일을 지정하고 나중에 필요할 때 더 많은 기능을 추가 할 수도 있습니다 (예 : 로그 아웃 링크). 이 사용자 정의 컨트롤의 Load 이벤트에서 (정적 속성 또는 다른 메커니즘을 통해) 로그인 한 사용자 이름을 검색하고 그 내부에 표시 할 수 있습니다.
이렇게하면 사용자 이름을 표시하고 나머지는 자동으로 작동하는 모든 양식에이 사용자 정의 컨트롤을 배치해야합니다. 사용자 컨트롤을 만드는 방법에 대한 도움말은 Google에서 많은 자습서가 있으며 기본적으로 양식을 만드는 것과 같습니다.
디자인에 각 양식의 레이블이 필요한 경우가 아니면 MDI 컨테이너를 기본 양식으로 사용하고이 양식의 맨 아래에 상태 표시 줄을 추가 한 다음 사용자 이름을 하나로 저장하는 것이 좋습니다 상태 표시 줄 필드
이렇게하면 사용자가 알고있는 한 위치에서 사용자 정보를 사용할 수 있고 레이블이있는 중요한 화면 공간을 차지하지 않으므로 새로운 양식에 대해 염려 할 필요가 없습니다.
디자인에 각 양식의 레이블이 필요한 경우 폼 각각에서 상속되는 기본 클래스를 만드는 것이 좋습니다. Load 이벤트 양식 중에 Form의 Controls 컬렉션에있는 Find 메서드를 사용하여 사용자 이름을 포함하는 레이블을 찾고 설정할 수 있습니다 (레이블 이름이 모두 동일한 것으로 가정 함). 예를 들어
: 난 강력하게 어떤 일관되고 쉽게 인식 방식으로 당신의 컨트롤을 명명에 대한 악 젠트에 동의
Dim oLabel As Label
oLabel = TryCast(Me.Controls.Find("label2", True), Label)
If oLabel IsNot Nothing Then
oLabel.Text = globalusername
End If
A.. 현대적이고 빠른 시스템의 장점 중 하나는 코드에서 변수 및 클래스를 설명하는 이름을 사용할 수 있다는 것입니다. :-)
B. 여러 가지 방법으로 문제에 접근 할 수 있습니다. 63 가지 양식 모두를 반복하는 것이 그 중 하나이지만, 가장 효과적이고 효과적이며 유지 보수가 용이하지 않습니다.
C. 로그인을 어떻게 처리하고 있는지 확실하지 않으므로 사용자가 로그인 양식에서 확인을 클릭 한 후 어떤 일이 발생하는지 확신 할 수 없습니다. 직접 로그인 처리를 설정 했습니까? 아니면 내장 인증을 사용하고 있습니까?
Competent_tech는 상속을 제안하는 올바른 길에 있습니다.한 단계 더 나아가 My.Application 기능을 사용하여 전역 변수를 포함 할 수 있습니다. 프로젝트 속성 창/응용 프로그램/응용 프로그램 이벤트보기로 이동하십시오. 다음 코드 파일이 표시됩니다. 표시된 코드를 추가
Namespace My
Partial Friend Class MyApplication
'Add THIS code block:
Private _CurrentUserName As String = "Current User"
Public Property CurrentUserName() As String
Get
Return _CurrentUserName
End Get
Set(ByVal value As String)
_CurrentUserName = value
End Set
End Property
End Class
End Namespace
지금, 로그인 양식과 같이 응용 프로그램 변수를 설정할 수 있습니다
Private Sub OK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK.Click
My.Application.CurrentUserName = Me.UsernameTextBox.Text
'YOUR LOGIN CODE HERE . . .
Me.Close()
End Sub
는 My.Application 모듈 내에서 클래스를 생성하지 마십시오./뉴 클래스 다음 새 클래스를 생성 추가/프로젝트를 사용 System.Windows.Forms.Label에서 상속, 다음과 같이 (안 My.ApplicationEvents 모듈 내!) :
Public Class MyUserLabel
Inherits System.Windows.Forms.Label
Public Sub New()
Me.Text = My.Application.CurrentUserName
End Sub
End Class
당신은 빌드해야합니다 MyUserLabel 컨트롤이 도구 상자에 표시되기 전에 프로젝트에 적용됩니다. 빌드가 끝나면 컨트롤을 폼에 끌어다 놓을 수 있습니다. 또는 "전체 프로젝트"로 설정된 범위로 찾기/바꾸기를 사용할 수 있습니다.
위의 코드를 사용하면 MyUserLabel의 인스턴스가 각 인스턴스의 .Text 속성을 초기화시 (디자인 모드에서도) My.Application.CurrentUser 변수로 표시되는 값으로 설정하게됩니다.
그런 다음 모든 양식에서 Label2를 MyUserLabel로 바꿉니다 (범위를 지정하여 전체 프로젝트로 찾기 및 바꿀 수 있습니다).
희망이 있습니다.
Namespace My
' The following events are availble for MyApplication:
'
' Startup: Raised when the application starts, before the startup form is created.
' Shutdown: Raised after all application forms are closed. This event is not raised if the application terminates abnormally.
' UnhandledException: Raised if the application encounters an unhandled exception.
' StartupNextInstance: Raised when launching a single-instance application and the application is already active.
' NetworkAvailabilityChanged: Raised when the network connection is connected or disconnected.
Partial Friend Class MyApplication
'Add THIS code block:
Private _CurrentUserName As String = "Current User"
Public Property CurrentUserName() As String
Get
Return _CurrentUserName
End Get
Set(ByVal value As String)
_CurrentUserName = value
End Set
End Property
Public Class MyUserLabel
Inherits System.Windows.Forms.Label
Public Sub New()
Me.Text = My.Application.CurrentUserName
End Sub
End Class
End Class
최종 네임 스페이스
나는 위의 코드를 시도하고 프로젝트를 빌드 한 후에 도구 상자에서 새 컨트롤을 볼 수 없다. ... mod1이라는 이름의 모듈에서 public 클래스를 만들었습니다 ..... 그리고 또한 내가 두 개의 텍스트 상자와 로그인 버튼으로 사용자 정의 만든 로그인 양식을 사용하고 있다고 언급하고 싶습니다. – user944591
오류 목록을보십시오. 프로젝트가 성공적으로 구축 되었습니까? MyUSerLable이 도구 상자에 나타나서는 안됩니다. 일반적으로 선택 화살표와 함께 "구성 요소"또는 "프로젝트 네임 스페이스 구성 요소"에 있습니다. – XIVSolutions
또한 공용 변수를 전역 변수로 사용할 수없는 이유는 없습니다. 코드를 더 쉽게 사용/유지 관리 할 수 있도록 이름을 바꾸는 것이 좋습니다. 그러나 My.Application 네임 스페이스는 더 논리적 인 장소입니다. . . – XIVSolutions
- 1. vb.net에서 레이블 텍스트를 업데이트하는 방법
- 2. 레이블 텍스트를 파일 이름으로 변경하는 방법
- 3. VB.net에서 DOM 객체에 액세스하고 상호 작용하는 방법
- 4. TextArea의 텍스트를 변경하는 방법
- 5. Datatable에서 레이블 텍스트를 표시하는 방법?
- 6. UITableViewCell 재 배열 후 레이블 텍스트를 변경하는 방법
- 7. vb.net에서 레이블 컨트롤의 가운데에 텍스트를 설정하는 방법 개발자의 명시적인 도구로 vb.net에서
- 8. vb.net에서 레이블 값을 설정하십시오.
- 9. vb.net에서 속성 값을 변경하는 방법
- 10. vb.net에서 스크롤바 테마를 변경하는 방법?
- 11. VB.net에서 DetailsView의 레이블 텍스트 참조
- 12. Qt 양식에 레이블 지정
- 13. R 그림의 레이블 크기를 변경하는 방법
- 14. TTLauncherItem의 텍스트 레이블 프레임/위치를 변경하는 방법
- 15. TextCompositionEventArgs의 텍스트를 변경하는 방법
- 16. EditText에서 텍스트를 변경하는 방법
- 17. 요소의 텍스트를 변경하는 방법
- 18. 레이블 텍스트를 다른 파일의 값으로 변경 하시겠습니까?
- 19. ASP.Net 레이블 컨트롤에서 다른 텍스트를 Interval
- 20. 사용자 정의 컨트롤에서 레이블 텍스트를 변경하는 가장 좋은 방법은 무엇입니까?
- 21. jQuery를 통해 AJAXed 요소에 액세스하고 부모를 변경하는 것
- 22. 드롭 dowlist의 텍스트를 변경하는 방법?
- 23. QML에서 StackLayout의 레이블 텍스트를 중앙 정렬하는 방법?
- 24. Throwing 타이머가있는 레이블 내용을 변경하는 방법 InvalidOperationException
- 25. ExtJS에서 LoadMask 텍스트를 변경하는 방법
- 26. iframe 내부 텍스트를 변경하는 방법?
- 27. 배경을 추가하거나 텍스트를 변경하는 방법
- 28. magento : 백엔드의 레이블 텍스트를 변경하십시오.
- 29. 힌트 텍스트를 auth.login 양식에 삽입하는 방법
- 30. 레이블 텍스트를 기반으로 확인란 및 레이블 숨기기
로그인 양식이 첫 번째 양식이며, 하나의 양식을 한 번에 볼 수 ... 난 그냥 사용자 이름입니다 표시 할 기능 : 여기
코드입니다 , label.text로 누가 응용 프로그램에 로그인했는지 ... 사용자가 로그인 할 때 모든 양식에 레이블 텍스트를 설정하고 싶습니다. – user944591좋아요, 제 응답에 도움이되는 정보를 추가했습니다. 귀하의 질문을 편집하여 귀하가 방금 말씀하신 정보를 추가하고 필요한 정보를 다른 사람들이 쉽게 이해할 수 있도록했습니다. 한 가지 대답에 만족하면 수용된 대답으로 표시하십시오. 이것은 비슷한 문제를 가진 다른 사람들을 도우며 당신을 도운 사람들에게 보상을줍니다. – aKzenT