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

Тема в разделе ".NET", создана пользователем Sulik, 26 мар 2008.

  1. Sulik

    Sulik Гость

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

    Sulik Гость

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

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

    Electro Гость

    проще всего заглянуть в файл xxx.Designer.cs
     
  4. ljuter

    ljuter Гость

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

    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]
     
  6. ljuter

    ljuter Гость

    Так что ли?
    Код (Text):
     For i = 0 To Me.Controls.Count
    if me.Controls.Item is (что должно быть?)
    Next
     
  7. ljuter

    ljuter Гость

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

Поделиться этой страницей