- PR -

.NETのコントロールオブジェクトを引数として別のクラスのメソッドに渡したい

投稿者投稿内容
King
ぬし
会議室デビュー日: 2008/06/20
投稿数: 284
投稿日時: 2008-12-11 12:42
「.NETのコントロールオブジェクトを引数として別のクラスのメソッドに渡したい」
というよりも
「.NETのコントロールオブジェクトを引数としてメソッドに渡したい」
という部分がわかっていない様な気がします。
そしてそれがわからないという事は
「String を引数としてメソッドに渡したい」
という事もわからないかな?という風に思います。

それがわかるなら後はそのメソッドをクラスに入れたら終わりだと思います。

そしてそのメソッドは
「Object を引数としたメソッド」
ではなく
「FileUpload を引数としたメソッド」
が良いと皆さんおっしゃってますし私もそう思います。
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-12-11 14:04
>どっとねっとふぁん様
すみません。
System.Web.UI.Pageはつけなくても動きました。
型とかもASPしかやっていなかったので良くわかっていないところがあるので・・・
コントロールを引数にした型はオブジェクト型ではないのでしょうか?

>King様
Stringを引数にして渡しているメソッドも作ったDLLの中にあるのでそっちは動いています。FileUpLoadコントロール=Objectだと思っていたのですが違うのでしょうか?

すみません。初心者なもので、勉強してきます。

なかむら
ベテラン
会議室デビュー日: 2008/11/11
投稿数: 67
お住まい・勤務地: 福岡
投稿日時: 2008-12-11 14:15
皆さんがおっしゃっているのは
コード:

public class BBB
{
// object 型ではなく FileUpload 型を受け取るようにする
public void ME(FileUpload PrmObj)
{
//処理
}
}


こういう事です。

クラス、継承、多態性あたりを重点的に勉強すると良いと思います。

_________________
Nakamura Blog

[ メッセージ編集済み 編集者: なかむら 編集日時 2008-12-11 14:16 ]

[ メッセージ編集済み 編集者: なかむら 編集日時 2008-12-11 14:16 ]
SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-12-11 14:26
>なかむら様
そうゆうことですか!わかりました。
ご丁寧にありがとうございます。勉強してきます。
セラフ
ベテラン
会議室デビュー日: 2005/12/01
投稿数: 95
お住まい・勤務地: 東北の顔の形といえば
投稿日時: 2008-12-11 14:27
がんばってください。最初はみんな似たような勘違いするもんです。

コード:
using System;
using System.Web.UI.WebControls;
using System.Text;

namespace WebApplication1
{
    //フォームのデザイナークラス
    public partial class _Default
    {
        protected global::System.Web.UI.HtmlControls.HtmlForm form1;
        protected global::System.Web.UI.WebControls.FileUpload FileUpload1;
        protected global::System.Web.UI.WebControls.Button Button1;
    }
    //フォームのプログラム本体
    public partial class _Default : System.Web.UI.Page
    {
        protected void Button1_Click(object sender, EventArgs e)
        {
            WebApplication1.LocalUtility.SaveAsFile(this.FileUpload1);
        }
    }
    //便利に使おうユーティリティクラス
    public class LocalUtility
    {
        public static void SaveAsFile(FileUpload targetControl)
        {
            //普通保存先はアプリケーション毎に異なるけど、リテラルで書かないよね
            DllTest.WebUtility.SaveAsFile(
                targetControl, 
                WebApplication1.Properties.Settings.Default.saveDirectory
                );
        }
    }
}

//ここから別プロジェクトとして作成したクラスライブラリ
namespace DllTest
{
    public class WebUtility
    {
        //DLLの中にリテラル埋め込もうとするなんてDLLの意味なくなるよ
        //DLLなんだから汎用的に使えるようにしないと・・・
        public static void SaveAsFile(FileUpload targetControl, string saveDirectory)
        {
            StringBuilder savePathBuilder = null;
            savePathBuilder = new StringBuilder();
            if (targetControl.Page != null)
            {
                savePathBuilder.Append(
                    targetControl.Page.MapPath(saveDirectory)
                    );
            }
            else
            {
                savePathBuilder.Append(saveDirectory);
            }
            savePathBuilder.Append(targetControl.FileName);

            targetControl.SaveAs(savePathBuilder.ToString());
        }
    }
}

SANB
常連さん
会議室デビュー日: 2008/11/17
投稿数: 25
投稿日時: 2008-12-11 17:29
>セラフ様
ありがとうございます。勉強になります。
親切な方が多いので本当に助かります。
オウオウ
常連さん
会議室デビュー日: 2008/11/26
投稿数: 38
投稿日時: 2008-12-11 19:12
(利用規約違反のため削除いたしました。@ITクラブメンバーシップセンター)

スキルアップ/キャリアアップ(JOB@IT)