Avatar billede torbenmelander Nybegynder
19. marts 2003 - 16:11 Der er 15 kommentarer og
2 løsninger

VB >> C#

Oversæt User Control delen på denne side fra VB >> C#:

http://www.aspalliance.com/chrisg/default.asp?article=146 ...

Afsætter gerne flere point
Avatar billede burningice Nybegynder
19. marts 2003 - 16:34 #1
hvis du lige tænkte dig lidt om er det ikke så svært :)

MustInherit = abstract
WithEvents kender jeg ikke til i c#
ByVal bruger man ikke i c#
Tilføj en eventhandler til base.Load istedet for Handles
Husk ;'erne i slutningen af dine statements
husk {}'erne som start og slut på dine funtioner, rutiner m.m.
husk at c# er casesensetive, og at alle keywords er lovercase... altså, hedder det public class og ikke Public Class

Inherits = :, dvs at
Public MustInherit Class RolloverImage 
Inherits System.Web.UI.UserControl skrives
public abstract class RolloverImage : System.Web.UI.UserControl

Når du ærklerer ting i c#, svare denne syntaks i VB.net
Dim s As String = "hej"
til
String s = "hej";
i c#

properties skal ikke have keywordet property:
Property StatusText() As String i vb.net
svarer til
String StatusText i c#
Avatar billede simon.ulsnes Nybegynder
19. marts 2003 - 16:35 #2
I'm on it...
Avatar billede simon.ulsnes Nybegynder
19. marts 2003 - 16:45 #3
Eller med andre ord:

using System.Web.UI;
using System.Web.UI.WebControls;

public abstract class RolloverImage : UserControl
{
    protected HyperLink Link1;
    protected Image Image1;
   
    // Web From Designer Generated code
   
    private string _NormalImage = "";
    public virtual string NormalImageSrc
    {
        get { return _NormalImage; }
        set { _NormalImage = value; }
    }
   
    private string _RolloverImage = "";
    public virtual string RolloverImageSrc
    {
        get { return _RolloverImage; }
        set { _RolloverImage = value; }
    }
   
    private string _LinkURL = "";
    public virtual string LinkURL
    {
        get { return _LinkURL; }
        set { _LinkURL = value; }
    }
   
    private string _StatusText = "";
    public virtual string StatusText
    {
        get { return _StatusText; }
        set { _StatusText = value; }
    }
   
    private void Page_Load(object sender, EventArgs e)
    {
        string OverEvent = "";
        string OutEvent = "";
       
        OverEvent += Image1.ClientID + ".src='";
        OverEvent += _RolloverImage + "'; window.status='";
        OverEvent += _StatusText + "'; return true;";
       
        OutEvent += Image1.ClientID + ".src='";
        OutEvent += _NormalImage + "'; window.status=' '; return true;";
       
        Image1.ImageUrl = _NormalImage;
        Image1.Attributes.Add("name", Image1.ClientID);
        Link1.NavigateUrl = _LinkURL;
        Link1.Attributes.Add("onMouseOver", OverEvent);
        Link1.Attribute.Add("onMouseOut", OutEvent);
    }
}
Avatar billede simon.ulsnes Nybegynder
19. marts 2003 - 16:47 #4
Jeg tør ikke garantere at det er 100% korrekt (jeg har ikke tjekket for sålfjel). Desuden skal du binde Page_Load til sidens Load-event.
Avatar billede torbenmelander Nybegynder
19. marts 2003 - 17:08 #5
Hej begge to ...

Det var også nogenlunde det jeg kom frem til bortset lige fra abstract ordet :)

Tilføj en eventhandler til base.Load istedet for Handles

Hvordan gør man det ?

Desuden skal du binde Page_Load til sidens Load-event.

Hvordan gør man det ?

Synes i pointantallet er godt nok ... eller vil I ha' mere ?
Avatar billede burningice Nybegynder
19. marts 2003 - 17:11 #6
base.Load = new System.EventHandler(this.Page_Load);
min ikke det kan gøre det?

point er sq lige meget.. i hvert fald for mit vedkommende.. dog ved jeg at simon er rimelig ømme over dem, så han må for min skyld gerne få dem allesammen :P
Avatar billede torbenmelander Nybegynder
19. marts 2003 - 17:14 #7
Okay jeg prøver lige ... er det lige meget hvor det base halløj bliver sat ind henne ?
Avatar billede burningice Nybegynder
19. marts 2003 - 17:16 #8
hvis du bruger VS.Net eller lign, så er det nok smartest at smide ind i InitializeComponents() rutinen... hvis ikke skriver du den bare i din klasse's constructor
Avatar billede torbenmelander Nybegynder
19. marts 2003 - 17:25 #9
Jeg får denne fejl på base linien hvis den er inde i
public abstract class RolloverImage :

CS1519: Invalid token 'base' in class, struct, or interface member declaration

og denne hvis den står oppe sammen med using ...

CS0116: A namespace does not directly contain members such as fields or methods

....

din klasse's constructor

Har jeg sådan en ????? :)
Avatar billede torbenmelander Nybegynder
19. marts 2003 - 17:41 #10
Har prøvet at smide den ind i en InitializeComponents()...

Men det virker heller ikke :(
Avatar billede burningice Nybegynder
19. marts 2003 - 18:32 #11
torbenmelander>> prøv lige at paste HELE din kode til klassen her :)
Avatar billede simon.ulsnes Nybegynder
19. marts 2003 - 19:13 #12
cyberfessor >> Hey, du skal ikke gå og sprede rygter om mig... :)
Avatar billede burningice Nybegynder
19. marts 2003 - 19:19 #13
simon>> *host* rygter ?! *host*... du har måske allerede glemt at du nær havde tilmeldt min email til alverdens porno-mailinglister på grund af nogle sølle point? (ref. http://www.eksperten.dk/spm/328682) ? hehe
Avatar billede simon.ulsnes Nybegynder
19. marts 2003 - 19:46 #14
JUSTITSMORD! ;)
Avatar billede torbenmelander Nybegynder
19. marts 2003 - 22:05 #15
Hehe

Jeg tror jeg fandt ud af hvad cyberfessor mente og det ser ud til at virke ... men her er hele koden alligevel (det kunne jo være at det ikke var den mest optimale måde at gøre det på):

using System.Web.UI;
using System.Web.UI.WebControls;

public abstract class RolloverImage : UserControl
{
    protected HyperLink Link1;
    protected Image Image1;

    public RolloverImage() {
      base.Load += new System.EventHandler(this.Page_Load);
    }
   
    private string _NormalImage = "";
    public virtual string NormalImageSrc
    {
        get { return _NormalImage; }
        set { _NormalImage = value; }
    }
   
    private string _RolloverImage = "";
    public virtual string RolloverImageSrc
    {
        get { return _RolloverImage; }
        set { _RolloverImage = value; }
    }
   
    private string _LinkURL = "";
    public virtual string LinkURL
    {
        get { return _LinkURL; }
        set { _LinkURL = value; }
    }
   
    private string _StatusText = "";
    public virtual string StatusText
    {
        get { return _StatusText; }
        set { _StatusText = value; }
    }
   
    private void Page_Load(object sender, System.EventArgs e)
    {
        string OverEvent = "";
        string OutEvent = "";
       
        OverEvent += Image1.ClientID + ".src='";
        OverEvent += _RolloverImage + "'; window.status='";
        OverEvent += _StatusText + "'; return true;";
       
        OutEvent += Image1.ClientID + ".src='";
        OutEvent += _NormalImage + "'; window.status=' '; return true;";
       
        Image1.ImageUrl = _NormalImage;
        Image1.Attributes.Add("name", Image1.ClientID);
        Link1.NavigateUrl = _LinkURL;
        Link1.Attributes.Add("onMouseOver", OverEvent);
        Link1.Attributes.Add("onMouseOut", OutEvent);
    }
}

Ser det fornuftigt ud ?

simon.ulsnes >>Er du tilfreds med pointsne ?
Avatar billede burningice Nybegynder
19. marts 2003 - 23:38 #16
torbenmelander>> det ser abeskønt ud :)
Avatar billede torbenmelander Nybegynder
20. marts 2003 - 22:19 #17
Yes yes, men så lukker jeg da ... lidt flere point til simon.ulsnes så han ikke tuder ;-) hehe

Mange tak for hjælpen !!!

Jeg har forrsten fået et nyt problem med udvidelse af ovenstående control:
http://www.eksperten.dk/spm/331443
Håber I gider hjælpe med den også :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester