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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.87764 の関連記事表示

<< 0 >>
■87764  Re[2]: 別フォームにデータを渡したい
□投稿者/ いまそかり -(2018/06/28(Thu) 16:58:08)
    No87757 (にゃるら さん) に返信
    
    にゃるらさん、回答ありがとうございます。
    
    
    >>@Form1_LoadをprivateのままでForm2で取得し、使用したい
    > 
    > ある型のメンバを呼び出すのに、Reflectionが使えます。
    > 
    >   http://smdn.jp/programming/netfx/reflection/
    > 
    > privateなインスタンスメンバであれば
    > 
    >   BindingFlags.NonPublic | BindingFlags.Instance
    > 
    > の条件をつけることでアクセスできます。
    
    
    なるほどそういう方法があったんですね!
    早速書いてみました。
    
    Dim fType As Type = Form1.GetType()
    
            Dim f2 As New Form2()
    
            fType.InvokeMember("Form1_Load",
                               BindingFlags.NonPublic Or
                               BindingFlags.Instance Or
                               BindingFlags.InvokeMethod,
                               Nothing,
                               From1,
                               New Object() {Form1, f2}
                               )
    
    
    参考(https://dobon.net/vb/dotnet/programing/invokenonpublicmember.html
    「隠蔽されている非パブリックメンバを呼び出す」)
    
    これで合ってますかね…?
    
    
    
    
    >>AForm2でForm1_Loadだけを取得した場合、(※1)は正常に動作するのか
    > 
    > 正常の意味がよくわからないですが、呼び出そうとする処理の中に
    > 状態や変数のライフタイムなどが関係ないようなものであれば
    > 大丈夫じゃないでしょうか。
    > 
    > ちなみに余計なお世話ですけども。
    > 「素人」というのが本当なのであれば、privateでなくpublicだけで実装されるのが無難と思いますよ。
    > 動くプログラムを作られてからカプセル化に挑戦する方が良いと思いますよ。
    
    
    あ、すみません「正常」という言葉は「エラーは出ないのか?」という意味で使ったので、その解釈であってます。
    「素人」という言葉も「初心者」という意味合いで使っていました。
     
    また、以前「基本はPublicではなくPrivateで書いたほうがいい」と授業で習った覚えがあったので、
    Privateで記述していました。
    でも、まずはにゃるらさんの言う通りPublicでやった方がやりやすいかもですね…。
    次回からはその方法も試してみます。
    
記事No.87756 のレス /過去ログ151より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -