---
title: "Från VB till C#"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/153025-från-vb-till-c"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "thevice"
published: "2006-10-26T19:53:23.000Z"
updated: "2006-11-01T15:11:18.000Z"
replies: 11
views: 1026
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/153025-från-vb-till-c"
---

# Från VB till C#

## #1 — thevice, 2006-10-26T19:53Z

Hejsan, jag håller på att försöka göra om min sida till C# från VB. Främst för att jag vill lära mig C# bättre.
Nu till problemet, jag har googlat, sökt i forumet + andra forum men hittar ingen stans där det står hur man använder e.Item.FindControl på det settet som jag använder det på i VB.

```
    Sub dlGalleryMembers_ItemdataBound(ByVal obj As Object, ByVal e As DataListItemEventArgs)

        If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then

            CType(e.Item.FindControl("hlEnlargeGalleryImageMembers"), HyperLink).NavigateUrl = "member.aspx?id=" + CType(e.Item.DataItem, System.Data.DataRowView).Row("id").ToString()
            CType(e.Item.FindControl("imgGalleryImageMembers"), Image).ImageUrl = "img/m_photos/" + CType(e.Item.DataItem, System.Data.DataRowView).Row("id").ToString() + "_thumbnail.jpg"
            CType(e.Item.FindControl("imgGalleryImageMembers"), Image).Width = "50"
            CType(e.Item.FindControl("imgGalleryImageMembers"), Image).Height = "50"

        End If

    End Sub
```

Jag vill fixa den koden till C#, jag försökte själv men det vart nog inte så bra, ger olika felmeddelanden hela tiden:

```
public void dlGalleryMembers_ItemdataBound(object obj, DataListItemEventArgs e)
{
    if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) {

        (e.Item.FindControl("hlEnlargeGalleryImageMembers") as HyperLink).NavigateUrl = "member.aspx?id=" + (e.Item.DataItem as System.Data.DataRowView).Row["id"].ToString();
        (e.Item.FindControl("imgGalleryImageMembers") as Image).ImageUrl = "img/m_photos/" + (e.Item.DataItem as System.Data.DataRowView).Row["id"].ToString() + "_thumbnail.jpg";
        (e.Item.FindControl("imgGalleryImageMembers") as Image).Width = 50;
        (e.Item.FindControl("imgGalleryImageMembers") as Image).Height = 50;

    }
}
```

