したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | メール | |

プロパティの使い方について

2igoten:2010/04/01(木) 14:58:20
フィールドの変数をPrivateで隠蔽してProperityで設定、取得
するやり方は.netの推奨される正式な方法で良い方法で
有ると思います。
インスタンスのスコープですが同じクラスのインスタンス内であれば
グローバルにしておも良いと思います。
フォームの置かれたButtonとかTextBoxと言ったような感じですね。
ただしおっしゃっているファイルと言う意味がちょっとわかりません。
異なるファイル間のデータの共有とはどのような意味でしょうか?

3こじら:2010/04/02(金) 01:02:52
すみません。
簡単に言うと、FORM1とFORM2、...と複数FORMがあって、
Main(起動時)はForm1で、そこでグローバル宣言として
プロパティーのクラスをインスタンス化すると、
 
FORM1であるボタンを押すとFORM2が起動、FORM2のある
ボタンをまた押すとFORM3が起動するとしたとき、
FORM2、FORM3ではFORM1のそのインスタンスは使えず、
プロパティーの値が使えない。
 それぞれのFORM(FORM2、3)でそれぞれプロパティー
クラスを再度インスタンス化すると、それはFORM1とは
新規に別物として作成される(と思ってます)から、FORM1の
それとはリンクがとれていない。従ってFORM2,3で変更した値
はFORM1には反映されていないと思われます。
 できたら、値を共有したいと考えているのですが、
なにか共有できる方法はないでしょうか。
 (FORM1に256個のプロパティ(レジスタ)があり、その256個の
値をFORM2,FORM3でも同様に使用したいと考えてます)

ちなみに ファイルと表現していたのは、FORMを新たに作成したら
FORMクラスが統合環境の窓に追加され、この新たにできたFORMの
ファイルのつもりで言っていました。

これでわかって頂けるかも不安ですが、アドバイスお願いします

4igoten:2010/04/02(金) 13:35:29
次のコードを試してみて下さい。
Form1上にはボタン一つとテキストボックス1つを置きます。
Form2上にはボタンを一つ置きます。
Form1でForm2を作成して、Form2上のボタンを押すと
Fomm1上のTextBoxに文字を書き込みます。
Public Class Form1
Dim F2 As Form2
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
F2 = New Form2(Me)
F2.Visible = True
End Sub
End Class

Public Class Form2
Private F1 As Form1
'フォーム起動時に親から呼び出される
Public Sub New(ByVal _F1 As Form1)
InitializeComponent() 'これは必ず必要です
F1 = _F1
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
F1.TextBox1.Text = "Hello"
End Sub
End Class

5こじら:2010/04/06(火) 22:14:24
返事おそくなりまたもやすみません。
教えて頂いた方法でできました。有難うございました。

これに関して教えていただきたいのですが、
FORM1型の変数F1をインスタンス化し、
F1.TextBox1.Text = "Hello"
としてデータアクセスするのと
インスタンス化せず、
FORM1.TextBox1.Text="Hello"とするのと
違いがあるのでしょうか?

また
Class Form1
public Common as New clsAA

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Common.A7 = "12345"
End Sub
end Class

Public Class clsAA
Private _A7 As String
Public Property A7() As String
Get
Return _A7
End Get
Set(ByVal value As String)
_A7 = value
End Set
End Property
end Class

としたとき
Class Form2
  
  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)_
            Handles Button1.Click
    TextBox1.text=Form1.Common.A7
End Sub
End Class

としたときなんですが、 変数commonみたいな使い方
って普通なのでしょうか。
 したいことは データベースのように、どのような
Formや、関数もデータアクセスは一箇所、共通にしたい
と考えていて。
 アドバイス宜しくお願いいたします

6igoten:2010/04/07(水) 16:52:08
その件に関してはVB.NETのバージョンによります。
>http://www.geocities.jp/hatanero/form1andform2-2.html
を見て下さい。
VB2005以降で有ればどちらでもいいのです。
ただし私はインスタンスを明確に作成する方法を推奨します。<br>
<br>
クラスのフィールドを定義して、プロパティでアクセスする方法ですね、
普通だと思います。

7こじら:2010/04/08(木) 01:36:57
こんばんわ
毎回有難うございます。

私もインスタンス作成で行うことにしました。
その方が、FORM2とかで固定してしまうより、
汎用的に使いまわしが用意かなって気がしたので。

今まで多くのこと教えて頂き、今まさにUARTで機器と
通信できるTOOLらしいものができあがりつつあります。
 今は最後の最後で、Toolで通信した後機器をToolの
コマンドでリセットかけたら機器はリセットされるの
ですが、Toolの画面の値が初期化されないところで
苦戦してます。
 最初の設計仕様が悪かったようです。

ありがとうございました。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板