Avatar billede troublemaker Nybegynder
21. september 2005 - 14:46 Der er 31 kommentarer og
1 løsning

Oversættelse af kode fra VB til C#

Har selv prøvet på at oversætte følgende kode men det er ikke lige lykkedes for mig.
Håber i kan hjælpe mig!



        Dim Mapper As New SortedList
        Mapper.Add("0", "Vælg")
        For Each Dir As String In My.Computer.FileSystem.GetDirectories(Server.MapPath("Bruger"))
            Mapper.Add(Dir, Dir)
        Next
        Mapper.Add("Ny", "Ny Mappe")
        DropDownList1.DataSource = Mapper
        DropDownList1.DataValueField = "Key"
        DropDownList1.DataTextField = "Value"
        DropDownList1.DataBind()
Avatar billede snepnet Nybegynder
21. september 2005 - 14:59 #1
Prøv denne:

SortedList mapper = new SortedList();
mapper.Add("0", "vælg");
DirectoryInfo[] directories = new DirectoryInfo(Server.MapPath("Bruger"))).GetDirectories();
foreach (DirectoryInfo dir in directories)
{
    mapper.Add(dir.Name, dir.Name);
}
mapper.Add("Ny", "Ny mappe");

DropDownList1.DataSource = mapper;
DropDownList1.DataValueField = "Key";
DropDownList1.DataTextField = "Value";
DropDownList1.DataBind();

mvh
Avatar billede softspot Forsker
21. september 2005 - 14:59 #2
Umiddelbart:

SortedList Mapper = new SortedList();
Mapper.Add("0", "Vælg");
foreach(string Dir in My.Computer.FileSystem.GetDirectories(Server.MapPath("Bruger")))
{
  Mapper.Add(Dir, Dir);
}
Mapper.Add("Ny", "Ny Mappe");
DropDownList1.DataSource = Mapper;
DropDownList1.DataValueField = "Key";
DropDownList1.DataTextField = "Value";
DropDownList1.DataBind();
Avatar billede snepnet Nybegynder
21. september 2005 - 15:05 #3
softspot>>
My er ikke umiddelbart tilgængelig i C#, men du kan for så vidt benytte den hvis du referer VisualBasic.dll - men der kan godt være lidt at forholde sig til omkring det:
Se evt her:
http://weblogs.dotnetforum.dk/guidmaster/archive/2004/04/26/65171.aspx
mvh
Avatar billede nielle Nybegynder
21. september 2005 - 15:10 #4
Sådan:

SortedList Mapper = new SortedList();
Mapper.Add("0", "Vælg");
foreach (string Dir in this.Computer.FileSystem.GetDirectories(Server.MapPath("Bruger")))
{
    Mapper.Add(Dir, Dir);
}
Mapper.Add("Ny", "Ny Mappe");
DropDownList1.DataSource = Mapper;
DropDownList1.DataValueField = "Key";
DropDownList1.DataTextField = "Value";
DropDownList1.DataBind();
Avatar billede softspot Forsker
21. september 2005 - 15:12 #5
Ja, det burde vel bare være en referene til System.IO i stedet for My.Computer.FileSystem...
Avatar billede troublemaker Nybegynder
21. september 2005 - 15:20 #6
Ingen af jeres oversættelser kan jeg få til at tilføje noget til dropdown menuen. De "virker" dog med få ændringer uden at siden melder fejl.

Fejlen ligger sikkert i min ende så tak for hjælpen :)
Avatar billede snepnet Nybegynder
21. september 2005 - 15:21 #7
du skal huske at tilføje de respektive namespaces.
mvh
Avatar billede snepnet Nybegynder
21. september 2005 - 15:25 #8
og hups - i mit tilfælde fjerne en ), så

DirectoryInfo[] directories = new DirectoryInfo(Server.MapPath("Bruger"))).GetDirectories();
bliver til
DirectoryInfo[] directories = new DirectoryInfo(Server.MapPath("Bruger")).GetDirectories();

mvh
Avatar billede softspot Forsker
21. september 2005 - 15:28 #9
Velbekomme :)
Avatar billede snepnet Nybegynder
21. september 2005 - 15:35 #10
Nielle.... hvad er this i this.Computer?
mvh
Avatar billede softspot Forsker
21. september 2005 - 15:40 #11
Det er vel en forveksling af Me & My...
Avatar billede nielle Nybegynder
21. september 2005 - 16:20 #12
Ja, det er det vist. :^|

initiate, My må da vist være defineret et andet sted i koden?
Avatar billede snepnet Nybegynder
21. september 2005 - 17:14 #13
My er et nyt VB namespace der er til rådighed i version 2.0 der bliver frigivet i starten af november, og Computer er en ny VB klasse der ligeledes er introduceret med version 2.0.

Det oprindelige kodeeksempel er derfor fint nok, hvis man koder i VB og har installeret V 2.0 - det er out-of-the-box features.
Kommentaren 21/09-2005 15:05:45 er en henvisning lidt diskussion omkring det at referere Microsoft.VisualBasic.DLL i sine C# projekter for at få adgang til My.

mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 08:12 #14
Kan stadig ikke få den til at tilføje noget til dropdown listen.

Sådan ser koden ud lige nu. Selv uden at søge efter mapper skal den tilføje en ting til dropdown menuen men det gør den ikke :(

    void Page_Load(object sender, EventArgs e)
    {
        SortedList Mapper = new SortedList();
        Mapper.Add("0", "vælg");

        billedKategori.DataSource = Mapper;
        billedKategori.DataValueField = "Key";
        billedKategori.DataTextField = "Value";
        billedKategori.DataBind();
    }

Og koden til selve dropdown listen

<asp:DropDownList ID="billedKategori" runat="server" AutoPostBack="True" />

På forhånd tak
Avatar billede snepnet Nybegynder
23. september 2005 - 08:26 #15
hvad hvis du bare gør sådan her:

    void Page_Load(object sender, EventArgs e)
    {
        string[] test = {"hej","med","dig"};
        billedKategori.DataSource = Mapper;
        billedKategori.DataBind();
    }

mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 08:45 #16
Prøvede lige at lægge koden ind på en ny side og der virker det. Det har åbenbart noget at gøre med de andre ting jeg har på siden.



    void Page_Load(object sender, EventArgs e)
    {
        string[] test = {"hej","med","dig"};
        billedKategori.DataSource = test;
        billedKategori.DataBind();
    }
gør ingenting på min side men virker fint på en ny side
Avatar billede snepnet Nybegynder
23. september 2005 - 08:49 #17
får du overhovedet kørt din page_load på den oprindelige side?
mvh
enten skal du i dit pagedirective have
AutoEventWireUp="true"
eller
AutoEventWireUp må ikke stå der
eller have sådan en her i din code-behind:
this.Load += new System.EventHandler(this.Page_Load);

eller også skal du køre med version 2.0

mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 09:00 #18
AutoEventWireUp stod til false, har sat den til true men det virker stadig ikke.
Har også prøvet at fjerne AutoEventWireUp, virker heller ikke.

Kører med version 2.0

Det her er i min codebehind
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
Avatar billede snepnet Nybegynder
23. september 2005 - 09:04 #19
hvis du kører med 2.0 synes jeg at du skal
-sætte AutoEventWireUp="true"
-fjerne din InitializeComponent()

kan du ikke lægge din code-behind - eller hvert fald tilstrækkeligt til at jeg kan se hvordan den kører, og så dit pagedirective herud?

mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 09:18 #20
pagedirective:

<%@ Page language="c#" CodeBehind="upload.aspx.cs" AutoEventWireup="true" Inherits="Stardeveloper.UploadImage.UploadForm" %>


Koden til Codebehind filen:

using System;
using System.IO;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Drawing.Imaging;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text;
using System.Text.RegularExpressions;

namespace Stardeveloper.UploadImage
{
    public class UploadForm : System.Web.UI.Page
    {
        public const int MaxWidth = 300;
        public const int MaxHeight = 300;

        public const int MinSize = 5 * 1024;
        public const int MaxSize = 20 * 1024;

        public const int ThumbnailWidth = 150;
        public const int ThumbnailHeight = 150;

        protected HtmlGenericControl message;

        protected HtmlInputFile file;
        protected HtmlInputFile file1;
        protected HtmlInputFile file2;

        //Page load
        //
        private void Page_Load(object sender, System.EventArgs e)
        {
                if(IsPostBack)
                {
                    message.Attributes.Add("align", "left");

                    UploadImageWithSizeRestrictions(file.PostedFile);
                    UploadImageWithDimensionRestrictions(file1.PostedFile);
                    UploadImageWithNoRestrictions(file2.PostedFile);
                }
                else
                {
                    message.Attributes.Add("align", "center");
                    AppendMessage("Vælg en fil der skal uploades.");
                }

            //Find undermapper og tilføj dem til dropdown listen
            //
            SortedList Mapper = new SortedList();
            Mapper.Add("0", "vælg");
            DirectoryInfo[] directories = new DirectoryInfo(Server.MapPath("uploaded_images")).GetDirectories();
            foreach (DirectoryInfo dir in directories)
            {
                Mapper.Add(dir.Name, dir.Name);
            }
            Mapper.Add("Ny", "Ny mappe");

            billedKategori.DataSource = Mapper;
            billedKategori.DataValueField = "Key";
            billedKategori.DataTextField = "Value";
            billedKategori.DataBind();
        }

        private void AppendMessage(string msg)
        {
            message.Controls.Add(new LiteralControl(msg));
        }

        private void DisplayImageInfo(HttpPostedFile image)
        {
            AppendMessage(String.Format("FileName: {0}<br>", image.FileName));
            AppendMessage(String.Format("FileSize: {0} KB<br>", image.ContentLength / 1024));

            using(Bitmap bitmap = new Bitmap(image.InputStream, false))
            {
                AppendMessage(String.Format("Width: {0}<br>", bitmap.Width));
                AppendMessage(String.Format("Height: {0}<br>", bitmap.Height));

                if(bitmap.RawFormat.Equals(ImageFormat.Bmp))
                {
                    AppendMessage("ImageFormat: Bitmap Image (BMP)<br>");
                }
                if(bitmap.RawFormat.Equals(ImageFormat.Gif))
                {
                    AppendMessage("ImageFormat: Graphics Interchange Format (GIF)<br>");
                }
                if(bitmap.RawFormat.Equals(ImageFormat.Jpeg))
                {
                    AppendMessage("ImageFormat: Joint Photographic Experts Group (JPEG)<br>");
                }
                if(bitmap.RawFormat.Equals(ImageFormat.Png))
                {
                    AppendMessage("ImageFormat: W3C Portable Network Graphics (PNG)<br>");
                }
            }
        }

        private bool IsImage(HttpPostedFile file)
        {
            if(file != null && Regex.IsMatch(file.ContentType, "image/\\S+") &&
                file.ContentLength > 0)
            {
                DisplayImageInfo(file);
                return true;
            }

            return false;
        }

        protected void UploadImageWithSizeRestrictions(HttpPostedFile file)
        {
            if(IsImage(file))
            {
                int contentLength = file.ContentLength;
                if(contentLength > MinSize && contentLength < MaxSize)
                {
                    UploadImage(file);
                }
                else
                {
                    AppendMessage(String.Format("<span style=\"color:red;\">Image size exceeding limits: {0} KB</span><br><br>", contentLength / 1024));
                }
            }
        }

        protected void UploadImageWithDimensionRestrictions(HttpPostedFile file)
        {
            if(IsImage(file))
            {
                using(Bitmap bitmap = new Bitmap(file.InputStream, false))
                {
                    if(bitmap.Width < MaxWidth && bitmap.Height < MaxHeight)
                    {
                        UploadImage(file);
                    }
                    else
                    {
                        AppendMessage(String.Format("<span style=\"color:red;\">Image dimensions exceeding limits: {0} x {1}</span><br><br>", bitmap.Width, bitmap.Height));
                    }
                }
            }
        }

        protected void UploadImageWithNoRestrictions(HttpPostedFile file)
        {
            if(IsImage(file))
            {
                UploadImage(file);
            }
        }

        protected void UploadImage(HttpPostedFile file)
        {
            string fileName = file.FileName.Substring(file.FileName.LastIndexOf('\\') + 1);
            string filePath = MapPath("uploaded_images/" + fileName);

            file.SaveAs(filePath);
            AppendMessage("<span style=\"color:green;\">File Uploaded...</span><br>");

            using(System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream))
            using(Bitmap bitmap = new Bitmap(image, ThumbnailWidth, ThumbnailHeight))
            {
                bitmap.Save(MapPath("uploaded_images/t__" + fileName), image.RawFormat);
                AppendMessage("<span style=\"color:green;\">Thumbnail created...</span><br><br>");
            }
        }

        #region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Load += new System.EventHandler(this.Page_Load);
        }
        #endregion
    }
}
Avatar billede snepnet Nybegynder
23. september 2005 - 09:25 #21
det er en VS2003 / V1.1 Template... Sagde du ikke at du bruger V2.0?
(hvis du bruger ovenstående template, skal du have autoeventwireup="false")
mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 09:27 #22
jo jeg bruger 2.0 men det der er en kode jeg fandt på nettet. Normalt bruger jeg også VB.
Avatar billede snepnet Nybegynder
23. september 2005 - 09:30 #23
ok... hvordan ser det ud når du debugger ned igennem det - altså hvis du bare starter på første linie i page_load.
mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 09:46 #24
Er ikke helt sikker på hvad du mener men jeg har ændret CodeBehind til CodeFile i pagedirective og tilføjet "partial" til
public partial class UploadForm : System.Web.UI.Page


Compiler Error Message: CS0102: The type 'Stardeveloper.UploadImage.UploadForm' already contains a definition for 'message'

Source Error:
Line 27:         public const int ThumbnailHeight = 150;
Line 28:
Line 29:         protected HtmlGenericControl message;
Line 30:
Line 31:         protected HtmlInputFile file;
Avatar billede snepnet Nybegynder
23. september 2005 - 09:50 #25
er du usikker på hvad jeg mener med "debugger" eller?

du klikker bare i det grå område til venstre for if(IsPostBack) i page_load, og trykker på F5.
du kan og sætte breakpoints ind med F9 istedet.... bare stil den på den linie du vil stoppe ved.

du skal kommentere de her ud, hvis du vil kunne køre det.
 
        protected HtmlGenericControl message;

        protected HtmlInputFile file;
        protected HtmlInputFile file1;
        protected HtmlInputFile file2;

mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 10:01 #26
Har kommenteret de 4 linier ud og sat breakpoints ind.
Følgende fejlmeddelelse kommer:

Warning    1    The type 'Stardeveloper.UploadImage.UploadForm' in 'd:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\Temporary ASP.NET Files\upload image\2f792a8e\7eb5bd94\o2cmaett.0.cs' conflicts with the imported type 'Stardeveloper.UploadImage.UploadForm' in 'd:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\Temporary ASP.NET Files\upload image\2f792a8e\7eb5bd94\assembly\dl3\85cad50d\00552f83_83fbc201\uploadimghd.DLL'. Using the one in 'd:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\Temporary ASP.NET Files\upload image\2f792a8e\7eb5bd94\o2cmaett.0.cs'.    d:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\Temporary ASP.NET Files\upload image\2f792a8e\7eb5bd94\o2cmaett.0.cs
Avatar billede snepnet Nybegynder
23. september 2005 - 10:04 #27
prøv lige at give mig dit komplette pagedirective.
mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 10:08 #28
<%@ Page language="c#" CodeFile="upload.aspx.cs" AutoEventWireup="false" Inherits="Stardeveloper.UploadImage.UploadForm" %>
Avatar billede snepnet Nybegynder
23. september 2005 - 10:09 #29
prøv at slet det dette dir:
d:\WINDOWS\Microsoft.NET\Framework\v2.0.50215\Temporary ASP.NET Files\upload image
mvh
Avatar billede troublemaker Nybegynder
23. september 2005 - 10:24 #30
haha det virker nu! Du er min helt :)
Avatar billede troublemaker Nybegynder
23. september 2005 - 10:25 #31
smid et svar :)
Avatar billede snepnet Nybegynder
23. september 2005 - 10:25 #32
kommer her :o)
mvh
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