Button toevoegen

Status
Niet open voor verdere reacties.

Jewst

Gebruiker
Lid geworden
23 mrt 2009
Berichten
37
hallo helpmijers,

ik heb een menu in een dialog1 menu (popup) waar ik de eigenschappen van de button wil toepassen, zoals Naam, Locatie (wat de button moet openen) en een plaatje.
Als dit allemaal is toegast moet bij het klikken op OK een button toegevoegd worden in Form1 met een vooraf ingestelde grootte en moet geplaats worden in een soort van raster, dat de buttons allemaal in volgorde staan.

Wie kan mij hierbij helpen?

Ben hier al een tijdje mee bezig en ben nog niet wijzer geworden :P

Bij voorbaat dank,
Jewst
 
Laatst bewerkt:
OK knop van de popup:

Code:
Dim NewButton as new button

with NewButton
'eigenschappen
.Text = "Button"
.Location = new point(100, 100)
end with

AddHandler NewButton.Click, New System.EventHandler(AddressOf NewButton_Click)

Form1.Controls.Add(NewButton)

En een NewButton_Click event (dit is hetzelfde voor alle aangemaakte buttons):

Code:
Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        MsgBox("NewButton_Click!")
    End Sub

(Dit is VB .net)
 
Laatst bewerkt:
bedankt! hier ben ik een stuk vooruit gekomen! maar werkt nog niet...
ik ga nu nog even verder prutsen en als ik dan niet verder kom dan hoor je het wel ;)

en sorry ik heb ook vb.net :)
 
Je kan hem er natuurlijk ook gewoon al vast inzetten en dan als er op OK wordt gedrukt hem gewoon laten verschijnen.
 
dat is ook een hele goeie maar er moeten meerdere buttons toegevoegd worden. en ik weet niet hoeveel buttons toegevoegd moeten worden.

mvg
Jewst
 
die button verschijnt maar niet ninjaplayer :(
die buttons moeten ook in een raster komen dus als je er bv. 10 toevoegd zitten ze allemaal mooi in een rijtje :D
maar ik heb ook nog een andere vraag...
ik moet ook button verwijderen, dus als je op de verwijder button klikt komt er een messagebox en na het op OK klikken moet je op de button klikken die verwijdert moet worden.
 
uhmmm...

Onder Publi Class Form1 schrijf je Dim Y as Long = 10.

Dan ga je naar de event dat een nieuwe button maakt en vervangt dan de Y coordinaat door Y. Ergens er onder schrijf je Y += New_Button.Height + 10.

Telkens als je een nieuwe knop aanmaakt, wordt er bij Y New_Button.Height + 10 op geteld en bij de volgende knop komt die eronder.

Ik moet nu even weg dus help ik je later met het verwijder gebeure :thumb:.
 
dank je wel! en als je nou 4 buttons naast elkaar wil hebben?

en dan nog iets :o

hoe geef je elke button zijn eiegen naam?

alvast bedankt!
 
Laatst bewerkt:
Met New_Button.Name = "Naam"

Maar je kan ook een list maken (onder public class form1):

Dim Buttons as New List (of button)

en bij het New_button event onder form1.controls.add ook de button bij de list toevoegen. dan kan je via de index bij de button komen.

En naast elkaar gaat bijna hetzelfde als onder elkaar, gewoon bij de X as 10 + New_Button.Width optellen.
 
Laatst bewerkt:
dank je wel!
en als je dan die 4 buttons naast elkaar hebt kan het dan ook zo dat de 5e button onder de 1ste komt?
en hoe voeg je dat dan precies toe?
 
Misschien kun je een int maken en steeds 1 bij optellen:

Code:
If intButton = 4 Then
X = 10
Y += NewButton.Height + 10
intButton = 0
Else
X += NewButton.Width + 10
intButton += 1
End If
 
dit werkt goed!
nu nog het verwijderen... ik kan het wel oplossen door de visibility van de button op false te zetten maar dat is ook niet echt netjes :P
 
Laatst bewerkt:
Je kunt een list maken wat verwijderen makkelijk maakt.

Onder Public Class maak je een lijst van het type button:

Code:
Public Class frmButtons
Dim lstButtons As New List(Of Button)

En bij het maken van een nieuwe button moet je de button ook toevoegen aan de lijst:

Code:
lstButtons.Add(New_Button)

En om te verwijderen was het dacht ik dit:

Code:
lstButtons.Remove(lstButtons.Count - 1)
'Hiermee verwijder je de laatste knop die er aan toegevoegd is.

Ik hoop dat je hier iets mee kan :thumb:
 
hier kan ik zeker veel mee.
maar had in gedachten dat je op een button klikt en komt er een messagebox tevoorschijn, en dat je dan op de button kan klikken welke je wil verwijderen.
zou dit mogelijk zijn of ben ik te moeilijk bezig?

ik moet dit maken voor een bedrijf en moet idiot proof zijn :P

ook moeten er plaatjes in de buttons komen en ik heb al een openfiledialog die het desbetreffende plaatje selecteerd maar ik weet niet hoe je dat plaatje toevoegd aan de button.

bij voorbaat dank
 
Laatst bewerkt:
Kan je de automatische aangemaakte buttons ook op een bepaalde positie laten plaatsen?
en ik heb verwijderen kan je ook wel laten zitten...
dat ga ik nu ipv een 'delete' button vervangen door op de rechtermuisknop te drukken.... stukken makkelijker lijkt mij..

dus nu rust er alleen nog de vraag die ik in de 1e zin al stelde...

mvg
Jewst
 
Laatst bewerkt:
Grr!! :mad:

de buttons toevoegen werkte eerst perfect, maar als ik nu meerdere buttons wil toevoegen vervangt hij de oude button met de nieuwe en verschuift hij hem met een nieuwe :S

Code:
Public Class Dialog1
    Dim Y As Long = 6
    Dim X As Long = 6
    Dim buttons As New List(Of Button)
    Dim intButton As Integer
    Dim lstButtons As New List(Of Button)
    Dim NewButton As New Button

    Public Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

        With NewButton
            .Text = Me.Textbox1.Text
            .Location = New Point(X, Y)
            .Name = Me.Textbox1.Text
            .Width = 149
            .Height = 149
            .BackgroundImage = System.Drawing.Image.FromFile(Me.TextBox5.Text)
        End With
        AddHandler NewButton.Click, New System.EventHandler(AddressOf NewButton_Click)
        Form1.Controls.Add(NewButton)
        NewButton.BringToFront()
        If intButton = 7 Then
            X = 6
            Y += NewButton.Height + 6
            intButton = 0
        Else
            X += NewButton.Width + 6
            intButton += 1
        End If
        lstButtons.Add(NewButton)
        Me.Close()
    End Sub

Wat doe ik fout?
 
Laatst bewerkt:
Je kunt twee dingen doen:

1. Je moet die list en locaties etc in je form1 zetten. Maar geen dim maar public, en om er bij te kunnen, schrijf je er Form1 voor: Form1.lstButtons.Add(NewButton). NewButton kun je gewoon daar laten.

2. In plaats van het te closen (me.close), kun je hem ontzichtbaar maken (me.visibile = false).
 
ik heb beide opties geprobreerd en gecombineerd maar geen van beide verhelpen het probleem :(

Code:
Public Class Dialog1
    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
        With Form1.NewButton
            'eigenschappen
            .Text = Me.Textbox1.Text
            .Location = New Point(Form1.X, Form1.Y)
            .Name = Me.Textbox1.Text
            .Width = 149
            .Height = 149
            .BackgroundImage = System.Drawing.Image.FromFile(Me.TextBox5.Text)
            .Visible = True
        End With
        AddHandler Form1.NewButton.Click, New System.EventHandler(AddressOf NewButton_Click)
        Form1.Controls.Add(Form1.NewButton)
        Form1.NewButton.BringToFront()
        If Form1.intButton = 7 Then
            Form1.X = 6
            Form1.Y += Form1.NewButton.Height + 6
            Form1.intButton = 0
        Else
            Form1.X += Form1.NewButton.Width + 6
            Form1.intButton += 1
        End If
        Form1.lstButtons.Add(Form1.NewButton)
        Me.DialogResult = Windows.Forms.DialogResult.OK
        Me.Visible = False
    End Sub

    Private Sub NewButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        System.Diagnostics.Process.Start(Me.Textbox2.Text)
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
        Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
        Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Using ofd As New OpenFileDialog
            ofd.Filter = "PALPC files (*.IN)|*.IN"
            ofd.Title = "Select File"
            If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
                Textbox2.Text = ofd.FileName
            End If
        End Using
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Using ofd As New OpenFileDialog
            ofd.Filter = "image Files (*.gif;*.jpg;*.jpeg;*.bmp;*.png)|*.gif;*.jpg;*.jpeg;*.bmp;*.png"
            ofd.Title = "Select Image"
            If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then
                TextBox5.Text = ofd.FileName
            End If
        End Using
    End Sub
End Class


Code:
Public Class Form1
    Public Y As Long = 6
    Public X As Long = 6
    Public buttons As New List(Of Button)
    Public intButton As Integer
    Public lstButtons As New List(Of Button)
    Public NewButton As New Button

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.AutoScroll = True
        Dim scrlButton As New Button
        Me.Controls.Add(scrlButton)
        scrlButton.Location = New Point(0, 2400)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim dialog As New Dialog1
        Dialog1.ShowDialog()
    End Sub


End Class
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan