[C#] Arguments bij het opstarten, hoe te gebruiken?

Pagina: 1
Acties:

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
                                /// </summary>
        [STAThread]
        static void Main(string[] args) 
        {
            Application.Run(new Form1());       
        
            string ID = args[1];
            string StartTime = args[2];
            string EndTime = args[3];
            string Flags = args[4];


        }


Deze code wil ik gebruiken voor de argumenten op te slaan die bij het opstarten worden meegegeven. Nu moet ik alleen deze gegevens ook gebruiken onder een buttonclick of eigenlijk meteen na het opstarten.

Even het hele verhaal:

Ik moet een programmaatje maken in C# voor gegevens van een webserver te kunnen downloaden, Builder 3 is hier niet bekend dus moet ik vanuit een Builder applicatie deze gaan aanspreken. Dan wil ik graag de argumenten (parameters) meegeven die ervoor zorgen dat ik de zoekquery van de webservice kan starten.

Vandaar dus die argumenten, en verder heb ik ook het probleem hoe ik dan een buttonclick kan aansturen... Misschien weten mensen dit en zo ja, help me er aub mee want ik zit te zoeken maar kom er niet uit...

Alvast bedankt.

  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 05-02 21:24
Wijzig de constructor van je Form zodat je die parameters daaraan mee kunt geven, in je form kun je ze dan gewoon als klasse variabelen opslaan.

Als je de code van je button_click nu in een aparte public method stopt dan kun je die methode van buitenaf benaderen en in je button_click roep je ook die methode aan.

  • joostingh
  • Registratie: Maart 2004
  • Laatst online: 16-05-2025
Serpie schreef op woensdag 24 augustus 2005 @ 09:53:
Wijzig de constructor van je Form zodat je die parameters daaraan mee kunt geven, in je form kun je ze dan gewoon als klasse variabelen opslaan.

Als je de code van je button_click nu in een aparte public method stopt dan kun je die methode van buitenaf benaderen en in je button_click roep je ook die methode aan.
Misschien ben ik heel dom (oh nee een beginner met C#) maar hoe zit dat met de constructor? En hoe kan ik dat aanpassen dat hij daar de args kan uitlezen?

In ieder geval al bedankt voor de enorm snelle reactie.

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 23:15
joostingh schreef op woensdag 24 augustus 2005 @ 10:00:
[...]


Misschien ben ik heel dom (oh nee een beginner met C#) maar hoe zit dat met de constructor? En hoe kan ik dat aanpassen dat hij daar de args kan uitlezen?

In ieder geval al bedankt voor de enorm snelle reactie.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
                                /// </summary>
        [STAThread]
        static void Main(string[] args) 
        {
            Application.Run(new Form1());        
        
            string ID = args[1];
            string StartTime = args[2];
            string EndTime = args[3];
            string Flags = args[4];

            new Foo(ID, StartTime, EndTime, Flags);


        }
     
       private string id;
       private string startTime;
       // enz enz

       public Foo( string id, string startTime, string endTime, string flags) {
             this.id = id;
             this.startTime = startTime;
             //enz enz enz 
       }


Ik neem aan dat je dit bedoelt

[ Voor 7% gewijzigd door JeroenTheStig op 24-08-2005 10:29 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 14:39
joostingh schreef op woensdag 24 augustus 2005 @ 10:00:
[...]


Misschien ben ik heel dom (oh nee een beginner met C#) maar hoe zit dat met de constructor? En hoe kan ik dat aanpassen dat hij daar de args kan uitlezen?
Tja, sorry hoor, maar je mag zelf ook wel eens iets uizoeken. Sla de help eens open, en zoek eens naar 'constructor'.
Als je niet weet wat een constructor is, dan moet je imho nog geen programma's maken met c#.

Je zult dus op de een of andere manier die command line variablen aan je form moeten doorgeven. Dat kan je doen op het moment dat je je form instantieert (dmv de constructor dus), of dmv een Initialize method die je maakt in je Form.

methode 1:
code:
1
2
3
4
5
string id = args[0];
DateTime startTime = Convert.ToDateTime (args[1]);
DateTime endTime = Convert.ToDateTime (args[2]);
Form1 myForm = new Form1( id, starttime, endtime);
Application.Run (myForm);

nb: zoals je kan zien, begint het eerste element in een array op index 0.

Methode 2:
code:
1
2
3
Form1 myForm = new Form1();
myForm.Initialize (id, starttime, endtime);
Application.Run (myForm);

https://fgheysels.github.io/


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 01-05 19:09

pjvandesande

GC.Collect(head);

Je kunt ook gebruik maken van Environment.CommandLine, alleen is dat bad imho, die kun je altijd overal opvragen en hoe je niets door te sluizen.

Grootste 2 nadelen zijn:

[list=1]• Dat je 1 lange string terug krijgt en niet alles netjes in een array, dus je zult zelf moeten splitten.
• Dat je waarschijnlijk je Form helemaal niet wil initializeren als er arguments ontbreken en je dan waarschijnlijk een ExitCode anders dan 0 terug wilt geven.

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:39
Dat is idd bad.

Gelieve geen bad practices meer te vertellen. :+

https://fgheysels.github.io/


  • riezebosch
  • Registratie: Oktober 2001
  • Laatst online: 23-04 14:31
Lijkt me ook niet onverstandig om bij index 0 te beginnen met uitlezen ;)

Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack

Pagina: 1