3 ضمیمه
تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
به نام خدا
سلام؛
در اینجا می خوایم یک فرم رو تبدیل کنیم به Child Control و اون رو در یک Panel که یک Container Control هستش در یک فرم دیگر نمایش دهیم، و برای مثال یک خصوصیت داریم که مقدار اون رو در فرم والد یا Parent فراخوانی می کنیم:
این تصویر و کدهای فرمی هست که می خوایم شیء فرزند بشه:
ضمیمه 153911
Public Class Form1
Private Expr As New Dictionary(Of String, String)
Public Property SelectedItem() As KeyValuePair(Of String, String)
Get
Return Me.ComboBox1.SelectedItem
End Get
Set(ByVal value As KeyValuePair(Of String, String))
Me.ComboBox1.SelectedItem = value
End Set
End Property
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With Expr
.Add("Item1", "Item1 Is selected.")
.Add("Item2", "Item2 Is selected.")
.Add("Item3", "Item3 Is selected.")
.Add("Item4", "Item4 Is selected.")
End With
With Me.ComboBox1.Items
.Clear()
For Each Item As KeyValuePair(Of String, String) In Expr
.Add(Item)
Next
End With
Me.ComboBox1.SelectedIndex = 0
End Sub
Private Sub ComboBox1_DrawItem(sender As System.Object, e As System.Windows.Forms.DrawItemEventArgs) Handles ComboBox1.DrawItem
Dim G As Graphics = e.Graphics
Dim V As String = CType(Me.ComboBox1.Items(e.Index), KeyValuePair(Of String, String)).Key
e.DrawBackground()
G.DrawString(V, e.Font, New SolidBrush(e.ForeColor), 2, e.Bounds.Y + 2)
End Sub
End Class
و این هم فرم اصلی و کد فراخوانی فرم اول در یک Panel:
ضمیمه 153909
Public Class HelloWorld
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
With Form1.SelectedItem
MsgBox(String.Format("Selected Item Key is {0} and Value is: {1}", .Key, .Value))
End With
End Sub
Private Sub HelloWorld_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
With Form1
.TopLevel = False
.WindowState = FormWindowState.Maximized
.FormBorderStyle = Windows.Forms.FormBorderStyle.None
.Visible = True
End With
Me.Panel1.Controls.Add(Form1)
End Sub
End Class
این هم حالت RunTime:
ضمیمه 153910
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
سلام
از روشی که گفتین استفاده کردم . خوب بود و درست عمل کرد.
اما وقتی که کامبوهای خودم که در کدنویسی با اتصال بانک پر میشند . درست کار نمیکرد و اطلاعات کامبو را Null برگشت میداد.
کدها را عوض کردم و برای تکست باکس و چک باکس هم اجرا کردم و باز هم Null برگشت میداد . چک باکس را کلا False برگشت میده .
کدهای فرم دوم
Public Property strValSat() As Boolean
Get
Return Me.ChkBxSat.Checked
End Get
Set(ByVal value As Boolean)
Me.ChkBxSat.Checked = value
End Set
End Property
Public Property strValPri() As String
Get
Return Me.TxtBxSPri.Text
End Get
Set(ByVal value As String)
Me.TxtBxSPrii.Text = value
End Set
End Property
Public Property ValYet() As KeyValuePair(Of String, String)
Get
Return Me.CmbBxYet.SelectedValue
End Get
Set(ByVal value As KeyValuePair(Of String, String))
Me.CmbBxYet.SelectedValue = value
End Set
End Property
کذهای فرم اول
With Frm2.ValYet
MsgBox(String.Format("Selected Item Key is {0} and Value is: {1}", .Key, .Value))
End With
حتی تکست باکس و چک باکس هم مقدار درست را برگشت نداده.
ممنون میشم راهنمایی کنید
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
سلام
از روشی که گفتین استفاده کردم . خوب بود و درست عمل کرد.
اما وقتی که کامبوهای خودم که در کدنویسی با اتصال بانک پر میشند . درست کار نمیکرد و اطلاعات کامبو را Null برگشت میداد.
کدها را عوض کردم و برای تکست باکس و چک باکس هم اجرا کردم و باز هم Null برگشت میداد . چک باکس را کلا False برگشت میده .
کدهای فرم دوم
Public Property strValSat() As Boolean
Get
Return Me.ChkBxSat.Checked
End Get
Set(ByVal value As Boolean)
Me.ChkBxSat.Checked = value
End Set
End Property
Public Property strValPri() As String
Get
Return Me.TxtBxSPri.Text
End Get
Set(ByVal value As String)
Me.TxtBxSPrii.Text = value
End Set
End Property
Public Property ValYet() As KeyValuePair(Of String, String)
Get
Return Me.CmbBxYet.SelectedValue
End Get
Set(ByVal value As KeyValuePair(Of String, String))
Me.CmbBxYet.SelectedValue = value
End Set
End Property
کذهای فرم اول
With Frm2.ValYet
MsgBox(String.Format("Selected Item Key is {0} and Value is: {1}", .Key, .Value))
End With
حتی تکست باکس و چک باکس هم مقدار درست را برگشت نداده.
ممنون میشم راهنمایی کنید
1 ضمیمه
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
این خصوصیتهایی که مقادیر چک باکس و تکست باکس رو می گیرن:
Public Property Checked() As String
Get
Return Me.CheckBox1.Checked
End Get
Set(ByVal value As String)
Me.CheckBox1.Checked = value
End Set
End Property
Public Property Value() As String
Get
Return Me.TextBox1.Text
End Get
Set(ByVal value As String)
Me.TextBox1.Text = value
End Set
End Property
و این هم فراخوانی مقادیر:
ضمیمه 153913
دوباره امتحان کن با فرمهای جدید.
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
نقل قول:
اما وقتی که کامبوهای خودم که در کدنویسی با اتصال بانک پر میشند . درست کار نمیکرد و اطلاعات کامبو را Null برگشت میداد.
اینکه اشیاء به بانک اطلاعاتی متصلن درست، مهم اینه که اشیاء مقدار رو بگیرن که بتونن مقدار برگردونن.
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
سلام
ممنون آقای رستمی
عالی بود . مشکل برگردوندن مقدارها حل شد. مرسی
چند روز هست مزاحم شما میشم . ببحشید حلال کنید
یه سوال دیگه هم دارم.
وقتی که فرم دوم را به فرم اول وصل میکنیم . میگیم فوکوس کن به تکست فاکس فلان در فرم دوم . اما هیچ اتفاقی نمیوفته.
حتی در لود فرم دوم هم ، فوکوس را میگذارم ، اما فوکوس نمیکنه .
With FrmDev
.TopLevel = False
.WindowState = FormWindowState.Maximized
.FormBorderStyle = Windows.Forms.FormBorderStyle.None
.Visible = True
End With
PnlDev1.Controls.Clear()
PnlDev1.Controls.Add(FrmDev)
PnlDev1.Visible = True
FrmDev.TxtBxSPri.Focus()
حتی فوکوس را آوردن داخل حلقه With باز هم اتفاقی نیوفتاد .
زحمت میکشید راهنمایی کنید.
ممنون
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
نقل قول:
وقتی که فرم دوم را به فرم اول وصل میکنیم . میگیم فوکوس کن به تکست فاکس فلان در فرم دوم . اما هیچ اتفاقی نمیوفته.
حتی در لود فرم دوم هم ، فوکوس را میگذارم ، اما فوکوس نمیکنه .
سلام.
از رویداد Shown از خود فرم استفاده کن:
Private Sub Form1_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown
Me.TextBox1.Focus()
End Sub
1 ضمیمه
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
سلام آقای رستمی
سوال اول
با روش شما فرمها را در فرم اصلی لود کردم . حالا موقع بستن فرم ارور میده. شکل زیر را ببینید.
ضمیمه 153918
سوال دوم
وقتی مقدار کامبوباکس را با کلیک کردن و از لیست انتخاب میکنم ، مقدارها را میگیره و بر میگردونه . اما اگه مقدارهای داخل کامبوباکس ها را دستی و به وسیله صفحه کلید وارد کنیم ، مقدارها را صفر برمیگردونه .(مقدارهایی که در لیست کامبوباکس موجود هست) بابت این مورد باید چیکار کرد ؟
لطفا راهنمایی کنید
ممنون
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
سلام
برای CLOSE که گیرش کدهای مدیرت نشده ذکر کرده که دستوراتی هست که باید کارشون تموم شه تا فرم بتونه بسته بشه. همه دستوراتی که باهاش کار می کنی رو چک کن.
در مورد کامبو باکس هم SelectedItem رو خروجی بگیر.
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
نقل قول:
نوشته شده توسط
ROSTAM2
سلام
برای CLOSE که گیرش کدهای مدیرت نشده ذکر کرده که دستوراتی هست که باید کارشون تموم شه تا فرم بتونه بسته بشه. همه دستوراتی که باهاش کار می کنی رو چک کن.
ممنون جواب دادید . از شما سپاسگزارم
آخر کار یک تایمر دارم برای پروگرس بار . شاید احتمالا کار اون تموم نشده که ارور میده .
قبل از اینکه کلید خروج روشن بشه این خط را اضافه کردم . درست شد
Threading.Thread.Sleep(3000)
نقل قول:
در مورد کامبو باکس هم SelectedItem رو خروجی بگیر
SelectedItem گذاشتم خطا نوع داده ، تو پروپرتی گرفت .
نقل قول: تبدیل فرم به یک کنترل یا شیء فرزند و نمایش آن در یک Container Control مثل Panel
خوب ببین دیتا تایپی که به آیتم های کامبوباکس دادی چی هست دیتاتایپ خصوصیت رو هم همون تعیین کن.