Announcement

Collapse
No announcement yet.

Zugreifen auf Label in einem anderen Form

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zugreifen auf Label in einem anderen Form

    Hallo

    Ich versuche verzweifelt nach einer Möglichkeit, von einem Form (welches in einem Contentplaceholder eingebetet ist) auf das Label-Element in einem anderen Form (MasterPage) zu zugreifen. Bis jetzt habe ich nur die Möglichkeit über Request.Cookies und Response.Cookies gefunden, was nicht sehr effizient ist.

    Gibt es eine Möglichkeit das eleganter zu lösen?

    Danke und Gruss
    Xaver

  • #2
    Hallo,

    direkter Zugriff auf Controls in anderen Formularen ist zumindest verpönt und oft "gefährlich". Geeignete Wege sind (je nach Situation und Bedarf und Konstruktion der Formulare innerhalb der Anwendung):
    • öffentliche Eigenschaften, deren set-Teil das Label "bedient"
    • öffentliche Methode (d.h. analog zu set)
    • Delegates, die automatisch die Verknüpfung organisieren

    Viel Erfolg! Jürgen

    PS. Diese Frage hat nichts mit ADO.NET zu tun (Datenzugriff), sondern passt zu "Framework allgemein".

    Comment


    • #3
      Hallo Jürgen
      Besten Dank für die Antwort. Du hast natürlich hast Du recht, was den Zugriff auf Elemente ausserhalb des Ojekts betrifft. Ich sehe das genau so. Bei meiner Class-Library, welche ich nicht für ASP.NET geschrieben habe, sondern für normale Framework-Anwendungen, arbeite ich immer mit Public-Properties oder Methodes. Nur finde ich keine Möglichkeit, mit welcher ich den Zugriff machen kann. Ich habe schon verschiedenes probiert, unteranderem auch das folgende:
      Code:
      public partial class DreamlandMasterPage : System.Web.UI.MasterPage
      {
        public string LoggedOnUserName
        {
          get { return LoggedOnLabel.Text; }
          set { LoggedOnLabel.Text = value; }
        }
      Dann versuchte ich aus einem in der MasterPage (<%@ Register Src="LeftSiteBar.ascx" TagName="LeftSiteBar" TagPrefix="uc1" %>) registrierten Control-Objekt auf diese Eigenschaft zuzugreifen und zwar wie folgt:
      Code:
      public partial class LeftSiteBar: System.Web.UI.UserControl
      {
        protected void Logon_Click(object sender, EventArgs e)
        {
          Response.Cookies["UserID"].Value = UserID.Text;
          DoLogin();
          DreamlandMasterPage.LoggedOnUserName = UserID.Text;
        }
      }
      Leider komme da nicht weiter. Hier bekomme ich immer die Meldung "DreamlandMasterPage ist im aktuellen Kontext nicht vorhanden". Bei einem normalen .NET-Programm, sind immer alle Properties und Methoden sichtbar, welche im gleichen Namespace vorhanden sind, auch wen sie in einer anderen Klasse definiert sind. ASP.NET Klassen haben aber (so wie ich das sehe und von VS auch erstellt wurde) keinen eigenen Namespace. Was mache ich also falsch, dass das nicht geht?

      Besten Dank und viele Grüsse
      Xaver

      Comment


      • #4
        Hallo Xaver,

        Du hast Dich also insofern vertan, dass Du in ADO.NET statt in ASP.NET gelandet bist. Bei ASP.NET habe ich freilich keinerlei Ahnung.

        Vorschlag: Stelle die Frage in ASP.NET nochmals und erkläre sie hier als ungültig. Oder schreib die Forumsverwaltung an, dass sie das Thema verlagert.

        Gruß Jürgen

        Comment


        • #5
          Hallo Jürgen

          Danke für den Hinweis. Da hab ich mich wirklich komplet vertan


          Gruss
          Xaver

          Comment

          Working...
          X