63フォームを持つvb.netアプリケーションを作成しました。各フォームのlabel2
には、アプリケーションを使用するユーザー名が含まれている必要があります。ユーザーに表示される最初のフォームはログインフォームです。ユーザーがこのフォームのログインボタンをクリックすると、新しく開かれたすべてのウィンドウのユーザー名がlabel2
に表示されます。これどうやってするの?ループを介して異なるフォームにアクセスし、vb.netのラベルテキストを変更する方法
答えて
まず最初に、あなたのコントロールとラベルの名前を、将来的にuserLabelのようなより保守的なものに変更することを強くお勧めします。
編集:
すると、あなたのアプリケーションのために、彼らは(まだ)存在していないので、あなたがそれらをループすることはできませんか、状態を変更するので、あなたは、他のウィンドウを開いていない、あなたのログインフォームが表示されます。
フォームが多数あるため、繰り返しの多いコードを必要としないソリューションを見つけようとする必要があります。他の人は、MDIウィンドウを提案しました。もう1つのソリューションは、作成するカスタムログインユーザーコントロールです。
このようなカスタムコントロールを作成することは難しくありません。必要に応じてスタイルを設定し、必要に応じて後で機能を追加することもできます(ログアウトリンクなど)。このユーザーコントロールのLoadイベントでは、ログインしたユーザー名を静的プロパティまたはその他のメカニズムを介して取得し、内部に表示できます。
これで、ユーザー名を表示する必要があるすべてのフォームにこのユーザーコントロールを配置し、残りは自動的に動作させるだけです。ユーザーコントロールを作成する方法については、Googleに多くのチュートリアルがあります。基本的にフォームを作成するのと同じです。
デザインに各フォームのラベルが必要な場合を除き、MDIコンテナをメインフォームとして使用し、このフォームの下部にステータスバーを追加し、ユーザー名を1つに格納することを検討してくださいステータスバーフィールドの
この方法では、ユーザーが知っている1つの場所でユーザー情報を利用できるため、貴重な画面の不動産をラベルで取り込まず、新しいフォームについて心配する必要はありません。
デザインに各フォームのラベルが必要な場合は、各フォームが継承する基本クラスを作成することをお勧めします。フォームのLoadイベント中に、FormのControlsコレクションのFindメソッドを使用して、ユーザー名を保持するラベルを検索して設定できます(ラベルはすべて同じ名前であることが前提です)。例えば
:私は強く、いくつかの一貫性と容易に認識方法であなたのコントロールの名前付けに関してAKZENTに同意
Dim oLabel As Label
oLabel = TryCast(Me.Controls.Find("label2", True), Label)
If oLabel IsNot Nothing Then
oLabel.Text = globalusername
End If
A.。近代的で高速なマシンのメリットの1つは、変数とクラスのコードで説明的な名前を使用できることです。 :-)
B.問題を解決する方法はいくつでもあります。 63種類すべてのフォームをループすることはその中の1つですが、それは最も効果的で効果的ではなく、やり直しが困難です。
C.ログインの処理方法がわからないため、ユーザーがログインフォームで[OK]をクリックした後に何が起きるかわかりません。独自のログイン処理を設定しましたか、または組み込みの認証を使用していますか?
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から継承され、以下のように(NOT My.ApplicationEventsモジュール内で!):
Public Class MyUserLabel
Inherits System.Windows.Forms.Label
Public Sub New()
Me.Text = My.Application.CurrentUserName
End Sub
End Class
は、あなたが構築する必要がありますMyUserLabelコントロールがツールボックスに表示される前にプロジェクトを作成します。ビルドしたら、コントロールをフォームにドラッグすることができます。または、「プロジェクト全体」に設定されたスコープでFind/REplaceを使用することができます。 "label2"を "MyUserControl"に置き換えます
上記のコードにより、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という名前のモジュールでパブリッククラスを作っています.....また私も私は2つのテキストボックスとログインボタン – user944591
で私が設計したカスタムのログインフォームを使用していると言いたいと思います。エラーリストを見てください。プロジェクトは正常に構築されましたか? MyUSerLableがツールボックスに表示されるべきではありません。通常、「コンポーネント」または「YourProjectNamespaceコンポーネント」に、選択矢印とともに表示されます。 – XIVSolutions
また、グローバル変数にパブリックモジュールを使用することができない理由はありませんが、コードの使用/保守が容易になるように名前を変更することを強くお勧めします。ただし、My.Application名前空間は、それを配置するより論理的な場所です。 。 。 – XIVSolutions
- 1. foreachループのラベルテキストを変更する
- 2. vb.netのラベルテキストを更新するには
- 3. 他のフォームのラベルテキストを変更するには、ボタンをクリックする方法は?
- 4. アクセスDBを介してC#ループを介してループ#
- 5. ループを介してオブジェクトアイテムを更新する方法
- 6. Javascriptを使用してフォーム内でファイルを選択する際にラベルテキストを変更する方法
- 7. サービスを介して$ scope変数を変更する方法
- 8. VB.NETの他のフォームでスレッドのlabel.textを変更する方法
- 9. ループを使用してボタンのクリックでラベルテキストを変更しますか?
- 10. パラメータを介してポインタを変更する方法
- 11. C#ASP.NETコードビハインドを介してCSSクラスを変更する方法
- 12. ラベルテキストを変更する
- 13. 異なるフォーム間でVB.NET変数を使用する
- 14. ラベルテキストをファイル名に変更する方法
- 15. Pythonを介してウェブサイトのJavaScript変数にプログラムでアクセスする方法
- 16. VB.NETの異なるボタンで異なるフォームを開く
- 17. アクセスしているプロパティを動的に変更する方法
- 18. 進捗状況の値でラベルテキストを変更する方法
- 19. VB.Netでカラーインデックスを変更する方法
- 20. 2つの異なるフォームからラベルを変更します
- 21. Dart Services API:APIサービスを介して/ fixesにアクセスする方法は?
- 22. JavaScript関数を介して渡された変数にアクセスする方法
- 23. 異なるクラスを使用してフォーム1のテキストラベルを変更する
- 24. クラスの参照を介してアクセスし、変更ベクトル
- 25. R apply() - ループを介して情報を伝達する方法?
- 26. Crystalレポートのフォントを変更する方法vb.netを使用して動的に
- 27. インターフェイスを介して異なるオブジェクトのプロパティにアクセスできますか? C#
- 28. PyQt:パッケージからラベルテキストを変更する方法
- 29. メインアクティビティにアクセスしてフラグメントを変更する方法
- 30. ウェブサイトにログインしてvb.netを使用してフォームを送信する方法
ログインフォームが最初のフォームで、ただ一つの形が一度に表示されている...私が欲しい機能だけでユーザー名を表示することです、label.textとして、誰がアプリケーションにサインインしましたか...ユーザーがログインしたときに、すべてのフォームにラベルテキストを設定します。 – user944591
私の回答に役立つ情報を追加しました。私はあなたの質問を編集して、ちょうど私に言った情報を追加し、他の人があなたが必要とするものを理解しやすくしました。 1つの答えに満足したら、それを受け入れられた答えとしてマークしてください。これは、類似の問題を抱えている他の人を助け、あなたを助けた人々に報酬を与えます。 – aKzenT