PDA

View Full Version : ارسال متغیر public



resident
یک شنبه 06 بهمن 1387, 13:13 عصر
سلام.

من یه فرم دارم (به نام frmInvoices) .یک دکمه داخلش هست .مسخوام وقتی روی این دکمه کلیک می کنم فرم frmServices باز بشه بعد وقتی فرم frmServices بسته میشه مقدار یکی از service ها که انتخاب کردم داخل یک combobox در فرم frmInvoices قرار بگیره.
این کدها رو نوشتم .





frmInvoices
--------------------------------------------------------
Public ServiceName_Invoice As string
Private Sub btnOpenService_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOpenService.Click
frmService.ShowDialog()
Me.cmbService.Text = Me.ServiceName_Invoice





End Sub










frmServices
--------------------------------------------------------
Private Sub frmService_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed


frmInvoices.ServiceName_Invoice = cmb1.Text & " - " & cmb2.Text
End Sub





cmb1.Text & " - " & cmb2.Text در فرم frmServices مقدار داره اما وقتی تو فرم frmInvoices میاییم مقدارNothing ،ServiceName_Invoice است. به نظر شما کجای کارم مشکل داره؟

Naruto
یک شنبه 06 بهمن 1387, 21:36 عصر
سلام.

امیدوارم این کمک کنه:



Public Class frmInvoices
Private Sub ServiceBtn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ServiceBtn.Click
frmService.ShowDialog()
End Sub
End Class




Public Class frmServices
Public Temp As String
Private Sub Form2_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
Temp = ComboBox1.SelectedItem.ToString
frmInvoices.TextBox1.Text = Temp 'Or ComboBox1.SelectedItem.ToString
End Sub

End Class

resident
دوشنبه 07 بهمن 1387, 08:19 صبح
سلام.

امیدوارم این کمک کنه:

[/code]

Naruto جان ممنون از اینکه وقت گذاشتی و جواب دادی. نتیجه این کارهم دقیقا مثل همون نتیجه ایست که خودم گرفتم. یعنی متغیر Temp مقدار داره اما text مربوط به combobox فرم frmInvoices "" است.

mostafaaa
دوشنبه 07 بهمن 1387, 10:18 صبح
سلام دوستان من
یکی از راههایی که برای این کار میتونید استفاده بکنید اینه که یه Property در فرم دومتون تعریف کنید و مقدارش رو براحتی فراخوانی کنید . برای مثال :

Public Class Form2
Private _Value As String
Public ReadOnly Property MyValue() As String
Get
Me.ShowDialog()
Return _Value
End Get
End Property
End Class
برای استفاده از این فرم هم دیگه لازم نیست اون رو مستقیما ShowDialog کنید به این شکل میتونید ازش استفاده کنید :

Public Class Form1
Private ServiceName_Invoice As String
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ServiceName_Invoice = Form2.MyValue
End Sub
End Class

یا میتونید به جای Property از یه متد استفاده کنید که کلیت کار زیاد با هم فرق نمیکنه.
یا علی