- PR -

ASP.NET ユーザコントロールについて

1
投稿者投稿内容
未記入
会議室デビュー日: 2005/10/15
投稿数: 3
投稿日時: 2005-10-15 10:22
こんにちは。NKといいます。
VB.NETでWEBページを作ろうと思っているのですが、
ユーザコントロールの作成および使用がうまくいきません。
内容としては、デバッグを実行すると
「オブジェクト参照がオブジェクト インスタンスに設定されていません」
と出力されてしまいます。

下記URLにソースを固めたものを格納しておくので、
お分かりになる方は教えていただけないでしょうか?

よろしくお願いします。

ソース格納URL
http://nknet.dyndns.org/dl_files/UC00000100.lzh
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2005-10-15 10:54
う〜ん、ソースコードをリンク先へ掲載しご質問を行うのは余りお勧めできませんよ。(^^;
「デバッグ作業を依頼」しているように、受け止められてしまいます。(丸投げともいう)

再現する必要最低限のコードもしくは文章にて、この掲示板に掲載しご質問されることをお勧め致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-15 11:19
こんにちは、じゃんぬ です。

ウイルス云々の話もありますし、情報の共有という概念上、
あぷろだなどの利用は、話が見えにくくなるのでお勧めできません。

で、変わりにソースを貼ろうと思ったのですが、
せめてご本人で例外が起きる場所は特定してください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
未記入
会議室デビュー日: 2005/10/15
投稿数: 3
投稿日時: 2005-10-15 11:26
申し訳ありませんでした。確かにそのとおりですね。
わからない箇所がわからない状態だったので・・・TT

プログラムの詳細ですが、
webform1 から uc00000100 を呼び出したいと考えています。

webform1:vb部

Public Class WebForm1
Inherits System.Web.UI.Page
Protected WithEvents Pairedlistbox1 As UserControlSample.PairedListBox
Protected WithEvents UC000001001 As UserControlSample.UC000000100

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

Private Sub WebForm1_Load(ByVal Sender As System.Object, ByVal e As System.EventArgs) Handles WebForm1.Load, MyBase.Load

If Not IsPostBack Then ' ブラウザが最初にこのページにヒットしたときは、true と評価します。

With UC000001001
.TextLabel1 = "22"
.TextLabel2 = "22"
.TextLabel3 = "22"
End With

webform1:HTML部

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="UserControlSample.WebForm1"%>
<%@ Register TagPrefix="UserControlSample" TagName="UC000000100" Src="UC000000100.ascx" %>
<%@ Register TagPrefix="UserControlSample" TagName="PairedListBox" Src="PairedListBox.ascx" %>

画面には
<P><!-- --><USERCONTROLSAMPLE:UC000000100 id="UC0000001001" runat="server"></USERCONTROLSAMPLE:UC000000100></P>


uc00000100:vb部

Public Class UC000000100
Inherits System.Web.UI.UserControl

Protected WithEvents Label1 As System.Web.UI.WebControls.Label
Protected WithEvents Label_migi1 As System.Web.UI.WebControls.Label
Protected WithEvents Label2 As System.Web.UI.WebControls.Label
Protected WithEvents Label_migi2 As System.Web.UI.WebControls.Label
Protected WithEvents Label3 As System.Web.UI.WebControls.Label


#Region " Web フォーム デザイナで生成されたコード "

' この呼び出しは Web フォーム デザイナで必要です。
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
' CODEGEN: このメソッド呼び出しは Web フォーム デザイナで必要です。
' コード エディタを使って変更しないでください。
InitializeComponent()
End Sub

#End Region


Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' ページを初期化する ユーザー コードをここに挿入します。
If Not IsPostBack Then ' ブラウザが最初にこのページにヒットしたときは、true と評価します。
Call SetProperties() ' コントロールに関する初期のプロパティを設定します。
End If
End Sub


' コントロールのプロパティ値を格納するためのプライベート変数 (既定値も設定されています)。
Private mLabel1 As String = "ListBox1" ' 最初のリスト ボックス全体に適用されるラベル
Private mLabel2 As String = "ListBox2" ' 2 番目のリスト ボックス全体に適用されるラベル
Private mLabel3 As String = "ListBox3" ' 3 番目のリスト ボックス全体に適用されるラベル


Public Property TextLabel1() As String
' 最初のラベルのテキストに関するプロパティ
Get
Return mLabel1
End Get
Set(ByVal Value As String)
mLabel1 = Value
Call SetProperties()
End Set
End Property

Public Property TextLabel2() As String
' 2 番目ラベルのテキストに関するプロパティ
Get
Return mLabel2
End Get
Set(ByVal Value As String)
mLabel2 = Value
Call SetProperties()
End Set
End Property

Public Property TextLabel3() As String
' 3 番目ラベルのテキストに関するプロパティ
Get
Return mLabel3
End Get
Set(ByVal Value As String)
mLabel3 = Value
Call SetProperties()
End Set
End Property

Private Sub SetProperties()

' ユーザー コントロール コンテナから変更できる構成コントロールのプロパティを設定します。
Label1.Text = mLabel1
Label2.Text = mLabel2
Label3.Text = mLabel3

End Sub
End Class


uc00000100:HTML部

<%@ Control Language="vb" AutoEventWireup="false" Codebehind="UC000000100.ascx.vb" Inherits="UserControlSample.UC000000100" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
下記抜粋


と記載しています。現時点でプログラムを実行すると、
webform1:vb部 の With UC000001001 .TextLabel1 = "22" で
オブジェクトがインスタンスに設定されていません。とメッセージが
出力され落ちてしまいます。

説明が下手なのですが、よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-10-15 11:48
こんにちは、じゃんぬ です。

引用:

未記入さんの書き込み (2005-10-15 11:26) より:

webform1:vb部 の With UC000001001 .TextLabel1 = "22" で
オブジェクトがインスタンスに設定されていません。とメッセージが出力され落ちてしまいます。


UC000001001 か、TextLabel1 がインスタンス化されていないのでしょう。
流石にこれは勉強して理解しないともっと先でも困ることになると思います。

また、例外の名前から検索することで、何が原因かもおのずとわかるハズです。

  NullReferenceException クラス

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2005-10-15 12:00
ながっ!というのは、置いといて、
引用:

Protected WithEvents UC000001001 As UserControlSample.UC000000100



引用:

<P><!-- --><USERCONTROLSAMPLE:UC000000100 id="UC0000001001" runat="server"></USERCONTROLSAMPLE:UC000000100></P>


の、コントロールのIDが違いますよね?

# 他にも気になる点はありますが、まずは...
未記入
会議室デビュー日: 2005/10/15
投稿数: 3
投稿日時: 2005-10-15 12:19
ご指摘ありがとうございます。

修正したら動作しました^^
単純ミスで申し訳ないです・・・

初めてユーザコントロールを使って見たので、
どこを調査すればわかりませんでした。

本当に、ありがとうございました!
1

スキルアップ/キャリアアップ(JOB@IT)