Det är säkert 100 fel i den koden eftersom att den inte fungerar. Men jag har försökt iaf. (;

Tack på förhand!
/ TheVice

Permalänk: https://www.webforum.nu/p/153025

## #2 — Jon, 2006-10-26T20:30Z

Lite på känn bara, kan innehålla fel men ungefär:

```
private void dlGalleryMembers_ItemDataBound(object source,
                                   RepeaterCommandEventArgs e)
{
   if (e.Item.ItemType == ListItemType.Item|| e.Item.ItemType == ListItemType.AlternatingItem)
      {

          HyperLink lnk = (HyperLink )e.Item.FindControl("hlEnlargeGalleryImageMembers");
          System.Data.DataRowView dv = (System.Data.DataRowView)e.Item.DataItem;
          string id = dv.Row["id"].ToString();
          lnk.NavigateUrl = "member.aspx?id=" + id;
          lnk.Width = 50;
          //osv
      }

}
```

Man kan använda as ungefär som du gör men är man lite novis på c# ser det nog mest rörigt tror jag att man kan tycka :)

Permalänk: https://www.webforum.nu/p/1890577

## #3 — Josef, 2006-10-26T20:30Z

Kanske?

```
public void dlGalleryMembers_ItemdataBound(object obj, DataListItemEventArgs e)
{
    if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) {

        (HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers").NavigateUrl = String.Format("member.aspx?id={0}", (DataRowView)e.Item.DataItem.Row["id"].ToString());
        (Image)e.Item.FindControl("imgGalleryImageMembers").ImageUrl = String.Format("img/m_photos/{0}_thumbnail.jpg", (DataRowView)e.Item.DataItem.Row["id"].ToString());
        (Image)e.Item.FindControl("imgGalleryImageMembers").Width = 50;
        (Image)e.Item.FindControl("imgGalleryImageMembers").Height = 50;
    }
}
```

Permalänk: https://www.webforum.nu/p/1890578

## #4 — wallabou, 2006-10-26T20:59Z

> **Josef skrev:**
>
> Kanske?
>
> ```
> public void dlGalleryMembers_ItemdataBound(object obj, DataListItemEventArgs e)
> {
>     if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) {
> 
>         (HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers").NavigateUrl = String.Format("member.aspx?id={0}", (DataRowView)e.Item.DataItem.Row["id"].ToString());
>         (Image)e.Item.FindControl("imgGalleryImageMembers").ImageUrl = String.Format("img/m_photos/{0}_thumbnail.jpg", (DataRowView)e.Item.DataItem.Row["id"].ToString());
>         (Image)e.Item.FindControl("imgGalleryImageMembers").Width = 50;
>         (Image)e.Item.FindControl("imgGalleryImageMembers").Height = 50;
>     }
> }
> ```

Nästan, men tror du måste ha en till parantes för att det ska gå.

```
public void dlGalleryMembers_ItemdataBound(object obj, DataListItemEventArgs e)
{
    if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem)) {

        ((HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers")).NavigateUrl = String.Format("member.aspx?id={0}", ((DataRowView)e.Item.DataItem).Row["id"].ToString());
        ((Image)e.Item.FindControl("imgGalleryImageMembers")).ImageUrl = String.Format("img/m_photos/{0}_thumbnail.jpg", ((DataRowView)e.Item.DataItem).Row["id"].ToString());
        ((Image)e.Item.FindControl("imgGalleryImageMembers")).Width = 50;
        ((Image)e.Item.FindControl("imgGalleryImageMembers")).Height = 50;
    }
}
```

Permalänk: https://www.webforum.nu/p/1890584

## #5 — voigtann1, 2006-10-26T21:20Z

Kan rekommenderar att du besöker: <http://www.carlosag.net/Tools/CodeTranslator/Default.aspx>

Smart verktyg som kan skriva om kod från VB.NET -\> C# eller C# -\>VB.NET

Permalänk: https://www.webforum.nu/p/1890592

## #6 — thevice, 2006-10-26T21:53Z

Ojoj vad fort det gick att få svar. (;

Tack voigtann1 för den länken! Den kommer hjälpa mig mycket!

Testade med wallabous hjälp men fick felmeddelandet:

```
System.InvalidCastException: Unable to cast object of type 'System.Data.Common.DbDataRecord' to type 'System.Data.DataRowView'.

Line 50:                 ((HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers")).NavigateUrl = String.Format("member.aspx?id={0}", ((DataRowView)e.Item.DataItem).Row["id"].ToString());
```

Sedan så testade jag att köra koden i på länken. Men då vart det felmeddelandet:

```
CS0118: 'System.Data.DataRowView.Row' is a 'property' but is used like a 'method'

Line 50:                 ((HyperLink)(e.Item.FindControl("hlEnlargeGalleryImageMembers"))).NavigateUrl = ("member.aspx?id=" + ((System.Data.DataRowView)(e.Item.DataItem)).Row("id").ToString());
```

Har noll koll vad dem menar med både felmeddelandena?

EDIT

Svarade visst för snabbt, såg att i koden som dem skrev så hade dem ("id") ändrade till \["id"\] då försvann felet på den raden.
Men fick sedan fel på raden under:

```
CS0029: Cannot implicitly convert type 'string' to 'System.Web.UI.WebControls.Unit'

((Image)(e.Item.FindControl("imgGalleryImageMembers"))).Width = "50";
```

Det är samma felmeddelande som jag fick när jag försökte själv.

EDIT

Är verkligen för snabb. ;P

Tog bort paranteserna på 50 och då försvannf elmeddelandet. Men är på samma fel igen som jag fick på wallabous kod. Hjälp? (;

Tack på förhand!
/ TheVice

Permalänk: https://www.webforum.nu/p/1890605

## #7 — sorting, 2006-10-27T07:05Z

Detta borde fungera om det är pixlar du ska använda.

```
((Image)(e.Item.FindControl("imgGalleryImageMembers"))).Width = Unit.Pixel(50);
```

Och om det är procent.

```
((Image)(e.Item.FindControl("imgGalleryImageMembers"))).Width = Unit.Percentage(50);
```

Permalänk: https://www.webforum.nu/p/1890666

## #8 — thevice, 2006-10-27T10:12Z

tack Sorting, men jag löste det problemet genom att ta bort paranteserna på 50. Problemet är nu det hära:

> **thevice skrev:**
>
> ```
> System.InvalidCastException: Unable to cast object of type 'System.Data.Common.DbDataRecord' to type 'System.Data.DataRowView'.
> 
> Line 50:                 ((HyperLink)e.Item.FindControl("hlEnlargeGalleryImageMembers")).NavigateUrl = String.Format("member.aspx?id={0}", ((DataRowView)e.Item.DataItem).Row["id"].ToString());
> ```

Kan felet bero på den andra koden som jag har? Koden som ladda med Page_Load.

Tack på förhand!
/ TheVice

Permalänk: https://www.webforum.nu/p/1890728

## #9 — Josef, 2006-10-27T10:28Z

Vad händer om du bara skriver DataRow istället för DataRowView?

Permalänk: https://www.webforum.nu/p/1890736

## #10 — mozilla, 2006-10-27T10:34Z

Eller vad händer om du skriver "DbDataRecord" istället för "DataRowView"? :)

Sedan går det väl bra om du bara skriver.

```
((DbDataRecord)e.Item.DataItem)["id"].ToString()
```

Permalänk: https://www.webforum.nu/p/1890740

## #11 — thevice, 2006-10-27T10:42Z

Tack mozilla det fungerade!

Nu har jag bara en fråga till, att göra på det här settet är det bättre för prestandan eller sämre?

Permalänk: https://www.webforum.nu/p/1890741

## #12 — martinpartin, 2006-11-01T15:11Z

Checka denna

<http://www.developerfusion.co.uk/utilities/convertcsharptovb.aspx>

Permalänk: https://www.webforum.nu/p/1892078

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/153025-från-vb-till-c
