0

Master.cs ファイル

    ChatUserControl user1 = new ChatUserControl();
                         ChatUserControl user2 = new ChatUserControl();
                         ChatUserControl user3 = new ChatUserControl();
                         divChatUserControlCover.Controls.Add(user1);
                         divChatUserControlCover.Controls.Add(user2);
                         divChatUserControlCover.Controls.Add(user3);

private void BindUserControls()
            {

                                 ChatUserControl user1 = divChatUserControlCover.FindControl("user1") as ChatUserControl;
             }

ChatUserControl.cs

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ChatUserControl.ascx.cs"
    Inherits="MetamorphismApp.ChatUserControl" %>

<asp:Timer ID="timer1" runat="server" OnTick="timer1_Tick" Interval="5000">
</asp:Timer>
<div id="divChatWindow" class="clChatWindow">
    <div>
        <asp:Label runat="server" Text='<%# Eval("username") %>' class="divHeader" ID="lblChatFriend"></asp:Label>
        <asp:Image ID="imgFriend" runat="server" CssClass="classFriendImage" />
        <asp:LinkButton ID="lbClose" runat="server" CommandName="Close" CssClass="lbClose"
            OnClick="lbClose_Click">Close</asp:LinkButton></div>
    <div class="chatText" id="idChatText" runat="server">
        <asp:UpdatePanel ID="UpdatePanel" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="timer1" EventName="Tick" />
                <asp:AsyncPostBackTrigger ControlID="btnSendChat" EventName="Click" />
            </Triggers>
            <ContentTemplate>
                <asp:Repeater runat="server" ID="rpChatMessages">
                    <ItemTemplate>
                        <asp:Image ID="imageForFriend" runat="server" CssClass="clFriendsImage" ImageUrl='<%# "HttpImageHandler.jpg?username=" +  DataBinder.Eval(Container.DataItem,"fromusername").ToString() %>' />
                        <asp:Label ID="chatMessage" runat="server" Text='<%# Eval("Message") %>'></asp:Label>
                        <br>
                    </ItemTemplate>
                </asp:Repeater>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    <asp:TextBox ID="txtChatMessage" runat="server" Width="142px" CssClass="clChatMessage" EnableViewState="true"
        TextMode="MultiLine"></asp:TextBox>
    <asp:LinkButton ID="btnSendChat" runat="server" CommandName="Insert" CommandArgument='<%# Eval("username") %>'
        OnClick="btnSendChat_Click">Send</asp:LinkButton>

</div>

マスター.cs

private void BindUserControls()
        {

                             ChatUserControl user1 = divChatUserControlCover.FindControl("user1") as ChatUserControl;
         }

user1 コントロールの BindUserControls でエラーが発生します。オブジェクト参照がオブジェクトのインスタンスに設定されていません

4

3 に答える 3

0

動的コントロールは、ポストバックごとに (適切に) 再作成する必要があります。私は通常、InitまたはLoadViewStateでそれらを再作成します。

こちらも参照

于 2012-07-26T20:22:43.900 に答える
0

最も可能性が高いのは、コントロールをインスタンス化して div に配置するコードが呼び出されていないことです。さらにイベントを発生/処理できるように、ポストバック時にもコントロールが作成されていることを確認してください。

于 2012-07-26T19:26:46.943 に答える
0

ユーザー コントロールは、私が行った方法ではインスタンス化できません。それを行う別の方法があります。それは Page_LoadControl メソッドを使用しています。

于 2012-07-28T06:44:55.120 に答える