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

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

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

Re[3]: マウスポインターをオリジナルにする


(過去ログ 122 を表示中)

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

■73074 / inTopicNo.1)  マウスポインターをオリジナルにする
  
□投稿者/ よしむら (41回)-(2014/08/16(Sat) 11:11:24)

分類:[.NET 全般] 

c#でプログラミングをしています。visual studio2010を使っています。

こちらのサイト
http://koseics.blog66.fc2.com/blog-entry-10.html
を参考に、オリジナルのマウスポインターのアプリケーションをつくりたいのですが、

Cursor myCursor = new Cursor(asm.GetManifestResourceStream(asm.GetName().Name + ".カーソル名.cur"));

の部分に

NullReferenceExceptionはハンドルされませんでした。

というエラーが出てしまいます。

追加場所は、コンストラクターとメインフォームのロードイベントに書いてみましたが結果は同じでした。


ソリューションには正しく追加されているので、なぜNullになってしまうのかわかりません。

わかる方よろしくお願いします。
引用返信 編集キー/
■73075 / inTopicNo.2)  Re[1]: マウスポインターをオリジナルにする
□投稿者/ Jitta (151回)-(2014/08/16(Sat) 11:37:11)
No73074 (よしむら さん) に返信

 41回目の投稿ならば、わかっているとは思いますが。。。

> こちらのサイト
> http://koseics.blog66.fc2.com/blog-entry-10.html
> を参考に、オリジナルのマウスポインターのアプリケーションをつくりたいのですが、
>
> Cursor myCursor = new Cursor(asm.GetManifestResourceStream(asm.GetName().Name + ".カーソル名.cur"));
>
> の部分に
>
> NullReferenceExceptionはハンドルされませんでした。
>
> というエラーが出てしまいます。
>
> 追加場所は、コンストラクターとメインフォームのロードイベントに書いてみましたが結果は同じでした。


まずは、どの変数が null なのか、調べましょう。
その他のことは、その後です。

引用返信 編集キー/
■73087 / inTopicNo.3)  Re[2]: マウスポインターをオリジナルにする
□投稿者/ よしむら (43回)-(2014/08/17(Sun) 19:46:39)
No73075 (Jitta さん) に返信

myCursorがNullになっていました。
リソースに追加したカーソル名.curをうまく読めていないということがわかりました。

System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
Cursor myCursor = new Cursor(asm.GetManifestResourceStream(asm.GetName().Name + ".カーソル名.cur"));
this.Cursor = myCursor;

このように書いているのですが、リソース内のカーソル名.curを読み込めないのはなぜでしょうか?
引用返信 編集キー/
■73088 / inTopicNo.4)  Re[3]: マウスポインターをオリジナルにする
□投稿者/ tinq (16回)-(2014/08/17(Sun) 20:09:44)
No73087 (よしむら さん) に返信
本当にmyCursorがnullになったのでしょうか。new Cursorがnullを返すことはないと思いますが。

System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly();
string name = asm.GetName().Name + ".カーソル名.cur";
Stream s = asm.GetManifestResourceStream(name);
Cursor myCursor = new Cursor(s);
this.Cursor = myCursor;

のように分けてみてください。
たぶん、GetManifestResourceStreamがnullを返してCursorのコンストラクタが例外を吐いているのではないでしょうか
http://msdn.microsoft.com/ja-jp/library/xc4235zt(v=vs.110).aspx
nullを返す場合があるようなので、それをもとに調べてみるといいかと思います。
引用返信 編集キー/
■73143 / inTopicNo.5)  Re[3]: マウスポインターをオリジナルにする
□投稿者/ Jitta (152回)-(2014/08/21(Thu) 22:37:21)
No73087 (よしむら さん) に返信
 基本的にtinqさんが書かれているとおりです。

> myCursorがNullになっていました。
 提示されているコードでは、myCursor が Null だからといって NullReferenceException は発生しません。
ですから、「まずは、どの変数が null なのか、調べましょう」。
………「変数」と書いたのがまずいか?「何が null なのか、調べましょう」。
「asm.GetManifestResourceStream」が null を返しているはずです。
つまり、「new Cursor(Null)」というコードになっており、それがために NullReferenceException が発生しているはずです。

 で、なぜ、「asm.GetManifesyResourceStream」が null を返すのか。
GetManifestResourceNames メソッドでリソースの一覧がとれるようなので、確認してはどうでしょうか。

 あと、こんな情報もありますけど。
http://dobon.net/vb/dotnet/programing/vsresource.html

引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -