Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Come fare a gestire un oggetto da libreria di classi

    Ho il seguente problema...
    Allora vorrei controllare un label da una libreria di classi o da una dll ma la procedura è molto più complicata di quanto speravo

    vi riporto il codice così potete farvi un'idea

    questa è la libreria di classi
    codice:
    Imports Microsoft.VisualBasic
    Namespace test
        Public Class Class1
            Inherits System.Web.UI.Page
    
            Sub aaa()
                Dim datlab As System.Web.UI.WebControls.Label
                datlab = DirectCast(Me.FindControl("datlab" & "1"), System.Web.UI.WebControls.Label)
                datlab.Text = "aaaaaaaaa"
            End Sub
    
        End Class
    End Namespace
    Default.aspx.vb
    codice:
    Imports test
    Partial Class findcontrol_Default
        Inherits System.Web.UI.Page
        Dim am As New Class1
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            am.aaa()
        End Sub
    End Class
    Default.aspx
    codice:
    <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="findcontrol_Default" %>
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <asp:Label ID="datlab1" runat="server" Text="Label"></asp:Label>
    </body>
    </html>
    Mi restituisce l'errore "Riferimento a un oggetto non impostato su un'istanza di oggetto." nella libreria di classi a datlab.Text = "aaaaaaaaa"

    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    :master: a me sembra un grandissima sciocchezza fare in questo modo comunque prova se va

    codice:
        <form id="form1" runat="server">
        <div>
            <asp:Button ID="Button1" runat="server" Text="Button" />
            <hr />
            <asp:Label ID="datlab1" runat="server" Text="Label"></asp:Label>
    
        </div>
        </form>
    codice:
    Option Strict On
    
    
    Partial Class prove_a
        Inherits System.Web.UI.Page
    
    
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    
        End Sub
    
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim j As New test.Class1(Me)
            j.aaa()
        End Sub
    End Class
    
    
    Namespace test
        Public Class Class1
    
            Public Sub New(ByVal p As Page)
                Me._page = p
            End Sub
    
            Private ReadOnly _page As Page
    
            Sub aaa()
                Dim datlab As System.Web.UI.WebControls.Label
                datlab = TryCast(_page.FindControl("datlab" & "1"), System.Web.UI.WebControls.Label)
                If datlab IsNot Nothing Then
                    datlab.Text = "aaaaaaaaa"
                End If
    
            End Sub
    
        End Class
    End Namespace
    Pietro

  3. #3
    Ha senzo se vorrei proteggere tutto il lavoro che ho fatto con una dll.
    Ovviamente quello che ho postato su era solo un esempio per capire come si fa
    Comunque perfetto! Funziona! Non si smette mai di imparare!

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da doals
    Ha senzo se vorrei proteggere tutto il lavoro che ho fatto con una dll.
    Ovviamente quello che ho postato su era solo un esempio per capire come si fa
    Comunque perfetto! Funziona! Non si smette mai di imparare!
    Hai ragione, ciao
    Pietro

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Bah, comunque io farei anche una cosa tipo (senza provare, al volo):

    Classe:
    codice:
    Namespace Test
        Public Class Class1
            Private pvtPage As Page
            Public WriteOnly Property pagina()
                Set(ByVal value)
                    pvtPage = value
                End Set
            End Property
    
            Public ReadOnly Property etichetta() 
                Get
                    Return CType(pvtPage.FindControl("datlab"), Label).Text
                End Get
            End Property
        End Class
    End Namespace
    Pagina:
    codice:
    <asp:Label ID="datlab" runat="server" Text="TESTO DI PROVA" visible="false"></asp:Label>
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            If Not IsPostBack Then
                Dim testclasse As New Test.Class1
                testclasse.pagina = Me
                Response.Write(testclasse.etichetta)
            End If
    End Sub

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.