PDA

View Full Version : سوال: چطوري هنگام ارث بري از يك فرم بايد به تابع new از فرم مادر پارامتر پاس داد?



combo_ci
چهارشنبه 08 خرداد 1387, 12:58 عصر
سلام
من يك فرم پايه توي پروژم دارم...اين فرم در تابع new يك پارامتر داره

Public Sub New(ByVal code As Integer)

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

' Add any initialization after the InitializeComponent() call.

End Sub

حالا اگر از اين فرم ارث ببرم بايد به اونجايي كه دارم كد ارث بري رو مينويسم برنامه خطا ميده و دليلشم وجود پارامتر ورودي در تابع new از فرم مادر هست
توي c# با كد زير ميشه به كلاس كانستراكتور فرم مادر پارامتر پاس داد...

public class ChildForm: BaseForm
{
public ChildForm () : base(code)
{
‌‌}
}


كسي ميدونه تو vb.net چطور بايد اين كارو كرد؟

Dariuosh
چهارشنبه 08 خرداد 1387, 13:56 عصر
Base تو #C همون MyBase تو VB هستش

combo_ci
چهارشنبه 08 خرداد 1387, 15:25 عصر
آره همين طور كه شما ميگيد معادلش mybase هست اما من منظورم اين خط هست

public ChildForm () : base(code)

ببين اينجا هم كانستراكتور كلاس فرزند صدا زده ميشه (childForm) و هم كتنستراكتور كلاس پايه

ميخواستم ببينم اين كد رو چطور بايد تو vb.net نوشت

Dariuosh
پنج شنبه 09 خرداد 1387, 01:37 صبح
تو فرمي که به ارث ميره يه متد New خالي هم بذار

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
Public Sub New(ByVal Code As Integer)
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub

اونوقت تو فرم فرزند هر کدومو خواستي صدا کن

combo_ci
پنج شنبه 09 خرداد 1387, 05:22 صبح
تو فرمي که به ارث ميره يه متد New خالي هم بذار

Public Sub New()
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub
Public Sub New(ByVal Code As Integer)
' This call is required by the Windows Form Designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
End Sub

اونوقت تو فرم فرزند هر کدومو خواستي صدا کن

حرفتون كاملا درست هست ....اما واسه وقتي كه بخوايم توي كد يه object از كلاس مادر بگيريم

كار شما درست هست دوست عزيز.......................
اصلا شما خودت اينو امتحان كن.........يه فرم درست كن و به تابع new يه ارگومان (مثلا code as char ) اضافه كن مثلا BaseForm.....حالا يه فرم ديگه (يه فرم Inherits شده )به پروژت اضافه كن مثلا childFrom و به از baseForm ارث ببر ....
در اينجا با خطاي


Error 2 Class 'WindowsApplication132.ChildForm' must declare a 'Sub New' because its base class 'WindowsApplication132.BaseForm' does not have an accessible 'Sub New' that can be called with no arguments. C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\WindowsApplication132\WindowsApplica tion132\ChildForm.Designer.vb 2 15 WindowsApplication132


حتي وقتي اين كارو هم ميكنم

First statement of this 'Sub New' must be a call to 'MyBase.New' or 'MyClass.New'
بازم designer خود فرم رو به من نشون نميده

اينم sample اين كاري كه گفتم