2008/02/06(Wed) 14:34:47 編集(投稿者)
■No13893 (ポンデC# さん) に返信
なるほど。
ありがとうございます。
それであれば、アプリケーション設定のユーザー・スコープをつかってみてください。
これで、設定の保存と値渡しがいっぺんに解決出来て一石二鳥かと思います。
使い方はこちらです
http://msdn2.microsoft.com/ja-jp/library/k4s6c3a0(VS.80).aspx
http://www.atmarkit.co.jp/fdotnet/dotnettips/558appsettings/appsettings.html
2番目のアドレスは2005の説明ですが、2008でも設定方法は同じなので問題ないかと思います。
「アプリケーション設定 ユーザー・スコープ」でググると他にも出てきますので調べてみてください。
アプリケーション設定の用法としては、
1.設定用のフォーム2を表示し、アプリケーション設定に値を保存する。できれば即使用出来る数値として。
2.フォーム1等で計算する時に、アプリケーション設定から値を取得し計算する。
となります。
次にロジックの作成方法ですが、上記アプリケーション設定を使用した場合2つほど方法があります。
注:ネームスペースは省略してます。手順にエラー処理は考慮してません。
1.もしメソッドを再利用しない(フォーム1以外でも計算式を使用しない)場合は、計算用クラスを
作成せずフォーム1のメンバとして計算ボタンのクリック イベントを使用したほうが良いでしょう。
//form1.cs
//表示フォーム
public partial class Form1 : Form
{
//その他 略
private void button_Click(object sender, EventArgs e)
{
//手順
//1.アプリケーション設定の取得
//2.計算
//3.結果の表示
}
}
2.メソッドを再利用したい(フォーム1以外でも計算式を使用する)場合は、共通クラスを作成し
Staticなメソッドとして作成して利用する方が良いかと思います。この場合、クラスをインスタンス化する
必要はありません。
ただ注意として、メソッドからは直接フォーム1の内容を読むことは出来ません。なので、メソッドに
引数をつけフォーム1の内容をメソッド実行時に渡してください。
注:下のサンプルは、整数型(int)の値としてます。小数があるなら浮動小数点型もしくは
decimal型を使用すると良いでしょう。
Staticメソッドについては、「"C#" static メソッド」でググって下さい。
//form1.cs
//表示フォーム
public partial class Form1 : Form
{
//その他 略
private void button_Click(object sender, EventArgs e)
{
//手順
//1.画面の入力値を文字列から数値への変換
int intTemp = (変換し代入する);
//2.共通クラスの結果の表示
xxxLabel.Text = Commmon.GetHoleSize(intTemp).ToString();
}
}
//common.cs
//各フォーム共通使用クラス
public class Common
{
public static int GetHoleSize(int value)
{
//手順
//1.アプリケーション設定の取得
//2.計算
//3.結果を返す
return xxx;
}
}
他にもロジックはありますが、この様な感じにすると良いかと思います。
#スペルミス修正(汗