Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hur ändra i Form från annan klass?

Postades av 2006-06-27 22:49:30 - Thomas Backman, i forum c# (c-sharp), Tråden har 5 Kommentarer och lästs av 923 personer

Hej!
Jag håller på med ett litet projekt för att lära mig C# och .NET i allmänhet, har tidigare bara kodat C/C++ med windows-APIt.
Nu är det så att jag har en Form (mainForm) med en del kontroller i; de flesta ligger inuti en egen kontroll (PropertyTree, se http://www.codeproject.com/cs/miscctrl/propertytree.asp).
Från den klassen kommer man förstås åt kontrollerna via this.kontrollNamn utan problem.

Men, om jag vill göra det från en annan klass, hur ska jag då bära mig åt?
För att vara mera specifik så handlar det om att läsa in inställningar (i en annan klass) och uppdatera formen enligt dem (värden i TextBoxar, vad som ska och inte ska vara ikryssat osv).

Jag har tänkt på detta både framifrån och bakifrån men jag kommer inte på någon smidig lösning.
Hjälp uppskattas!


Svara

Sv: Hur ändra i Form från annan klass?

Postades av 2006-06-28 08:24:31 - Pontus Wång

Det är inte mellan olika klasser du vill accessa dina egenskaper, det är mellan olika objekt.
Exempel:
Jag har klasserna Form, TextBox och MinKlass, i mitt programs entrypoint så skapas ett objekt av typen Form med namnet MainForm. I MainForm skapas objektet ManipulerarTextBox av typen MinKlass och på objektet MainForm ligger ett objekt av typen TextBox med namnet TextLåda. För att objektet ManipulerarTextBox ska kunna nå objektet TextLåda så måste jag låta MainForm som äger båda objekten tilldela ManipulerarTextBox en referens till TextLåda.

När du gör ngt med this.kontrollNamn så är this den lokala referensen till ditt objekt, så i formuläret kan du t.ex. lägga till en property som ser ut så här:

public PropertyTree GetPropertyTree { get { return <namnet på ditt PropertyTree>; } }

Sedan kan du nå den propertien från alla de ställen du når formuläret.


Svara

Sv:Hur ändra i Form från annan klass?

Postades av 2006-06-28 10:30:24 - Thomas Backman

Visst har du rätt i att det är olika objekt; men även olika klasser i mitt fall. ;-)

Förstår jag dig rätt att du menar såhär? I mainForm.Designer.cs (där VS.NET sparar all info/design av formen):

...
private WRM.Windows.Forms.PropertyPane ppHotkeys;

        public WRM.Windows.Forms.PropertyPane ppHotKeys
        {
            get
            {
                return ppHotkeys;
            }
        }
...

Sedan i en annan klass/annat objekt:
public void EnFunktion()
{
        mainForm.ppHotKeys.Controls.MinKontroll.Enabled = false;
}


Kod liknande den ovan fungerar iallafall inte, då den inte låter mig komma åt ppHotKeys (med stort K, som i propertien) från det andra objektet.
Jag antar att jag gör något fel, men vad?


Svara

Sv: Hur ändra i Form från annan klass?

Postades av 2006-06-28 10:50:07 - Pierre Rasmussen

Som det är nu har du bara läsrättighter. lägg till "put" i propertyn också:

public WRM.Windows.Forms.PropertyPane ppHotKeys
{
get
{
return ppHotkeys;
}
put
{
pphotkeys = value;
}
}


Svara

Sv:Hur ändra i Form från annan klass?

Postades av 2006-06-28 12:03:41 - Thomas Backman

set menar du, antar jag? :)
Jag la till den också, men ingen skillnad. Jag tror dock att jag vet varför.
mainForm är ju namnet på klassen, i Program.cs skapas en instans av den:

        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new mainForm());
        }


Alltså är det väl inte mainForm jag komma åt, utan instansen av den klassen som skapats... Eller hur?
Hur får jag tag på den isåfall?

Uppdatering: Jag har löst det!
Jag gjorde om konstruktorn till den andra klassen (OptionsInstance) till
...
mainForm main;
public class OptionsInstance (mainForm f)
{
    this.main = f;
}


Sedan var det bara att använda den referensen.
Tack för era tips!


Svara

Sv: Hur ändra i Form från annan klass?

Postades av 2006-06-28 13:51:42 - Pierre Rasmussen

Så här på rak arma så kommer jag bara på två sätt:

Det kanske mest klassiska sättet är att skicka med en referens till objectet ( i ditt fall formuläret) för att på så sätt komma åt de publika objekten.

Ett annat sätt är att använda sig utav events. Goolga lite så hittar du massa exempel. Kan startk rekomendera www.codeproject.com


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 812
27 960
271 761
559
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies