PDA

View Full Version : فراخوانی یک event در فرم دیگر



bahramsport
سه شنبه 14 شهریور 1385, 11:39 صبح
سلام
مشکل من این است که فرض کنیم 2 تا دیتاگرید داریم یکی در فرم 1 و دیگری در فرم 2 ما از داخل فرم 1 فرم 2 را فرا میخوانیم . حالا من میخواهم بدون اینکه فرم 2 بسته شود هر بار که روی یک آیتم دیتاگرید فرم 2 کلیک میکنیم این آیتم با یک سری مشخصات که خودم تعریف میکنم در همان لحظه به دیتاگرید فرم 1 اضافه بشود . فقط قابل توجه اینکه فرم 2 نمی خواهم بسته بشه ؟؟؟؟
و مشکل بعدی که تغریبا مرتبط با مشکل اوله :
من یک فرم دارم که با textboxورود اطلاعات میکنه و یک textbox داره به نام شماره که با وارد کردن شماره اطلاعات را مییاره و باکس ها را پر میکنه . حالا من یک جستجو دارم که به صورت datagridاست میخوام وقتی رو شماره پرونده کلیک بشه همون فرم اولم باز شه واطلاعات نمایش داده بشه مشکل من اینه که چگونه eventکلید اینتر که روی textbox شمارم در فرم ورود اطلاعاتم عمل میکنه را از فرم جستجو فراخوانی کنم : ؟؟؟؟؟ یا اصلا میشه مثلا کلیک یک باتن را از یک فرم دیگر فراخوانی کرد ؟؟؟؟

ghafoori
سه شنبه 14 شهریور 1385, 16:43 عصر
دوست عزیز راحترین راه این است که خاصیت modifiers کنترلی که مقدار ان را می خواهید را public کنید بعد می توانید به رویداد و مقدار ان کنترل داخل فرم 2 دست پیدا کنید و با کد زیر رویداد را اضافه کنید



Dim f As New Form2

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler f.TextBox1.TextChanged, AddressOf text_chang
f.Show()
End Sub
Sub text_chang(ByVal sender As Object, ByVal e As EventArgs)
Me.Text = f.TextBox1.Text
End Subمن داخل فرم 2 یک تکس باکس قرار دادم و خاصیت modifier را عوض کردم حالا اگر کاربر داخل تکس باکس فرم 2 چیزی بنویسد خاصیت تکس فرم1 عوض می شود فکر میکنم مشکل شما دیگه حل میشود

bahramsport
سه شنبه 14 شهریور 1385, 18:08 عصر
منظور من مثلا کلیک کردن یک button در فرم 2 است این کار را من با تمام آن چیزهایی که شما گفته اید قبلا انجام دادم ولی کلیک را نتوانستم
در مورد سوال اول datagrid هنوز به جواب نرسیدم ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

ghafoori
سه شنبه 14 شهریور 1385, 19:49 عصر
دوست عزیز ببینید منظور شما را درست فهمیدم اگر نه توضیحات کاملتری بگید که منظور شما چیست
سوال اولتون گفته بودید کاربر مثلا با دوبار کلیک روی سطری از دیتاگرید اطلاعات از دیتاگرید فرم2 به فرم 1 منتقل شود من طبق جوابی که قبلا دادم به کد زیر رسیدم که اطلاعات از جدول 2 به جدول 1 میرسد این هم کد و پروژه
4898


Dim f As New Form2
Dim dg As DataGridView
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
f.Show()
AddHandler f.DataGridView1.CellDoubleClick, AddressOf selectdg
End Sub
Sub selectdg(ByVal sender As Object, ByVal e As DataGridViewCellEventArgs)
dg = CType(sender, DataGridView)
DataGridView1.Rows.Add(dg.Rows(e.RowIndex).Cells(e .ColumnIndex).Value)
End Sub
سوا دوم شما که واضح نبود شما میخواهید کاربر با زدن مثلا دکمه اینتر صفحه ای برایش باز بشود که نتایج جستجو را دارد و کاربر هم با انتخاب یک گزینه نتیجه را به فرم1 منتقل کند ایا منظور شما این است

اَرژنگ
چهارشنبه 15 شهریور 1385, 03:27 صبح
سلام
مشکل من این است که فرض کنیم 2 تا دیتاگرید داریم یکی در فرم 1 و دیگری در فرم 2 ما از داخل فرم 1 فرم 2 را فرا میخوانیم . حالا من میخواهم بدون اینکه فرم 2 بسته شود هر بار که روی یک آیتم دیتاگرید فرم 2 کلیک میکنیم این آیتم با یک سری مشخصات که خودم تعریف میکنم در همان لحظه به دیتاگرید فرم 1 اضافه بشود . فقط قابل توجه اینکه فرم 2 نمی خواهم بسته بشه ؟؟؟؟

۱) به جایه اینکه به داتا گتید اضافه کنید، آیتمتان را به داتاست داتاگرید اضافه کنید.
۲)منظورتان از بسته نشدن فرمه ۲ چیه، همینطورک که فرم بسته نمیشه
۳)به جایه اینکه به روش کاراهیه داخلی فرم ۱ از یک فرمه دیگر دخالت کنید، بهتر این است که یک سری متدهایه پابلیک را تعریف کنید که واضح و مشخص باشد که کدام متدها از بیرون فراخوانی میشند.



و مشکل بعدی که تغریبا مرتبط با مشکل اوله :
من یک فرم دارم که با textboxورود اطلاعات میکنه و یک textbox داره به نام شماره که با وارد کردن شماره اطلاعات را مییاره و باکس ها را پر میکنه . حالا من یک جستجو دارم که به صورت datagridاست میخوام وقتی رو شماره پرونده کلیک بشه همون فرم اولم باز شه واطلاعات نمایش داده بشه مشکل من اینه که چگونه eventکلید اینتر که روی textbox شمارم در فرم ورود اطلاعاتم عمل میکنه را از فرم جستجو فراخوانی کنم : ؟؟؟؟؟ یا اصلا میشه مثلا کلیک یک باتن را از یک فرم دیگر فراخوانی کرد ؟؟؟؟
البته که میشه، ولی این روش درستی نیست.
به جایه اینکه باتن کلیک ر افرا خوانی کنید، کدتان را در یک ساب دیگر قرار داده و هم از باتن کلیک و یا هرجایه دیگر فراخوانی کنید.

bahramsport
چهارشنبه 15 شهریور 1385, 17:46 عصر
میشه برای این دومی یک مثال بزنید ؟

ghafoori
چهارشنبه 15 شهریور 1385, 21:30 عصر
من قبلا گفته بودم که سوال دوم شما نا مفهوم است اگر برداشت من درست باشد

سوا دوم شما که واضح نبود شما میخواهید کاربر با زدن مثلا دکمه اینتر صفحه ای برایش باز بشود که نتایج جستجو را دارد و کاربر هم با انتخاب یک گزینه نتیجه را به فرم1 منتقل کند
اگر این باشد شما یک متغییر در فرم2 تعریف کنید در این متغییر چیزی که می خواهید جستجو کنید را قرار بدید حالا داخل فرم2 اطلاعات را براساس ان متغییر لود کنید با روشی که قبلا گفتم اطلاعات را انتقال بدهید

تذکر:این روشی که برای انتقال اطلاعات دادم همون طور که دوست عزیز آرژنگ گفتن با اصول شی گرایی زیاد جور در نمی یاد اما راحتترین راه است برای پروژه های کوچک اشکالی ندارد اما اگر روی کار بزرگی کار می کنید اصلا توصیه نمی شود چون باعث سردرگمی و اشکالات دیگر در اینده می شود

bahramsport
پنج شنبه 16 شهریور 1385, 20:45 عصر
من میگم مثلا 2 صفحه باز است form1 , form2 و در هر دو datagrid سات حالا وقتی من روی یک عضو روی دیتاگرید از فرم 2 کلیک میکنم همان زمان این مقدار روی گرید که در form1 است نمایش داده بشه ؟