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

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

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

Re[4]: デザイナで配置したTextBoxでエラーが出てしまう


(過去ログ 108 を表示中)

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

■64390 / inTopicNo.1)  デザイナで配置したTextBoxでエラーが出てしまう
  
□投稿者/ くまん (1回)-(2012/11/30(Fri) 13:21:57)

分類:[VB.NET/VB2005 以降] 

2012/11/30(Fri) 13:28:19 編集(投稿者)

初歩的な質問になってしまうと思うのですが
http://hongliang.seesaa.net/article/18076786.html
こちらのコードで、「ProcessInputKey」関数中から
デザイナで配置したテキストボックスにmouse.LastX(Y)の値を入れようとすると
「System.NullReferenceException はハンドルされませんでした。」
とエラーが出てしまいます。
動的に生成された部品ではなくデザイナ上で
作成した部品を使いたいのですがやり方がわかりません

環境は
OS:Windows7のVB2010です。宜しくお願い致します

引用返信 編集キー/
■64402 / inTopicNo.2)  Re[1]: デザイナで配置したTextBoxでエラーが出てしまう
□投稿者/ howling (114回)-(2012/11/30(Fri) 15:54:17)
No64390 (くまん さん) に返信

こんにちわ。
まぁ、エラーを見る限り初歩的な内容だけど…
ブレークポイントつけて変数の中身見てますか?

そこでエラーが出ているのなら、
mouseがnullだったりするんじゃないか?と思うのですが。

多分、デザイナでぽいっとテキストボックス作ると、
名称がtextbox1とかになると思うのですが、
textbox1.text = "Hello"
みたいに使います。

で、このtextbox1は、デザイナコードの中で勝手に作ってくれるので、
Loadイベントあたりで触ってみてはいかがでしょう?
コンストラクタはダメですよ。InitializeComponent内で作ってくれてるので。
引用返信 編集キー/
■64405 / inTopicNo.3)  Re[1]: デザイナで配置したTextBoxでエラーが出てしまう
□投稿者/ shu (111回)-(2012/11/30(Fri) 16:07:32)
No64390 (くまん さん) に返信

記述されたコードを提示された方が
良いかと思います。

引用返信 編集キー/
■64410 / inTopicNo.4)  Re[2]: デザイナで配置したTextBoxでエラーが出てしまう
□投稿者/ くまん (3回)-(2012/11/30(Fri) 17:42:23)
2012/11/30(Fri) 17:46:43 編集(投稿者)
2012/11/30(Fri) 17:44:18 編集(投稿者)
2012/11/30(Fri) 17:43:25 編集(投稿者)
2012/11/30(Fri) 17:42:53 編集(投稿者)

2人方ありがとうございます。
コントロールの使用方法については理解しているつもりなので
その辺りに関しては大丈夫です。

自分でいろいろと調べてみた結果、
なぜか実行時にテキストボックスが消滅してしまっているようで、
その為に参照先が消え、ReferenceErrorが出ているようです・・・


Private Sub ProcessInputKey(ByRef m As Message)
Const RidInput As Integer = &H10000003
Dim headerSize As Integer _
= Marshal.SizeOf(GetType(RawInputHeader))
Dim size As Integer _
= Marshal.SizeOf(GetType(RawInput))
Dim input As RawInput
GetRawInputData(m.LParam, RidInput, _
input, size, headerSize)
Dim mouse As RawMouse = input.Mouse
'デバイスの番号と直前からの移動量を表示
Me.m_textBox.AppendText( _
String.Format("{0}({1},{2})" & Environment.NewLine, _
input.Header.Device, _
mouse.LastX, mouse.LastY))

'変更箇所はこの部分のみ
TextBox1.Text = mouse.LastX

End Sub
引用返信 編集キー/
■64412 / inTopicNo.5)  Re[3]: デザイナで配置したTextBoxでエラーが出てしまう
□投稿者/ howling (116回)-(2012/11/30(Fri) 18:07:02)
No64410 (くまん さん) に返信

えーっ!?
と思ってソース動かしてみました。
ほんとだ。ぬるり様だぁ。

さて、デザイナで作ったコントロールが追加されるのは、
先程書いた通りInitializeComponent内で作ってくれます。

普通にWindowsフォームアプリを作成すると、Newの中あたりにこの関数が呼ばれていることと、
デザイナのコード内にその定義を確認できます。

…さて、どこにあるでしょう?
コピペしただけだから無いんだよね。デザイナで作ったわけじゃないコードだし。
Newの最後あたりで呼んであげると動きます。
が、textboxを自分で作ってコントロールに追加していますよね?このコード。
こいつをControlに追加している部分を試しにコメントアウトしてみてください。
そしたら見えます。基本値0でマウス移動した分が表示されるだけだけどなー。

コントロールというより、デザイナで追加したコントロールがどうやって表示されるのかの理解が浅かったかな。

ではでは。
引用返信 編集キー/
■64417 / inTopicNo.6)  Re[4]: デザイナで配置したTextBoxでエラーが出てしまう
□投稿者/ くまん (4回)-(2012/11/30(Fri) 18:51:47)
2012/11/30(Fri) 19:41:05 編集(投稿者)


お陰様でForm_Loadイベントに
「InitializeComponent()」を書いて読み込ませるだけで
いつもの様にコントロールを配置して使用することが出来るようなりました。

取得した値についてはインクリメントで総移動量または
フラグスイッチングでエンコーダパルス値へそのまま変換出来そうなのでこれで問題ありません。

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

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -