Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Strano errore

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    2

    Strano errore

    Ciao a tutti.
    Vorrei farvi una domanda, sto cercando di fare il gioco del labirinto con asp.net. ma ho un problema.
    Per le caselle uso delle textbox che ho modificato, ho aggiunto delle proprietà
    Destra
    sinistra
    sopra
    sotto
    tipo
    se nel desiner nella proprietà destra(ad esempio) gli assegno la textbox a destra, mi da questo errore:
    eccezione non gestita. Impossibile creare un oggetto di tipo Labirinto.tbxLabirinto dalla relativa rappresentazione di stringa 'tbxLabirinto7' per la proprietà 'destra'
    Sono nuovo di asp.net, ho soprattutto programmato su applicazioni desktop e non avevo questo problema
    poi devo anche fare un algoritmo per la autorisoluzione, sapete mica consigliarmi un algoritmo per trovare un nodo su un albero n-ario? Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    in design time tu scrivi solo una stringa per una proprietà di tipo textBox. Da qualche parte ci deve essere qualcosa che converta la tua stringa nell'oggetto e viceversa. Da qui l'errore.
    Se cerci su google qualcosa la trovi sul supporto in design time dei server control (c'era un bell'articolo in inglese di Dino Esposito che riassumeva tutta la faccenda, tra cui anche quella dei typeConverter).

    Non so però se dal convertitore puoi accedere ad un istanza della pagina o del ViewState e chedere un controllo specifico in base al nome.

    L'alternativaa (anche se poco ortodossa) sarebbe tenere queste proprietà di tipo stringa e creare delle proprietà protected con il metodo get che rappresentano le textbox vere e proprie.
    Nel metodo get prelevi il controllo con Page.FindControl o dal ViewState (credo sarebbe piu opportuno dal Viewstate ma non essendo una cosa che faccio tutti i giorni lascio il condizionale).

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    2
    anche se non è proprio carino al momento li faccio caricare nella page_load in questo modo dato che il labirinto è fisso 5x5:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    For Each tbx As Control In Me.form1.Controls
    Dim v = tbx.GetType
    Dim b = GetType(Labirinto.tbxLabirinto)
    If tbx.GetType Is GetType(Labirinto.tbxLabirinto) Then
    Dim Num As Integer = CType(tbx.ID.Substring(12, 2), Integer)
    If Num > 15 Then
    CType(tbx, tbxLabirinto).Sopra = FindControl("tbxLabirinto" & Num - 5)
    End If
    If Num < 31 Then
    CType(tbx, tbxLabirinto).Sotto = FindControl("tbxLabirinto" & Num + 5)
    End If
    If Num <> 11 And Num <> 16 And Num <> 21 And Num <> 26 And Num <> 31 Then
    CType(tbx, tbxLabirinto).Sinistra = FindControl("tbxLabirinto" & Num + 1)
    End If
    If Num <> 15 And Num <> 20 And Num <> 25 And Num <> 30 And Num <> 35 Then
    CType(tbx, tbxLabirinto).Destra = FindControl("tbxLabirinto" & Num + 1)
    End If
    End If
    Next
    End Sub

    grazie della risposta,vedo se riesco a farlo nel tuo modo che mi sembra migliore.
    Devo fare in modo che si autorisolva pure, l'unico modo è con una funzione ricorsiva come quella degli alberi no?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.