Toon posts:

[VB.NET] 196 Textboxen in een array

Pagina: 1
Acties:
  • 884 views

Onderwerpen


  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
Het is voor mij al weer een tijd geleden dat ik met VisualBasic bezig ben geweest. Ben er ook nooit echt een ster in geweest. Maar mijn vraag is kan ik met een "loop" alle textboxen in een array krijgen? Want ik moet bij elk textbox de invoer controleren er zijn namelijk 3 opties (0 & 1 & [niets]). De textboxen hebben nu de namen van Textbox1 t/m Textbox196. Ik hoop dat jullie me kunnen helpen, anders wordt het wel een heel gedoe, maargoed....

Alvast bedankt...

(voor diegene die willen weten wat ik wil maken... een "binaire puzzel" oplosser. Voorbeeld van zo'n puzzel

[Voor 5% gewijzigd door martijn2008 op 16-11-2010 16:38]


  • Reptile209
  • Registratie: juni 2001
  • Laatst online: 21:12

Reptile209

- gers -

Misschien is het makkelijker om aan de andere kant te beginnen: zorg dat je een array met je 196 textboxen aanmaakt en laat die weergeven op een form. Dan kan je meteen de uitlijning, weergave, enz. van allemaal tegelijk aanpassen als dat nodig is.

Als je perse de bestaande boxen wil gebruiken, dan kan je door de componenten op een form 'heenwandelen'. Kijk eens naar de voorbeeldjes hier.

If you're not part of the solution, you're part of the precipitate.


  • BertS
  • Registratie: september 2004
  • Laatst online: 24-09 11:14
En waarom niet met checkboxen werken in tristate modus?

  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
Kan ik niet een TextBox(counter).Text = array1(counter) doen of iets dergelijks? Dat zou het makkelijkst zijn. Maar hoe zou ik dan een form kunnen maken met 194 textboxen vanuit de array? En dan allemaal nog op de goede plaatst? Dat lijkt mij veel ingewikkelder.

Ik heb eens naar de voorbeeldjes gekeken en ik heb eigenlijk geen idee wat er nu gebeurd en wat ik zou moeten aanpassen zodat het voor mijn programmaatje werkt. Ik moet ctl veranderen in TextBox als ik het goed heb begrepen. Het principe wat je zei over een form 'heenwandelen' klinkt leuk en lijkt mij ideaal.
BertS schreef op dinsdag 16 november 2010 @ 13:20:
En waarom niet met checkboxen werken in tristate modus?
Kan op zich ook maar lijkt mij niet gebruiksvriendelijk, maar in ieder geval bedankt voor de tip!

En Microsoft Visual Basic 2008 is toch hetzelfde als VBA of niet :S

[Voor 7% gewijzigd door martijn2008 op 16-11-2010 17:17]


  • pedorus
  • Registratie: januari 2008
  • Niet online
martijn2008 schreef op dinsdag 16 november 2010 @ 16:34:

En Microsoft Visual Basic 2008 is toch hetzelfde als VBA of niet :S
Nee, nee, nee. :p VBA zit bij zeg Excel, waarin je dit ook prima zou kunnen maken en je alvast een grid hebt om de 1-tjes en 0-etjes op te slaan en je makkelijk puzzels kan kopieren. VB2008 valt onder de tag vb.net. En eventueel heb je ook nog niet .net-versies van VB (zeg VB6). Het antwoord op je vraag hangt hiervan af, dus wat is het?

Gerelateerd: VB.NET: What Happened to Control Arrays!!!

Vitamine D tekorten in Nederland | Middelen tegen corona


  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

martijn2008 schreef op dinsdag 16 november 2010 @ 16:34:
Kan ik niet een TextBox(counter).Text = array1(counter) doen of iets dergelijks?
Waarom zou je dat willen? Nog naast het feit dat je elke control één voor één op je form kan lopen klikken volgens jouw methode terwijl je gewoon een dubbel loopje kan doen. Pseudocode:
Visual Basic .NET:
1
2
3
4
5
For i = 0 to 13
  For j = 0 to 13
    ' nieuwe control maken op y-positie i * (hoogte control + marge tussen controls) en x-positie j * (breedte control + marge tussen controls)
  End For
End For

That's all there's to it. :o

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Meganutter
  • Registratie: december 2007
  • Laatst online: 09-06-2016

Meganutter

Just roaming

misschien is het ook mogelijk om alle controls af te lopen, ik weet dat in C# er een Form.Controls is waarmee je door alle controls van een bepaald form kan lopen.

Het enige wat je dan moet doen is kijken of het een textbox is en daarna de waarde uitlezen.

Visual Basic:
1
2
3
4
5
for i = 0 To me.controls.length
  if me.controls[i] == textbox then
    'bewerking hier
  End If
next


geen idee of de syntaxis correct is of mogelijk. maar het is een idee :P

  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
pedorus schreef op dinsdag 16 november 2010 @ 17:11:
[...]

Nee, nee, nee. :p VBA zit bij zeg Excel, waarin je dit ook prima zou kunnen maken en je alvast een grid hebt om de 1-tjes en 0-etjes op te slaan en je makkelijk puzzels kan kopieren. VB2008 valt onder de tag vb.net. En eventueel heb je ook nog niet .net-versies van VB (zeg VB6). Het antwoord op je vraag hangt hiervan af, dus wat is het?

Gerelateerd: VB.NET: What Happened to Control Arrays!!!
Oops, kan dan het topic titel aangepast worden? Window name is: Microsoft Visual Basic 2008.

  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

martijn2008 schreef op dinsdag 16 november 2010 @ 17:27:
[...]
Oops, kan dan het topic titel aangepast worden? Window name is: Microsoft Visual Basic 2008.
Dit klinkt lulliger dan het bedoeld is, maar als je niet eens weet wat je aan het gebruiken bent, waarom ben je dan begonnen met programmeren? Moet je dan niet eerst nog wat meer leren? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Haan
  • Registratie: februari 2004
  • Laatst online: 20:04

Haan

dotnetter

Aan het screenshot te zien gaat het om vb.net

Kater? Eerst water, de rest komt later
Last.fm profiel


  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
NMe schreef op dinsdag 16 november 2010 @ 17:29:
[...]

Dit klinkt lulliger dan het bedoeld is, maar als je niet eens weet wat je aan het gebruiken bent, waarom ben je dan begonnen met programmeren? Moet je dan niet eerst nog wat meer leren? :)
Weet je wat het is: Ik heb op school met VB6 gewerkt, thuis doe ik dus VB2008/VB.net en later heb ik met SQL ook nog VBA gedaan. Ik weet dat ik niet zoveel weet van VB maar ik denk dat het met een beetje hulp :S er wel weer wat van kan leren. De standaard dingen ken ik wel ik heb met VB6 ook galgje gemaakt :D

Ik hoop dat ik jullie niet tot last ben.

Dit is wat ik nu heb, maar hij geeft een error bij 'ERROR
maar waar slaat hij het nu op? in "WhatsPopulated" of niet?
Error 1 Name 'Frame' is not declared.


Visual Basic:
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
26
27
28
Public Class solver

    Private Sub cmdLosop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLosop.Click
        Dim rij1(0 To 196) As Integer

        Dim TextBox As Control

        With TextBox
            For Each TextBox In Frame.Container 'ERROR
                If Not TextBox.Name = Frame Then
                    'TYPENAME RETURNS THE TYPE OF CTL.  TEXTBOX, COMBOBOX, LABEL ETC.
                    Select Case TypeName(TextBox)
                        Case "TextBox"
                            If TextBox <> "" Then
                                If WhatsPopulated = "" Then
                                    WhatsPopulated = TextBox.Name
                                    '                        Total = ctl.Tag
                                Else
                                    WhatsPopulated = WhatsPopulated & "," & TextBox.Name
                                    '                        Total = Total + ctl.Tag
                                End If
                            End If
                    End Select
                End If
            Next
        End With
    End Sub
End Class

[Voor 51% gewijzigd door martijn2008 op 16-11-2010 19:10]


  • epic007
  • Registratie: februari 2004
  • Laatst online: 09:53
Omdat ik toch niks te doen had :P is wel C# (Ik kan geen VB lezen of schrijven.. wil ik ook niet)

C#:
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
26
27
28
29
30
31
32
33
34
35
    public partial class Form1 : Form
    {
        private const int NUMBER = 10;
        private const int WIDTH  = 20;
        private const int HEIGHT = 20;
        private const int MARGIN = 2;

        private CheckBox[,] mCheckBoxes;

        public Form1()
        {
            InitializeComponent();
            mCheckBoxes = new CheckBox[NUMBER, NUMBER];
            for (int x = 0; x < NUMBER; x++) {
                for (int y = 0; y < NUMBER; y++) {
                    mCheckBoxes[x, y] = new CheckBox();
                    mCheckBoxes[x, y].Bounds = new Rectangle(x * (WIDTH + MARGIN), y * (HEIGHT + MARGIN), WIDTH, HEIGHT);
                    mCheckBoxes[x, y].CheckedChanged += new EventHandler(OnCheckChanged);
                    Controls.Add(mCheckBoxes[x, y]);
                }               
            }
        }

        private void OnCheckChanged(object sender, EventArgs e)
        {
            CheckBox theCheckBox = sender as CheckBox;
            for (int x = 0; x < NUMBER; x++) {
                for (int y = 0; y < NUMBER; y++) {
                    if (mCheckBoxes[x, y] == theCheckBox) {
                        MessageBox.Show(string.Format("CheckBox {0},{1} is {2} checked", x+1,y+1,theCheckBox.Checked ? "":"not"));
                    }
                }
            }
        }
    }

  • jip_86
  • Registratie: juli 2004
  • Laatst online: 15:00
Waarbij je dan wel even moet vermelden dat je checkboxes hebt gebruikt inplaats van textboxen.

  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

martijn2008: waarom ga je nu toch eigenwijs verder met het benaderen van controls die je at design time in je form hebt geklikt in plaats van uit te gaan van een dynamische aanpak? Ik ken geen VB of .NET maar veel moeilijker dan mijn pseudocode zal het niet worden.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
NMe schreef op dinsdag 16 november 2010 @ 20:39:
martijn2008: waarom ga je nu toch eigenwijs verder met het benaderen van controls die je at design time in je form hebt geklikt in plaats van uit te gaan van een dynamische aanpak? Ik ken geen VB of .NET maar veel moeilijker dan mijn pseudocode zal het niet worden.
Ik krijg allemaal halve codes, en omdat ik er niet zo goed in ben dan snap ik dat niet. Een dubbele loop maken kan ik ook. :D(gelukkig) maar ik krijg nu een aantal dingen en raak de draad helemaal kwijt. Het enige wat ik wil is alle textboxen in die array krijgen. en aan het einde van het liedje de array weer in alle textboxen krijgen. Dus de code moet dan eigenlijk beide kanten opwerken. En dan moet na invoer door de gebruiker ook de invoer nog per textbox gecontroleerd worden.

En elke keer als ik iets wat jullie sturen van een link of iets dergelijks krijg ik allemaal error, omdat ik waarschijnlijk niet genoeg aanpas. En ik geen idee heb waar ik mee bezig ben... Omdat ik alleen maar simpele dingen kan. En geen nieuwe textboxes kan maken vanuit een code of een hele form doorlopen op textboxes.


Ik wil niet eigenwijs doen, ik wil het werkend krijgen.

[Voor 65% gewijzigd door martijn2008 op 16-11-2010 21:59]


  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

En wij zeggen je dus al een tijdje dat dat het makkelijkste is als je zelf je inputvelden maakt waarbij je dus makkelijk dezelfde onChange-functie (of hoe dat ook heet in .NET) kan gebruiken voor je validatie en waarbij je dus zelf al een tweedimensionaal array van inputs bij kan houden.

De manier om om te gaan met dingen die je niet begrijpt is ze proberen te begrijpen door je in te lezen. Van het negeren en een andere oplossing uitzoeken die én minder makkelijk is én meer problemen oplevert leer je niks.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Kharay1977
  • Registratie: oktober 2010
  • Laatst online: 02-04-2014
Er zijn al diverse (halve) oplossingen geboden, er zijn ook diverse links gegeven naar meer informatie over hoe dit soort zaken werken in .NET2008 en dan wel specifiek VB.NET 2008.

Lees die informatie - en speel ermee, probeer het uit om het werkelijk te begrijpen en pas het daarna pas toe op je eigen situatie.

  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
Kharay1977 schreef op dinsdag 16 november 2010 @ 21:39:
Er zijn al diverse (halve) oplossingen geboden, er zijn ook diverse links gegeven naar meer informatie over hoe dit soort zaken werken in .NET2008 en dan wel specifiek VB.NET 2008.

Lees die informatie - en speel ermee, probeer het uit om het werkelijk te begrijpen en pas het daarna pas toe op je eigen situatie.
Ik wil jullie dan ook nogmaals bedanken voor die oplossingen, maar als ik ze niet snap/niet weet hoe ik ze moet gebruiken, heb ik er natuurlijk weinig aan. Daarom wil ik nogmaals heel lief aan jullie vragen, of het misschien iets meer op een kant-en-klaar maaltijd kan laten lijken, want het recept is voor mij nu nog in het Chinees.

Nu toch nog wat suc6 geboekt:D, maar dit maakt alleen maar textboxes, dus heb ik nog steeds niet de waardes er van. :S
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim boxes(14) As TextBox

        For a As Integer = 0 To 13
            For i As Integer = 0 To 13

                'Create new textbox
                boxes(i) = New TextBox()

                'Set it's properties
                boxes(i).Width = 20
                boxes(i).Height = 25
                boxes(i).Left = a * 25
                boxes(i).Top = i * 30

                'Add control to current form
                Me.Controls.Add(boxes(i))
            Next
        Next
    End Sub
End Class

[Voor 34% gewijzigd door martijn2008 op 16-11-2010 21:59]


  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

Ik zou beginnen met boxes definiëren als een tweedimensionaal array van 14x14 en dat ook buiten de functie beschikbaar maken. Vervolgens kun je in die array references opslaan naar je textboxes.

M.a.w.: Dim boxes(14,14) As TextBox binnen de class maar buiten de Sub, en later: boxes(a, i) in plaats van boxes(i) gebruiken.

Vervolgens heb je nog een event handler nodig die bij het change event aangeroepen wordt: daarvoor kun je op boxes(a, i) een AddHandler-commando gebruiken. Zie bijvoorbeeld deze pagina.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Wijnbo
  • Registratie: december 2002
  • Laatst online: 22-09 14:56

Wijnbo

Electronica werkt op rook.

Ik denk dat je moet beginnen met een goed .NET boek als je ECHT iets wil. Straks werkt dit met een boel hulp, maar je hebt geen flauw idee wat je nu werkelijk aan het doen bent. Hoe zit het met je OO kennis? Classes? Inheritance? Events? Als je bij 1 van deze vragen :? :? :? denkt: Bol.com ;)

Veel succes met leren!

  • martijn2008
  • Registratie: december 2009
  • Laatst online: 19-09 12:20
Laat dan maar hoor daar heb ik geen tijd voor, ik ga dit jaar nog Java doen op school. Waarschijnlijk heel basic en dan volgend jaar Technische Informatica TU Delft studeren.

[Voor 9% gewijzigd door martijn2008 op 17-11-2010 18:40]


  • Kharay1977
  • Registratie: oktober 2010
  • Laatst online: 02-04-2014
Laat dan maar hoor daar heb ik geen tijd voor
*facepalm*

  • NMe
  • Registratie: februari 2004
  • Laatst online: 14:53

NMe

Quia Ego Sic Dico.

No offense, maar ik heb het bijna letterlijk voor je uitgeschreven, ik heb alleen geen code gepost. Als je er daar niet mee uit wilt proberen te komen, dan houdt het inderdaad op wat dit topic betreft.
Laat dat soort posts achterwege asjeblieft. :)

[Voor 30% gewijzigd door NMe op 17-11-2010 18:53]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.



Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee