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