Avatar billede globen Nybegynder
26. februar 2007 - 12:41 Der er 7 kommentarer og
1 løsning

Applets i .net

Kan man ikke lave applikationer i .net der kan afvikles i en browser ligesom Applets i Java?
Avatar billede crazysnap Seniormester
26. februar 2007 - 13:45 #1
Hej globen,

Det kan man sagtens! Du skal dog lige være opmærksom på at det ikke er alle som kan køre disse applets fra deres computer (Det kræver Internet Explorer samt .Net).

Kan lige give et lille eksempel.

Lav et nyt C# project og tilføj nedenstående firstApplet.cs fil og kompilerer den til Applet.dll:


using System;
using System.Drawing;
using System.Windows.Forms;

namespace Applet
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class firstApplet : Control
    {
        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.Green);

            e.Graphics.DrawString("Test applet", new Font("Arial", 12), Brushes.Red, new PointF(10, 10));
        }
        public static void Main(string[] m)
        {
            Form f = new Form();
            firstApplet t = new firstApplet();
            t.Dock = DockStyle.Fill;
            f.Controls.Add(t);
            Application.Run(f);
        }

    }
}


Herefter lav en ny html fil indeholdende:


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>C# Web control I</title>
</head>
<body>


<object
    classid="http:Applet.dll#Applet.firstApplet"
    height="300"
    width="300">
</object>

</body>
</html>


Sørg for at Applet.dll'en ligger ved siden af html siden samt registrer siden i IIS. Så burde du kunne åbne siden i en internet explorer og se dit C# applet! :)
Du skal huske at åbne html siden via http:// og ikke via en lokal sti på harddisken ellers virker applet'et ikke.


Mvh.

- Snap :)
Avatar billede globen Nybegynder
26. februar 2007 - 14:58 #2
Mange tak.. Bare drop et svar
Avatar billede globen Nybegynder
26. februar 2007 - 14:58 #3
Det kan være du lige kan nå at fortælle mig hvordan man kan sende argumenter med?
Avatar billede crazysnap Seniormester
26. februar 2007 - 16:17 #4
Jeg ved faktisk ikke om man decideret kan sende argumenter fra html script med til et C# applet (Har aldrig haft brug for det). :)

Jeg har tilgengæld lavet et udvidet eksempel til dig hvor en usercontrol vises som applet (giver et bedre syn på hvordan et C# applet virker). :)


using System;
using System.Drawing;
using System.Windows.Forms;

namespace Applet
{
        //Apllet Klasse
    public class firstApplet : Control
    {
        protected override void OnPaint(PaintEventArgs e)
        {
            DrawString t;
           
            t = new DrawString("Draw som text");
            t.Dock = DockStyle.Fill;
            this.Controls.Add(t);
        }
    }


        //Usercontrol der vises i applet
    public class DrawString : UserControl
    {
        private string StrText = "";

        public DrawString(string strArgument)
        {
            StrText = strArgument;

            Button btnClick = new Button();
            btnClick.Text = "click";
            btnClick.Width = 60;
            btnClick.Height = 25;
            btnClick.Click += new EventHandler(btnClick_Click);
            this.Controls.Add(btnClick);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.Green);

            e.Graphics.DrawString(StrText, new Font("Arial", 12), Brushes.Red, new PointF(10, 30));
        }

        private void btnClick_Click(object sender, EventArgs e)
        {
            StrText += "- ";
            this.Refresh();
        }
    }
}



Hvis det er absolut nødvendigt for dig at kunne sende argumenter med til C# applet'et fra klient siden må det ihvertfald kunne gøres gennem en webservice.

Jeg ved ikke om der er andre som har input til hvordan man sender information videre til et C# applet fra klient siden? :)


Mvh.

- Snap
Avatar billede crazysnap Seniormester
26. februar 2007 - 16:31 #5
Fik lige en idé om hvordan det kunne gøres. :) kommer med et eksempel om lidt.
Avatar billede a1a1 Novice
26. februar 2007 - 16:33 #6
jeg "tror" at du bare kan sætte en property/variabel i dit <object> tag f.eks. <object strUserIP="102.123.123.123">
det kan man gøre på userControls  ;o)
Avatar billede crazysnap Seniormester
26. februar 2007 - 16:45 #7
Det tror jeg faktisk ikke man kan a1 (virker ihvertfald ikke hos mig), man kan tilgengæld lave en public metode og kalde den fra javascript. Jeg har lavet et eksempel på dette til dig nedenfor (en udvidelse af det fra før)! :)


C# koden, "public void setString(string text)" er tilføjet:


using System;
using System.Drawing;
using System.Windows.Forms;

namespace Applet
{
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    public class firstApplet : Control
    {
        private string strText = "Draw some text";

        protected override void OnPaint(PaintEventArgs e)
        {
            DrawString t;

            t = new DrawString(strText);

            t.Dock = DockStyle.Fill;
            this.Controls.Add(t);
        }

        public void setString(string text)
        {
            strText = text;
        }
    }

    public class DrawString : UserControl
    {
        private string StrText = "";

        public DrawString(string strArgument)
        {
            StrText = strArgument;

            Button btnClick = new Button();
            btnClick.Text = "click";
            btnClick.Width = 60;
            btnClick.Height = 25;
            btnClick.Click += new EventHandler(btnClick_Click);
            this.Controls.Add(btnClick);
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            e.Graphics.Clear(Color.Green);

            e.Graphics.DrawString(StrText, new Font("Arial", 12), Brushes.Red, new PointF(10, 30));
        }

        private void btnClick_Click(object sender, EventArgs e)
        {
            StrText += "- ";
            this.Refresh();
        }
    }
}



HTML-scriptet, Javascript er tilføjet der henter applet-objektet ud fra dets id og kalder dens public metoden:


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>C# Web control I</title>
<script type="text/javascript">
function passParameter(text)
{
    var elm = document.getElementById("appletId");
    elm.setString(text);
}
</script>
</head>
<body onload="passParameter('dette bliver smidt til applet\'et');">

<table>
    <tr>
        <td>
            <object id="appletId" classid="http:Applet.dll#Applet.firstApplet" height="300" width="300" viewastext>
            </object>
        </td>
    </tr>
</table>

</body>
</html>


Held og lykke med det! :)


Mvh.

- Snap
Avatar billede segato Nybegynder
27. februar 2007 - 11:00 #8
Du skal lige være opmærksom på når du bruger denne ".net applet" vil den ikke virke som java applets. Brugere skal først tilføje dit site som trusted site manuelt. Personligt har jeg haft rimelig dårlig erfaring med at bruge denne metode, håber .net snart kommer med en bedre løsning.
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