webForumDet fria alternativet

Hjälp med att översätta från VB till C#

.NET

7 svar · 349 visningar · startad av Engine^

Medlem sedan dec. 20003 887 inlägg
Frågan#1

Jag sitter och kollar på Using ASP.NET Code-Behind Without Visual Studio.NET och jag tycker det är väldigt intressant. Tyvärr, så är VB inte min kopp med te...

Skulle någon kunna hjälpa till med översättning av deklarationerna i den här kodsnutten till C#? Det är väl mest WithEvents och Handles jag inte får något grepp om, men all hjälp uppskattas.

Public Class WebForm2
    Inherits System.Web.UI.Page
    Protected WithEvents Button1 As System.Web.UI.WebControls.Button
    Protected WithEvents Label1 As System.Web.UI.WebControls.Label

    Private Sub Button1_Click(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles Button1.Click

        Label1.Text = "I was clicked at: " & System.DateTime.Now

    End Sub
End Class
Medlem sedan dec. 20003 887 inlägg
#2

Jag tror jag har kommit fram till att Handles i VB motsvaras i C# av att man använder sig av new System.EventHandler(), men hur detta hänger ihop med WithEvents och hur/var EventHandlern ska skrivas undviker mig än så länge :l

Medlem sedan jan. 20012 204 inlägg
#3
Protected WithEvents Button1 As System.Web.UI.WebControls.Button

Vs.net genererar detta när du i detta fall slänger ut en button i aspx sida.

Rätta mig om jag har fel men gör inte "WithEvents" att du kan använda den efter "Handles", eller funkar det annars också?

Medlem sedan dec. 20003 887 inlägg
#4

Jo, det är precis så den fungerar, men jag är mer nyfiken på hur man implementerar detta med C#. Jag har än så länge problem med att instantiera EventHandlern. Jag har dock hittat ett trevligt exempel på MSDN med Events och delegates, så en lösning borde vara klar snart.

Medlem sedan dec. 20003 887 inlägg
#5

Tja... jag har väl fått till en EventHandler, men långt ifrån på det sätt jag vill är jag rädd för...

cbtest.aspx

<%@ Page Language="C#" AutoEventWireup="False" Debug="True" Src="/codebehind/cbtest.aspx.cs" Inherits="cTest"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
  <title>CodeBehind test</title>
</head>

<body>
  <form id="frmTest" method="post" runat="server">
    <asp:Button id="btnTest" Text="Button" Onclick="btnTest_Click" runat="server" />
    <br>
    <asp:Label id="lblTest" runat="server">Test</asp:Label>
  </form>
</body>

</html>

och cbtest.aspx.cs

using System;
using System.ComponentModel;

public class cTest : System.Web.UI.Page
{
  protected System.Web.UI.WebControls.Label lblTest = new System.Web.UI.WebControls.Label();
	
  public void btnTest_Click(object objSrc, EventArgs e)
  {
    lblTest.Text = "Klickad: " + System.DateTime.Now;
  }
}

Det jag vill åstadkomma är att komma bort från att sätta OnClick="btnTest_Click" i själva <asp:Button>-taggen och istället bygga en EventHandler för taggen, som hanterar ett onclick, men det verkar vara betydligt svårare än vad jag trodde från början. Det verkar ju barnsligt enkelt att göra det med VB :l så jag tar gärna emot tips vad gäller att göra detsamma i C#.

Medlem sedan juni 20022 599 inlägg
#6

Om man tjuvkikar i VS.NET så gör den ungefär så här:

using System;
using System.ComponentModel;

public class cTest : System.Web.UI.Page
{
  protected System.Web.UI.WebControls.Label lblTest;
  protected System.Web.UI.WebControls.Button btnTest;

  override protected void OnInit(EventArgs e)
  {
	[b]this.btnTest.Click += new System.EventHandler(btnTest_Click);[/b]
	base.OnInit(e);
  }

  public void btnTest_Click(object objSrc, EventArgs e)
  {
    lblTest.Text = "Klickad: " + System.DateTime.Now;
  }
}

Det funkar även att lägga den fetmarkerade raden i events som kör efter OnInit, tex Load.

Medlem sedan dec. 20003 887 inlägg
#7

Nämen :) Det ser ju faktiskt inte alls så komplicerat ut som jag hade väntat mig... helt plötsligt vill jag inte sitta på jobbet nu... jag vill hem och testa vidare ;)

Man tackar niko!

Medlem sedan mars 200348 inlägg
#8

http://www.ellkay.com/ConvertVB2CSharp.htm

kan kanske vara "go" att kolla på om du har fler konverteringar att göra.

285 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
130 ms — deklarationer (db)
0 ms — hämta statistik (cache)
148 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)