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

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

C# と VB.NET の入門サイト

Re[9]: フォームから別フォームのテキストボックスをコントロールしたい


(過去ログ 27 を表示中)

[トピック内 12 記事 (1 - 12 表示)]  << 0 >>

■12406 / inTopicNo.1)  フォームから別フォームのテキストボックスをコントロールしたい
  
□投稿者/ マルコ (13回)-(2008/01/09(Wed) 14:00:35)

分類:[VB.NET/VB2005] 

開発言語:Microsoft2003 .net2003 ver 7.1.3091
:Microsoft.NET Framework1.1 ver 1.1.4322

入力画面から参照ボタンで照会画面が開きます。
照会画面の閉じるボタンで入力画面のテキストコントロールを
非表示、表示の切り替えを行いたいのですが、
うまくいきません。

閉じるボタンのclickイベント
 dim 入力画面 AS frm入力画面

 入力画面.txt項目.Enable=true

と記述したのですが、
インスタンス設定エラーになります。

簡単な方法がありましたら、教えてください。


引用返信 編集キー/
■12420 / inTopicNo.2)  Re[1]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ 特攻隊長まるるう (115回)-(2008/01/09(Wed) 14:53:41)
2008/01/09(Wed) 14:57:54 編集(投稿者)
No12406 (マルコ さん) に返信
Public Class 入力画面
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
(省略)
#End Region

    Private Sub 参照ボタン_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 参照ボタン.Click
        Dim frm As New 照会画面
        frm.ShowDialog()
        If frm.DialogResult = DialogResult.OK Then
            Me.txt項目.Enabled = True
        Else
            Me.txt項目.Enabled = False
        End If
        frm.Dispose() 'ShowDialog の場合に必要
    End Sub
    
End Class

Public Class 照会画面
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
(省略)
#End Region

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.DialogResult = DialogResult.OK
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Me.DialogResult = DialogResult.Cancel
    End Sub

End Class

引用返信 編集キー/
■12450 / inTopicNo.3)  Re[2]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ マルコ (14回)-(2008/01/09(Wed) 19:30:01)
No12420 (特攻隊長まるるう さん) に返信
特攻隊長まるるうさん。ありがとうございます。

 すいません。言葉が足りませんでした。
 フォームは、モードレスで表示しないといけない仕様なので
 モードレスの場合は、どううしたらいいでしょうか?

 
 
引用返信 編集キー/
■12451 / inTopicNo.4)  Re[1]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ 魔界の仮面弁士 (562回)-(2008/01/09(Wed) 19:55:42)
No12406 (マルコ さん) に返信
> 非表示、表示の切り替えを行いたいのですが、
> うまくいきません。
>  入力画面.txt項目.Enable=true

表示 / 非表示の切り替えであれば、Enabled プロパティではなく、
Visible プロパティを使ってみてください。

で。やり方は幾つかあるでしょうが、たとえばこんな感じで如何でしょう。
http://www.vb-user.net/junk/replySamples/2008.01.09.19.52/12406.zip

# VS2003 が手元に無かったので、メモ帳書き + 手動コンパイルです。
引用返信 編集キー/
■12454 / inTopicNo.5)  Re[2]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ マルコ (15回)-(2008/01/09(Wed) 21:08:26)
魔界の仮面弁士 さん ありがとうございました。
うまくいきました。ほんとにありがとうございました。

この応用で、フォームの削除とかもできるのでしょうか?
入力画面に削除ボタンを押すと、参照ボタンで開いたフォームを削除する仕様なのですが
可能でしょうか?


引用返信 編集キー/
■12457 / inTopicNo.6)  Re[3]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ ダッチ (181回)-(2008/01/09(Wed) 21:46:05)
No12454 (マルコ さん) に返信
> 魔界の仮面弁士 さん ありがとうございました。
> うまくいきました。ほんとにありがとうございました。
> 
> この応用で、フォームの削除とかもできるのでしょうか?
> 入力画面に削除ボタンを押すと、参照ボタンで開いたフォームを削除する仕様なのですが
> 可能でしょうか?

削除というのはフォームを閉じるということですよね。
それであれば可能ですよ。

フォームを閉じる時は Close メソッドを呼ぶだけです。簡単ですね。
魔界の仮面弁士さんのサンプルを例に言うと
変数 f を Show メソッドで開いているのと同じように
f に対して Close メソッドを呼んであげます。
コードはこのようになります。Button2 をあらかじめ用意しておいてください。

    Private WithEvents f As New Form2()
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        f.Close()
    End Sub

もちろんフォームを閉じるためには、フォームが開いている状態でないとダメですよ。

引用返信 編集キー/
■12460 / inTopicNo.7)  Re[4]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ マルコ (16回)-(2008/01/09(Wed) 21:57:20)
ダッチ さん、魔界の仮面弁士 さん ほんとにありがとうございました。

サンプルで試したらうまくいったのですが、
照会.show(サンプルで言うとf.showの部分)をしているところで
オブジェクト参照がオブジェクト インスタンスに設定されていません。
のエラーが出てしまいました。

サンプルでは、うまく動くので原因を調査しているのですが
よくわかりません。
このエラーは、どのようなときに発生するのでしょうか?


引用返信 編集キー/
■12463 / inTopicNo.8)  Re[5]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ 魔界の仮面弁士 (563回)-(2008/01/09(Wed) 22:12:59)
No12460 (マルコ さん) に返信
> 照会.show(サンプルで言うとf.showの部分)をしているところで
> オブジェクト参照がオブジェクト インスタンスに設定されていません。
> のエラーが出てしまいました。
> このエラーは、どのようなときに発生するのでしょうか?

そのエラー(NullReferenceException)は、(参照型の)変数に対して、
オブジェクトの実体(インスタンス)を割り当てていない状態で、
プロパティやメソッドを操作しようとした時に発生します。



具体的には、変数「照会」が空っぽ(Nothing)の状態になっている、という事でしょう。
たとえば、
 Dim f1 As Form = New Form()
 Dim f2 As New Form()
 Dim f3 As Form
 Dim f4 As Form = Nothing
 f1.Show()
 f2.Show()
 f3.Show()
 f4Show()
を実行した場合、f1 や f2 は表示されますが、
f3 や f4 は、NullReferenceException が発生しますね。
引用返信 編集キー/
■12465 / inTopicNo.9)  Re[6]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ ダッチ (182回)-(2008/01/09(Wed) 22:48:44)
今後のために参考になるサイトを紹介します。

オブジェクト指向プログラミング超入門
http://www.atmarkit.co.jp/fdotnet/basics/oop_index/index.html

この連載を最初から呼んでいくことをお勧めします。
そして、その中に「オブジェクト インスタンス」の説明も記載されています。
それがこれです。

第2回 クラスの定義からプログラム実行まで
http://www.atmarkit.co.jp/fdotnet/basics/oop02/oop02_02.html


引用返信 編集キー/
■12482 / inTopicNo.10)  Re[7]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ マルコ (17回)-(2008/01/10(Thu) 09:51:52)
魔界の仮面弁士、 ダッチ さん、ありがとうございます。

下記の記述をしているにもかかわらず
form2(照会画面)がnothingということは、何が原因なのでしょうか?
Private WithEvents f As New Form2()
よろしくお願いします。


引用返信 編集キー/
■12484 / inTopicNo.11)  Re[8]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ 魔界の仮面弁士 (564回)-(2008/01/10(Thu) 09:55:32)
No12482 (マルコ さん) に返信
> 下記の記述をしているにもかかわらず
> form2(照会画面)がnothingということは、何が原因なのでしょうか?
> Private WithEvents f As New Form2()

とりあえず、思いつく可能性としては:


(1) その変数に、Nothing を代入している部分があった。

(2) 変数のスコープを間違えており、実際にはそれとは別の変数を参照していた。

(3) 変数自体は Nothing では無いが、その Form 内に、
 NullReferenceException を発生させる処理が含まれていた。
引用返信 編集キー/
■12487 / inTopicNo.12)  Re[9]: フォームから別フォームのテキストボックスをコントロールしたい
□投稿者/ マルコ (18回)-(2008/01/10(Thu) 10:21:22)
魔界の仮面弁士 さん、ありがとうございました。

助かりました。
原因は、(1)でした。
ほんとにありがとうがざいました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -