- - PR -
各Formの引用の仕方に原因あり?
1|2|3
次のページへ»
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-05-01 05:24
連続投稿すいません。
Form2で #Region " Windows フォーム デザイナで生成されたコード " Public Form1 As Form1 (省略) Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim iP As Single Dim P As Single Dim day As Single TextBox1.Text = iP Form1.Label2.Text = day P = day * (100 - iP) Form1.Label5.Text = P End Sub Form1.Label2.Text = dayでエラーが出てしまうのですが原因がわかりません。 よろしくお願いします。 |
|
投稿日時: 2004-05-01 08:19
まず、エラーの内容を書いてください。
この掲示板を見ている方たちは、テンペストを用いてNakataさんのパソコンの画面を見ているわけではありません。 こちらを参考にするとよろしいかと。 http://www.hyuki.com/writing/techask.html で、本題ですが、NakataさんはVBをやってらした方ですね? Form1は型です。(つまりクラス名) Label2はForm1型のメンバでしょうか。 そうではなくてForm1型のインスタンスのメンバなのではないですか? Button1のTextを書き換えるのに、 Button.Text = "〜" とはしませんよね。Button1のTextなのですから Button1.Text = "〜" とするはずです。 ですから、Form1型のインスタンスのLabel2にアクセスしたいなら。 Form1.Label2 ではなく Form1型のインスタンス.Label2 としなければなりません。 つまり、Label2を書き換えたいForm1型のインスタンスへの参照を持っていなければ、書き換えることは出来ないということです。 「クラス・インスタンス」や「値型・参照型」辺りの概念の理解を深めるとよろしいかと思います。 |
|
投稿日時: 2004-05-01 09:24
Newしないとダメです。
たとえば Public Form1 As Form1 この行を Public Form1 As New Form1 とすると上手くいきませんか? VB6に比べると面倒くさいですよね。 これがオブジェクト指向なんでしょうけど。 次期VBではVB6時代に戻って 普通にForm1.Label2.Text = dayなどと書けるようになるようです。 |
|
投稿日時: 2004-05-01 10:29
>rucioさん
>Public Form1 As New Form1 一応、途中経過を報告します。 New を入れて実行してみたところ、(day=1に設定)TextBox1.Textにいくら数字を 入れても0になってしまいました。 >一郎さん 「クラス・インスタンス」や「値型・参照型」辺りの概念をまったく理解していません。Form1型のインスタンス.Label2 とはどういうことでしょうか? 少し自分でも調べてみます。 |
|
投稿日時: 2004-05-01 11:05
>New を入れて実行してみたところ、(day=1に設定)TextBox1.Textにいくら数字を入れても0になってしまいました。
多分、 1.Form1を表示(または、はじめに自動的に表示される) ↓ 2.Form2を表示 ↓ 3.Form1のTextBox1.TextにDayを代入 という順番で実行しているのではないですか? だとすると 3 で New(インスタンシング)したフォームにいくら命令しても 1 のフォームには影響しません。 |
|
投稿日時: 2004-05-01 11:58
>3.Form1のTextBox1.TextにDayを代入
1・2はその通りです。 3はForm2上のコードで Form1.Label2.Text = day と入力しています。 Form1ではdayは出てきません。 しかし何故、反映されずにform2のTextBox1.Text が0になるのでしょうか。 わかりにくい説明ですいません。 |
|
投稿日時: 2004-05-01 12:39
多分異なるインスタンス(別途Newしたもの)に命令しているせいだと思いますが
はなしが混乱してきてしまいました。 >form2のTextBox1.Textが0になるのでしょうか。 これは、最初にお尋ねになっている現象とは別の現象ですか? はじめはform1のLabel2に値をセットするコードでしたよね? >TextBox1.Textにいくら数字を入れても0になってしまいました。 これはプログラムから値をセットしているということですよね? 0 になる前はなにか別の値が入っているのですか? このTextBox1はどちらのフォームのものですか? |
|
投稿日時: 2004-05-01 12:46
>はじめはform1のLabel2に値をセットするコードでしたよね?
今もそうです。コードは最初の質問からNewしか入力していないのですが Form2のTextBox1.Textに0が出てきてしまいます。(最初は00) P = day * (100 - iP) ipはForm2のTextBox1.Text P = 1 * (100 - 30) Form1.Label5.Text にPを反映したいだけなのですが・・・。 少し出かけるので返信が夜中になると思います。 |
1|2|3
次のページへ»
