C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: ウィンドウタイトルが変更出来ない


(過去ログ 83 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■49390 / inTopicNo.1)  ウィンドウタイトルが変更出来ない
  
□投稿者/ ゆずれもん (1回)-(2010/05/03(Mon) 01:28:03)

分類:[.NET 全般] 

以下のようなコードを書きました。
ボタンをクリックすると、ウィンドウタイトルが変わるようにしたいのですが、これではうまくいきませんでした。
どのようにすれば良いのでしょうか?
WPFとVBの事がよく分かっておらず、意味不明な質問かもしれませんが、よろしくお願いします。

Class Window1
Dim change_title As Change_Title
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
change_title.Start()
End Sub
End Class

Class Change_Title
Sub Start()
Window1.Title = "テスト"
End Sub
End Class
引用返信 編集キー/
■49475 / inTopicNo.2)  Re[1]: ウィンドウタイトルが変更出来ない
□投稿者/ おのでら (8回)-(2010/05/06(Thu) 12:33:48)
おのでら さんの Web サイト
2010/05/06(Thu) 12:35:14 編集(投稿者)
こんにちは、おのでらです。

わざわざ別クラスに分ける必要はあるのでしょうか?(もしかして処理の都合上分ける必要があるとか?)

Class Window1 
  Dim change_title As Change_Title
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
      Me.Title = "かわったよ!"
    End Sub
End Class

引用返信 編集キー/
■49516 / inTopicNo.3)  Re[2]: ウィンドウタイトルが変更出来ない
□投稿者/ ゆずれもん (2回)-(2010/05/07(Fri) 01:09:54)
ご回答ありがとうございます。

私が使用している参考書はFormで解説してあります。
その参考書では、Window1クラス以外のクラスから直接ウィンドウのタイトルを変更できていました。
その為、WPFでも同じように、window1クラス以外のクラスでも、直接ウィンドウタイトルを変更出来るのか? と思った次第です。

ウィンドウに置いたコントロールの表示内容を変更したいとき等は、基本的にwindow1クラスで.Contentなり.Textなりに値を代入していく方がよいのでしょうか?
そして、その代入する値を計算する役割だけを他のクラスに持たせるといった方がよいのでしょうか?

的を得ない質問で申し訳ないですが、なんとなくでも良いので回答頂けるとありがたいです。
あるいはこれを参考にすると良いよ! など......
引用返信 編集キー/
■49533 / inTopicNo.4)  Re[3]: ウィンドウタイトルが変更出来ない
□投稿者/ おのでら (9回)-(2010/05/07(Fri) 12:55:14)
おのでら さんの Web サイト
2010/05/07(Fri) 12:56:33 編集(投稿者)
おのでらです。

> 私が使用している参考書はFormで解説してあります。
> その参考書では、Window1クラス以外のクラスから直接ウィンドウのタイトルを変更できていました。
> その為、WPFでも同じように、window1クラス以外のクラスでも、直接ウィンドウタイトルを変更出来るのか? 
> と思った次第です。

あーなるほど、理解できました。これは VB.NET 特有の「暗黙フォームインスタンス」でタイトル名を指定しているのですね。
VB.NET の Windows Form では可能なのですが、その他の言語、また Windows Form 以外のフレームワークでは
このような設定の仕方はできません。VB6 以前の機能の遺産として残っているものですね。

WPF は Windows Form とはアプリケーションのフレームワークとしては別物なので上記の方法は使えません。
別クラスでタイトルを設定するには Window クラスのインスタンスを別のクラスに渡してあげる必要があります。

Class Window1
    Dim change_title As New Change_Title

    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
        change_title.Start(Me) ' Me で自分自身の Window のインスタンスを渡す
    End Sub
End Class

Public Class Change_Title
    Public Sub Start(ByVal window As Window)
        window.Title = "別なタイトル"
    End Sub
End Class


> ウィンドウに置いたコントロールの表示内容を変更したいとき等は、
> 基本的にwindow1クラスで.Contentなり.Textなりに値を代入していく方がよいのでしょうか?
> そして、その代入する値を計算する役割だけを他のクラスに持たせるといった方がよいのでしょうか?

先ほど示した方法で Window のインスタンスを別なクラスに渡して設定する方法もありますし、
Window1 クラス内で直接設定する方法もあります。

また WPF では MVVMパターン (Model-View-ViewModel デザイン パターン) と呼ばれる
デザイン パターンで UI のパラメータを更新する方法がよくつかわれます。
View のコントロールなどのパラメータへ直接コーディングせず、バインディングによって値の更新や受け渡しを実装します。
MVVMパターンについては公式サイトなどにも載っているので調べてみるといいでしょう。

・Model-View-ViewModel デザイン パターンによる WPF アプリケーション(http://msdn.microsoft.com/ja-jp/magazine/dd419663.aspx)

上記のリンク先はいきなり全てを理解するのは難しいと思いますので、他のサイトや書籍なんかで調べてみてください。

(ここなんか比較的小規模な実装パターンでしょうか)
http://shinshu.fm/MHz/88.44/archives/0000285284.html

引用返信 編集キー/
■49571 / inTopicNo.5)  Re[4]: ウィンドウタイトルが変更出来ない
□投稿者/ mk3008 (1回)-(2010/05/09(Sun) 19:22:28)
mk3008 さんの Web サイト
こんにちは、リンクで紹介していただきました、mk3008です。

> ウィンドウに置いたコントロールの表示内容を変更したいとき等は、
> 基本的にwindow1クラスで.Contentなり.Textなりに値を代入していく方がよいのでしょうか?
> そして、その代入する値を計算する役割だけを他のクラスに持たせるといった方がよいのでしょうか?

これはなかなか難しい問題ですね。

もし、プログラムに興味があり、勉強する時間が十分にあるのなら、
まずは、Windows1クラス(画面と対になっているVBのファイル)に書いてみてもいいんじゃないでしょうか?
実装方法がどうであれ挙動は同じですので、必要性を感じないのなら無理にクラスを分ける必要はないです。

ある程度思ったようなことができるようになったり、
アプリケーションを作成することになったら、「オブジェクト指向」を勉強してみてください。
「オブジェクト指向」が理解できれば、ゆずれもんさんの質問に対する解答が見えると思いますし、
おのでらさんが紹介した「MVVMパターン」というのも理解できるようになります。

ご参考になれば幸いです。
引用返信 編集キー/
■49573 / inTopicNo.6)  Re[5]: ウィンドウタイトルが変更出来ない
□投稿者/ ゆずれもん (3回)-(2010/05/09(Sun) 22:45:16)
なるほど、VB6の遺産ですか。VB6の遺産がちょくちょく残っているという話は聞いていましたが、これもその一つなんですね。

MVVMについて、おのでらさんにご紹介頂いたサイトを見てみました。
最初の方は、おっしゃる通りほとんど理解出来ませんでしたが……mk3008さんのサイトの説明は、
なんとなく理解出来た感じがします。やはりWPFを学ぶうえで、バインディングは外せないものなのですね。

MVVMパターン、オブジェクト指向と学んでいきたい事はたくさんありますが、
まずは出来ることから始めようと思います。
mk3008さんにアドバイスして頂いたように、まずはクラス分けを意識せず、とりあえず動くものを作っていこうと思います。
訳も分からず、参考書に従ってクラス分けするのも意味がない気がしてきましたし。。。

MVVMパターンという興味深いキーワードを教えていただき、ありがとうございます。
勉強する時間が十分にあるとは言えませんが、少しずつ学んでいこうと思います。
おのでらさん、mk3008さん、貴重なアドバイスありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -