質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

Q&A

解決済

1回答

3403閲覧

Visual Basic,VB.netでのメインウィンドウの取得

Dra

総合スコア75

Visual Basic .NET

Microsoft Visual Basic .NET (VB.NET)とはオブジェクト志向のプログラム言語です。 Microsoft"s Visual Basic 6 のバージョンアップとしてみることができますが、Microsoft.NET Frameworktによって動かされています。

Visual Studio 2013

Microsoft Visual Studio 2013は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2012の次のバージョンです

0グッド

1クリップ

投稿2015/06/21 12:56

お世話になります。
Visual Basicを使い、vb.netで開発をしているものです。
職業プログラマーですが、二ヶ月目の新米です。
今回はVBでわからないことがあり、質問させていただきました。

言語:Visual Basic(WPF)

目的:mainwindowのインスタンス化されたフォーム(コントロール上に張り付けたラベルオブジェクト)を外部クラスから操作する

手段:Me.mainwindowを変数で参照してラベルオブジェクトのコンテンツに値を入れようととする
リンク内容
こちらを参考にして、メインウィンドウを取得しようとしましたが、できません。

問題:label1(mainwindowにはりつけたラベルオブジェクト)はSystem.windows.windowsのメンバーですとでる

この件ではもう一週間も詰まっています。
以下にソースを記述します。
何卒よろしくお願いします。

Public Class Class1

Dim mainWindow As Window = Me.mainWindow Sub control() mainWindow.label1.content = "aaa" ↑ここでlabel1はSystem.windows.windowsのメンバーとでる End Sub

End Class

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tak1wa

2015/06/21 13:51

Label1という名前でアクセスしたいのですか?
guest

回答1

0

ベストアンサー

こんにちは。

名前から取得したい場合は以下のような感じでしょうか。(mainWindow自体のインスタンスは取得済みという前提です。)

lang

1Dim targetLabel As Label = TryCast(mainWindow.FindName("label1"), Label) 2If targetLabel IsNot Nothing Then 3 targetLabel.Content = "aaa" 4End If

ちなみに便宜上以下のようにMainWindowからHogeクラスを生成しました。

lang

1Class MainWindow 2 Private Sub Button_Click(sender As Object, e As RoutedEventArgs) 3 Dim hoge As New Hoge(Me) 4 hoge.SetLabel() 5 End Sub 6End Class 7 8Class Hoge 9 Dim mainWindow As Window 10 Public Sub New(own As MainWindow) 11 Me.mainWindow = own 12 End Sub 13 14 Public Sub SetLabel() 15 Dim targetLabel As Label = TryCast(mainWindow.FindName("label1"), Label) 16 If targetLabel IsNot Nothing Then 17 targetLabel.Content = "aaa" 18 End If 19 End Sub 20End Class

投稿2015/06/21 13:56

編集2015/06/21 13:58
Tak1wa

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Dra

2015/06/22 03:55

ありがとうございます。今から試してみます。 昼休み中に間に合わなければ就業時間以降にでも必ず試してみます。
Dra

2015/06/22 04:00

できましたあああああああああああああああああああああああああああ ありがとうございます!!!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問