• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Визуальные компоненты в режиме Runtime

  • Автор темы Sulik
  • Дата начала
S

Sulik

Как возможно создавать компоненты в режиме Runtime, т.е, допустим, что я хочу при нажатии кнопки, на форме создавался label? Какими методами необходимо оперировать?
 
S

Sulik

sax_ol, можешь показать пример с лейблом?

sax_ol, можешь показать пример с лейблом?
 
E

Electro

Как возможно создавать компоненты в режиме Runtime, т.е, допустим, что я хочу при нажатии кнопки, на форме создавался label? Какими методами необходимо оперировать?
проще всего заглянуть в файл xxx.Designer.cs
 
L

ljuter

При нажатии на элемент меню (например "Новый") на форме программно создается Panel1. Как определить создан элемент на форме или нет? Мне надо сделать чтобы сколько не жать на меню, Panel1 создавался только один раз.
 
L

ljuter

[codebox]Public Class Form1

Public Class panel_in_out
Inherits Panel
Dim ParentForm As Form
Dim myPanel As panel_in_out
Dim textBox1 As TextBox
Dim label1 As Label
Dim button1 As Button
'left
Dim x As Integer
'top
Dim y As Integer

Public Sub CreatePanel(ByVal parentForm, ByVal x, ByVal y)
textBox1 = New TextBox()
label1 = New Label()
button1 = New Button()
' Initialize the Panel control.
Me.Name = "Panel"
Me.Location = New Point(x, y)
Me.Size = New Size(parentForm.Width \ 2, parentForm.Height - y)
' Set the Borderstyle for the Panel to three-dimensional.
Me.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D

' Initialize the Label, TextBox controls and button.
label1.Location = New Point(16, 16)
label1.Text = "label1"
label1.Size = New Size(104, 16)
textBox1.Location = New Point(16, 32)
textBox1.Text = ""
textBox1.Size = New Size(152, 20)
button1.Location = New Point(16, 52)
button1.Text = "Закрыть"
button1.Size = New Size(152, 20)

' Add the Label and TextBox controls to the Panel.
Me.Controls.Add(label1)
Me.Controls.Add(textBox1)
Me.Controls.Add(button1)

' Add the Panel control to the form.
parentForm.Controls.Add(Me)

AddHandler button1.Click, AddressOf myClick1

End Sub

Public Sub myClick1(ByVal sender As Object, ByVal e As EventArgs)
Me.Dispose()
End Sub

End Class

' Создается панель на форме
Private Sub ОбменToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ОбменToolStripMenuItem.Click
Dim panel1 As New panel_in_out
panel1.CreatePanel(Me, 0, MenuStrip1.Height)
End Sub

End Class[/codebox]
 
L

ljuter

Если пишу
Код:
For i = 0 To Me.Controls.Count
if me.Controls.Item is panel_in_out And CType(me.Controls.Item, panel_in_out).Name = "(то что задали)"
то выдает ошибку
Код:
Ошибка1	"panel_in_out" является типом и не может использоваться как выражение.
Если просто
Код:
For i = 0 To Me.Controls.Count
if CType(me.Controls.Item, panel_in_out).Name = "(то что задали)"
то ругается на другие компоненты на форме:
Код:
Не удалось привести тип объекта "System.Windows.Forms.Label" к типу "panel_in_out"
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!