C# Vraagje
Moderator: Moderators
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
C# Vraagje
Luitjes.. ik weet dat er hier een aantal mensen zitten die niet vies zijn van een stevig robbertje programmeren..
Momenteel zit ik een beetje te prutsen in VB.NET (Visual Studio 2019), ik wil een G-code Editortje maken voor de EMCOturn 120.
Ik ben al een heel eind gekomen.. 'k heb zelfs al voor elkaar gekregen dat de 12 softkeys onderin het scherm "meerekken" met de GUI als ik het maximaliseer.. de middelste 4 blijven in het midden, de rechter schuiven mee met de rechterkant, en de linker blijven links staan.. ('k heb dit al een paar keer aangegeven bij Bert Eding, maar in EdingCNC is dit nog steeds niet het geval..
Ik ben een beetje in de stijl van de EMCO besturing gebleven, dus een zwart scherm met groene letters, bediening van het geheel met Softkeys, zodat je niet iedere keer naar een muis hoeft te grijpen.. en rechts in het scherm heb ik een paar Textboxen verstopt.. normaliter zie je ze niet, maar zodra je bijvoorbeeld een Toolchange wilt doen.. (F1), dan komen ze naar de voorgrond, en in de ene box wordt tekst getoond, en in het tweede boxje vul je de waarden in.. (die peuter ik er later wel weer uit om G-Code regels samen te stellen, da's niet heel spannend.
het probl.. de uitdaging zit em nu in het volgende.. als ik de laatste waarde heb ingevoerd, (je gaat met Enter naar de volgende regel) moet ik de invoer "bevestigen", mijn gedachte is : na elke waarde geef je "Enter", heb je de laatste gehad, druk je weer op Enter.. (dus 2 keer Enter)
en dan zou ik dus de invoer uit de tweede box om moeten gaan zetten naar de code.. en die in het programma invoeren op cursorpositie..
Hoe breng ik 't programma nu aan het verstand dat ik de inhoud van de invoerbox wil omzetten als ik 2 keer achter elkaar op Enter druk?..ik heb gezocht in Google, wel wat snippers code gevonden, maar geen van die suggesties werkt..
Als alles klaar is, dan wil ik er ook RS232 communicatie in gaan zetten.. zodat ik 1 programma heb om code te kloppen, en het daarna in de machine te schieten, of om code uit de machine meteen in de Editor te sleuren, maar dat is van later zorg..
Momenteel zit ik een beetje te prutsen in VB.NET (Visual Studio 2019), ik wil een G-code Editortje maken voor de EMCOturn 120.
Ik ben al een heel eind gekomen.. 'k heb zelfs al voor elkaar gekregen dat de 12 softkeys onderin het scherm "meerekken" met de GUI als ik het maximaliseer.. de middelste 4 blijven in het midden, de rechter schuiven mee met de rechterkant, en de linker blijven links staan.. ('k heb dit al een paar keer aangegeven bij Bert Eding, maar in EdingCNC is dit nog steeds niet het geval..
Ik ben een beetje in de stijl van de EMCO besturing gebleven, dus een zwart scherm met groene letters, bediening van het geheel met Softkeys, zodat je niet iedere keer naar een muis hoeft te grijpen.. en rechts in het scherm heb ik een paar Textboxen verstopt.. normaliter zie je ze niet, maar zodra je bijvoorbeeld een Toolchange wilt doen.. (F1), dan komen ze naar de voorgrond, en in de ene box wordt tekst getoond, en in het tweede boxje vul je de waarden in.. (die peuter ik er later wel weer uit om G-Code regels samen te stellen, da's niet heel spannend.
het probl.. de uitdaging zit em nu in het volgende.. als ik de laatste waarde heb ingevoerd, (je gaat met Enter naar de volgende regel) moet ik de invoer "bevestigen", mijn gedachte is : na elke waarde geef je "Enter", heb je de laatste gehad, druk je weer op Enter.. (dus 2 keer Enter)
en dan zou ik dus de invoer uit de tweede box om moeten gaan zetten naar de code.. en die in het programma invoeren op cursorpositie..
Hoe breng ik 't programma nu aan het verstand dat ik de inhoud van de invoerbox wil omzetten als ik 2 keer achter elkaar op Enter druk?..ik heb gezocht in Google, wel wat snippers code gevonden, maar geen van die suggesties werkt..
Als alles klaar is, dan wil ik er ook RS232 communicatie in gaan zetten.. zodat ik 1 programma heb om code te kloppen, en het daarna in de machine te schieten, of om code uit de machine meteen in de Editor te sleuren, maar dat is van later zorg..
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
Laatst gewijzigd door Arie Kabaalstra op 18 feb 2022 12:10, 1 keer totaal gewijzigd.
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
Laat maar... Ik ben er al uit.. ik had gisteren al iets in deze richting.. maar waar je de parameter entercount definieert is wel belangrijk natuurlijk.. die moet je niet in deze sub pas definieren, maar bovenin het programma.. anders zet ie em na elke Keydown op 0.. Duhhh..
Deze doet het!
Code: Selecteer alles
Private Sub TextBox3_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox3.KeyDown
TextBox4.Text = entercount
If e.KeyCode = Keys.Escape Then
BoxClear()
TextBox2.SendToBack()
TextBox3.SendToBack()
End If
If e.KeyCode = Keys.Enter Then
entercount = entercount + 1
TextBox4.Text = entercount
If entercount = 2 Then
MsgBox(" 2 keer!!")
entercount = 0
End If
Else
entercount = 0
End If
End Sub
Re: VB Vraagje
Arie,
Je kunt aangeven welke "control" de focus moet krijgen na een enter (of tab). Daarmee loop je snel door je parameters heen. Als laatste "control" in de lijst, kun je een knop (Button) zetten die dan
De volgorde regel je d.m.v. het zetten van de "TabIndex" van de control.
Wil je een "control" overslaan, zet dan "Accepts Returns" en/of "Accepts Tabs" op false.
Je kunt aangeven welke "control" de focus moet krijgen na een enter (of tab). Daarmee loop je snel door je parameters heen. Als laatste "control" in de lijst, kun je een knop (Button) zetten die dan
uitvoert.de inhoud van de invoerbox wil omzetten als ik 2 keer achter elkaar op Enter druk
De volgorde regel je d.m.v. het zetten van de "TabIndex" van de control.
Wil je een "control" overslaan, zet dan "Accepts Returns" en/of "Accepts Tabs" op false.
There are only 2 limits, the sky and your imagination
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
Ik doe het (zoals gewoonlijk) weer net even anders... de "Dialoog" bestaat momenteel nog uit 2 textboxen, één met de tekst, en één voor de invoer..
die invoer stamp ik naderhand (dus na bevestiging) in een listbox
dan kan ik gewoon op regelindex de parameters eruit peuteren..
zoals ik het nu doe (weer wat anders bedacht.. zodra ik in de invoer textbox naar regel nummer zoveel spring grabbelt ie de input eruit, en verwerkt het..
dat regelnummer.. dat peuter ik uit de TextChanged Event, middels GetlineFromCharIndex(TextBox3.SelectionStart)
Gisteravond, terwijl ik onder het gemalen water stond, kwam er weer een nieuw idee op bij me.. in een DataGridview kun je veel makkelijker de index eruit peuteren om te kijken waar je staat.., Dus.. (eerst koffie).. ik ga zo even een DataGridview in mijn Code frommelen..
die invoer stamp ik naderhand (dus na bevestiging) in een listbox
dan kan ik gewoon op regelindex de parameters eruit peuteren..
zoals ik het nu doe (weer wat anders bedacht.. zodra ik in de invoer textbox naar regel nummer zoveel spring grabbelt ie de input eruit, en verwerkt het..
dat regelnummer.. dat peuter ik uit de TextChanged Event, middels GetlineFromCharIndex(TextBox3.SelectionStart)
Gisteravond, terwijl ik onder het gemalen water stond, kwam er weer een nieuw idee op bij me.. in een DataGridview kun je veel makkelijker de index eruit peuteren om te kijken waar je staat.., Dus.. (eerst koffie).. ik ga zo even een DataGridview in mijn Code frommelen..
Re: VB Vraagje
Dat datagridview onder Windows10 gaat niet altijd goed. De gridlijnen zijn dan niet zichtbaar. De oplossing is eenvoudig, sommige Windows kleuren aanpassen.
Mocht je het probleem hebben, dan deze regfile starten. De regfile om de kleurverandering weer ongedaan te maken, zit er ook in.
Misschien heb je dit probleem niet, dan is het inmiddels gefixed.
Mocht je het probleem hebben, dan deze regfile starten. De regfile om de kleurverandering weer ongedaan te maken, zit er ook in.
Misschien heb je dit probleem niet, dan is het inmiddels gefixed.
Je hebt niet voldoende permissies om de bijlagen van dit bericht te bekijken.
There are only 2 limits, the sky and your imagination
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
Is niet erg.. we spreken over dialoogjes met een beperkt aantal inputs.
Alleen is het opvragen van de actieve row nog niet zo makkelijk als ik gedacht had.. 't idee is om met een Keydownevent, de "Enter"op te vangen, zodra deze op de onderste regel van de Datagridview staat.. , dan moet ie de gegevens eruit peuteren en in de code mikken
Re: VB Vraagje
In een datagridview is er bij enter een cel geselecteerd die in de lijst SelectedCells (kan meer dan één cel zijn geselecteerd) staat.
datagridview.SelectedCells.Item(0).RowIndex is dan de geselecteerde Row, met de kolom gaat het net zo.
Van te voren controleren of SelectedCells niet null is en daarna of SelectedCels.Count > 0 is, anders kan het programma crashen!!!!
datagridview.SelectedCells.Item(0).RowIndex is dan de geselecteerde Row, met de kolom gaat het net zo.
Van te voren controleren of SelectedCells niet null is en daarna of SelectedCels.Count > 0 is, anders kan het programma crashen!!!!
There are only 2 limits, the sky and your imagination
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
en hoe doe ik dat?.. 'k probeer van alles.. maar ik krijg nog geen textboxje gevuld met de index van de huidige regel.. de gedachtengang is om met bijvoorbeeld Keydown te kijken of ie in de onderste cel staat in de tweede kolom, kolom index is niet belangrijk.. de eerste kolom staat read-only..
zodra ik kan uitvlooien of ie in de onderste row staat, en ik vang een e.keycode = keys.enter op.. dan kan ik de gridview leegtrekken en de gegevens in een stuk code knopen.
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
Code: Selecteer alles
Private Sub DataGridView1_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView1.SelectionChanged
Dim selrow As Integer = DataGridView1.SelectedCells.Item(0).RowIndex
TextBox5.Text = selrow.ToString
End Sub
Ik moet het nog even typselen.. maar als ik dan in het Datagridview1.keydown Event kijk naar de index als ik enter in hei.. en hij staat op 7.. dan moet ie dus de code gaan maken en in het programma zetten..
Re: VB Vraagje
Zodra je het weet is het al een stuk gemakkelijker!
There are only 2 limits, the sky and your imagination
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
Ja.. maar ik blijf tegen dingen aanlopen.. met Keydown kreeg ik niets boven water.. met een SelectionChanged Event wel..
Als ik daarmee door de Gridview heen liep, zag ik keurig de waarde in het textboxje veranderen.. alleen..om die waarde eruit te peuteren als ie hoger dan 7 was?.. kreeg ik niet voor elkaar.. ik heb dus nog een extra rij toegevoegd.. of je nou Enter drukt, of pijltje naar benee.. zodra je ONDER de regel met "OK" komt.. laat ik de Gridview verdwijnen..
Nou komt het volgende.. zodra ik de gridview wis..'k peuter de data eruit, en gooi em leeg.. dan Crasht de applicatie..
hoe vang ik dat nou weer af?. om nou elke keer alle cellen leeg te gaan maken?.. da's ook een gedoe..
Als ik daarmee door de Gridview heen liep, zag ik keurig de waarde in het textboxje veranderen.. alleen..om die waarde eruit te peuteren als ie hoger dan 7 was?.. kreeg ik niet voor elkaar.. ik heb dus nog een extra rij toegevoegd.. of je nou Enter drukt, of pijltje naar benee.. zodra je ONDER de regel met "OK" komt.. laat ik de Gridview verdwijnen..
Nou komt het volgende.. zodra ik de gridview wis..'k peuter de data eruit, en gooi em leeg.. dan Crasht de applicatie..
hoe vang ik dat nou weer af?. om nou elke keer alle cellen leeg te gaan maken?.. da's ook een gedoe..
- hugo stoutjesdijk
- Donateur
- Berichten: 12050
- Lid geworden op: 02 mar 2011 17:04
- Locatie: elst (u)
- Contacteer:
Re: VB Vraagje
Lijkt me ook maar 1 regeltje, en dat hoef je niet zelf steeds te doen.Arie Kabaalstra schreef: ↑04 feb 2022 00:08. om nou elke keer alle cellen leeg te gaan maken?.. da's ook een gedoe..
Gewoon netjes de boel schoonmaken en opruimen als je het niet meer nodig hebt, zo doe je dat in je werkplaats toch ook?
(maar eigenlijk denk ik dat het probleem ergens anders zit)
Ik heb veel met Delphi gedaan in het verleden, en nooit begrepen wat er nu eigenlijk Visual is bij dat VB, en er crashte ook nooit wat bij dat soort geintjes. Helaas vergane glorie.
Ik ben voor meer techniek op school, maar dan wel vanaf groep 1 basischool.
Re: VB Vraagje
De applicatie crasht waarschijnlijk omdat er een change event gegenereert wordt als de gridview verwijderd wordt. Dan benaderd de event change routine een gridview die er niet meer is en dat gaat fout.
Je kunt alle objecten in een list, array, ect met één regel code bewerken door een for each next loop te gebruiken.
!!!Niet getest, kunnen fouten in staan!!!
Hier de uitleg van MS en onderaan een voorbeeld:
https://docs.microsoft.com/en-us/dotnet ... -statement
Je kunt alle objecten in een list, array, ect met één regel code bewerken door een for each next loop te gebruiken.
Code: Selecteer alles
Voor elke kolom
voor elk item in de kolom
wis het item
next
next
For Each row As DataGridViewRow In DataGridView1.Rows
For Each item As String In row.items
item=""
next
next
Hier de uitleg van MS en onderaan een voorbeeld:
https://docs.microsoft.com/en-us/dotnet ... -statement
There are only 2 limits, the sky and your imagination
- Arie Kabaalstra
- Donateur
- Berichten: 13523
- Lid geworden op: 07 feb 2007 18:37
- Locatie: Bakhuuz'n
- Contacteer:
Re: VB Vraagje
't zal er wel aan liggen dat ik te veel "geprobeerd" heb, zonder de boel echt goed op te ruimen in de code ofzo..
want ik heb net even een projectje gebouwd om te testen met een Datagridview..
En da's alles..
omdat ik hier met een Keydown de gebeurtenissen afvang.. is er denk ik geen probleem als ik de Gridview naderhand wis.. omdat er dan geen Selectionchanged event in de code zit die de Crash op zijn geweten heeft..
'k ben nog steeds een beginner.. maar ik kom er wel..
want ik heb net even een projectje gebouwd om te testen met een Datagridview..
Code: Selecteer alles
Private Sub DataGridView1_KeyDown(sender As Object, e As KeyEventArgs)
If e.KeyCode = Keys.Enter Then
TextBox2.Text = DataGridView1.SelectedCells.Item(0).RowIndex
If DataGridView1.SelectedCells.Item(0).RowIndex = 7 Then
MsgBox("ÖK!!")
End If
End If
End Sub
omdat ik hier met een Keydown de gebeurtenissen afvang.. is er denk ik geen probleem als ik de Gridview naderhand wis.. omdat er dan geen Selectionchanged event in de code zit die de Crash op zijn geweten heeft..
'k ben nog steeds een beginner.. maar ik kom er wel..