как создать конструктор для моего компонента

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

как создать конструктор для моего компонента

Сообщение viter.alex » 03.08.2008 (Вс) 22:28

У меня есть мой компонент, который выглядит так:
Изображение
Пишу конструктор:
Код: Выделить всё
Public Sub New(ByVal nbr As Integer)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

       StripNbr_Lbl.Text = nbr.ToString ' Add any initialization after the InitializeComponent() call.

    End Sub

Но при компиляции выдает ошибку
Изображение

В чем ошибка?

Задача состоит в том, что бы при создании компонента в RunTime задавать номер слева.
Лучше день потерять — потом за пять минут долететь!

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 04.08.2008 (Пн) 6:14

Попробуй добавить конструктор без параметров
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Сообщение viter.alex » 04.08.2008 (Пн) 6:26

Nord777 писал(а):Попробуй добавить конструктор без параметров

Все равно не работает! Пишет то же самое. Причем компонент на форму можно добавить обычным способом, но задать создание в программе не получается. А ведь ради этого он, собственно и делался.
Лучше день потерять — потом за пять минут долететь!

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 04.08.2008 (Пн) 8:04

viter.alex писал(а):
Nord777 писал(а):Попробуй добавить конструктор без параметров

Все равно не работает! Пишет то же самое. Причем компонент на форму можно добавить обычным способом, но задать создание в программе не получается. А ведь ради этого он, собственно и делался.
Код в студию!
Весь мир матрица, а мы в нем потоки байтов!

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Сообщение viter.alex » 04.08.2008 (Пн) 17:30

Viper писал(а):Код в студию!

Код: Выделить всё

Imports System.Drawing.Color
Public Class StripFields
    Inherits System.Windows.Forms.UserControl

    Private m_Nbr, m_Qnt As Integer
    Private m_Lenght, m_Width As Double
    Private m_BackColor As System.Drawing.Color

    Public Sub New(ByVal nbr As Integer)

    '    ' This call is required by the Windows Form Designer.
        InitializeComponent()

        StripNbr_Lbl.Text = nbr.ToString ' Add any initialization after the InitializeComponent() call.

    End Sub
    Public Property StripLenght() As Double
        Get
            Return m_Lenght
        End Get
        Set(ByVal value As Double)
            m_Lenght = value
            Lenght_UpDwn.Value = m_Lenght
        End Set
    End Property

    Public Property StripWidth() As Double
        Get
            Return m_Width
        End Get
        Set(ByVal value As Double)
            m_Width = value
            Width_UpDwn.Value = m_Width
        End Set
    End Property

    Public Property StripQnt() As Integer
        Get
            Return m_Qnt
        End Get
        Set(ByVal value As Integer)
            m_Qnt = value
            Qnt_UpDwn.Value = m_Qnt
        End Set
    End Property

    Public Property StripNbr() As Integer
        Get
            Return m_Nbr
        End Get
        Set(ByVal value As Integer)
            m_Nbr = value
            StripNbr_Lbl.Text = m_Nbr.ToString
        End Set
    End Property

    Public Property BorderColor() As System.Drawing.Color
        Get
            Return m_BackColor
        End Get
        Set(ByVal value As System.Drawing.Color)
            m_BackColor = value
            MyClass.BackColor = m_BackColor
        End Set
    End Property

    Private Sub Erase_Btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Erase_Btn.Click
        Me.Controls.Clear()
    End Sub
End Class
Лучше день потерять — потом за пять минут долететь!

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 04.08.2008 (Пн) 17:31

viter.alex
ну и где здесь конструктор по умолчанию (без параметров) :?

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Сообщение viter.alex » 04.08.2008 (Пн) 17:53

Выкладываю весь проект, попробуй сам убрать параметры из конструктора. Не работает :shock:
Лучше день потерять — потом за пять минут долететь!

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Сообщение viter.alex » 04.08.2008 (Пн) 18:18

Попробовал сделать так (утро вечера мудренее) и заработало.
Код: Выделить всё
Public Sub New() 'ByVal nbr As Integer

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub

    Public Sub New(ByVal nbr As Integer)

        ' This call is required by the Windows Form Designer.
        InitializeComponent()

        StripNbr_Lbl.Text = nbr.ToString ' Add any initialization after the InitializeComponent() call.

    End Sub

Затем в форму нужно импортировать WindowsControlLibrary1
Вот это работает
Код: Выделить всё
Imports WindowsControlLibrary1

Public Class Form1

    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim a As New StripFields(4)
        Me.Controls.Add(a)

    End Sub
End Class

А почему нельзя создать свой констуктор без конструктора по умолчанию?
Лучше день потерять — потом за пять минут долететь!

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 04.08.2008 (Пн) 18:34

А почему нельзя создать свой констуктор без конструктора по умолчанию?
Потому что этого требует TestContainer
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5

viter.alex
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 221
Зарегистрирован: 27.07.2008 (Вс) 20:17
Откуда: Montreal

Сообщение viter.alex » 04.08.2008 (Пн) 19:26

Nord777 писал(а):Потому что этого требует TestContainer

Что за зверь такой. Объясни с целью повышения моей образованности. Я не программист, так балуюсь по работе, лишние $100 к зарплате зарабатываю.
Лучше день потерять — потом за пять минут долететь!

Nord777
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1144
Зарегистрирован: 22.02.2004 (Вс) 13:15
Откуда: Подольск

Сообщение Nord777 » 04.08.2008 (Пн) 21:42

Что за зверь такой.
Если в двух словах, то это автоматически генерируемая форма, для тестирования твоего контрола. Эта фича задействуется когда при создании проекта выбираешь шаблон "Windows Control Library"
Microsoft Visual Studio 2008
Microsoft .NET Framework 3.5


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 61

    TopList