PDA

View Full Version : نوشتن کد برای کنترل در زمان اجرا



soonami
جمعه 12 فروردین 1390, 00:18 صبح
آیا این امکان وجود دارد برای کنترل های ساخت شده توسط کار بر در زمان اجرا کد هم نوشت

ساخت کنترل رو که یکی از دوستان راهنمایی کرد حال کد نویسی برای کنترل در زمان اجرا یکی از دوستان همین در خاست رو در
قسمت c# داده بود بهش چند تا سایت معرفی کردند ولی من چیزی متوجه نشدم خواستم ببینم چنین امانی هست یا نه

اگر هست یکم تویح بدید

shadi khanum
جمعه 12 فروردین 1390, 01:07 صبح
اگه منظورت از کد نویسی در زمان اجرا اینه که مثلا برای رویدادهاش کد بنویسی بله میشه ، البته باید کد رو تحت یه تابع نوشته باشی قبلا و بعد از اجرای برنامه و ایجاد کنترل ، ارتباط اون رویداد مورد نظرت واسه اون کنترل رو با اون تابعی که نوشتی برقرار کنی. کلا کار تو برنامه نویسی نشد نداره! :)

shadi khanum
جمعه 12 فروردین 1390, 01:12 صبح
این Sample رو ببین، شاید به دردت بخوره

milad.biroonvand
جمعه 12 فروردین 1390, 05:37 صبح
سلام این کدو ببین :





<code>Private Sub WebForm1_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
For number As Int32 = 1 To 100
Dim chk As New CheckBox
chk.ID = "chk" & number
chk.Text = chk.ID
chk.AutoPostBack = True
AddHandler chk.CheckedChanged, AddressOf onCheckedChanged
Me.MyChkPanel.Controls.Add(chk)
Next
End Sub

Private Sub onCheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim chk As CheckBox = DirectCast(sender, CheckBox)
Dim number As Int32 = Int32.Parse(chk.ID.Substring("chk".Length))
Dim otherChk As CheckBox
If number Mod 2 = 0 Then
otherChk = DirectCast(Me.MyChkPanel.FindControl("chk" & (number - 1)), CheckBox)
Else
otherChk = DirectCast(Me.MyChkPanel.FindControl("chk" & (number + 1)), CheckBox)
End If
otherChk.Enabled = Not chk.Checked
End Sub
</code></pre>

milad.biroonvand
جمعه 12 فروردین 1390, 05:39 صبح
در این کد پایین پارامتر اول ، بعد از addhandler رویدادی هست که می خوایم بسازیم و پارامتر بعدی تابعی هست که می خوایم با رخ دادن اون اتفاق کدهاش فراخوانی بشن .


<code> AddHandler chk.CheckedChanged, AddressOf onCheckedChanged</code>


<code>
</code></pre>

soonami
جمعه 12 فروردین 1390, 19:07 عصر
دوست عزیز من به مشکل خودم کدتون کار نمی کند

shadi khanum
جمعه 12 فروردین 1390, 19:40 عصر
چه کدی کار نمیکنه؟

milad.biroonvand
جمعه 12 فروردین 1390, 23:42 عصر
دوست عزیز من به مشکل خودم کدتون کار نمی کند

اگه نتونستی باش کار کنی بهم یه پیغام خصوصی بزن تا برات یه سورس آماده بزارم . که ببینی .

موفق باشی .

soonami
شنبه 13 فروردین 1390, 12:05 عصر
چه کدی کار نمیکنه؟

خدمتتون که گفتم من vs 2008 ندارم 2005 و 2010 دارم اگر ممکن هست کدتون رو این جا کپی کنید مثل کد قبلی که گذاشتید

milad.biroonvand
شنبه 13 فروردین 1390, 12:09 عصر
خدمتتون که گفتم من vs 2008 ندارم 2005 و 2010 دارم اگر ممکن هست کدتون رو این جا کپی کنید مثل کد قبلی که گذاشتید

سلام

باشه تا 1 ساعت دیگه برات می زارمش

shadi khanum
شنبه 13 فروردین 1390, 12:23 عصر
آهان، یادم اومد 2008 نداشتین.این هم source کد
یه button رو form بذار و واسه کلیکش این رو بنویس
Dim b As New Button()
b.Name = "btn1"
b.Text = "my button"
b.Top = 100
b.Left = 100
Me.Controls.Add(b)
AddHandler b.Click, AddressOf BtnClick
یه button دیگه هم بذار و واسه کلیکش این رو بنویس
Dim t As New TextBox()
t.Name = "txt1"
t.Top = 100
t.Left = 200
Me.Controls.Add(t)
AddHandler t.TextChanged, AddressOf TxtChange

این دو تا تابع رو هم تو فرم بذار
Private Sub BtnClick(ByVal sender As Object, ByVal e As EventArgs)
MsgBox(CType(sender, Button).Text)
End Sub
Private Sub TxtChange(ByVal sender As Object, ByVal e As EventArgs)
MsgBox(CType(sender, TextBox).Text)
End Sub

milad.biroonvand
شنبه 13 فروردین 1390, 12:37 عصر
گام به گام تا ساخت یک دکمه ی زمان اجرا :
1- یک پروژه جدید باز کنید .
2- بر روی فرم یک دکمه از جعبه ابزار اضافه کنید . مانند زیر :
68175

1- حالا بر روی دکمه دوبار کلیک کنید تا وارد محیط کدنویسی شوید .
کدهای زیر را درون دکمه بنویسید .

68176

شما درون دکمه از کد 2 تا یکی مانده به آخر بنویسید .
کد اول یک شی دکمه ایجاد می کند
کد دوم – متن بر روی دکمه ی زمان اجرا را تعیین می کند .
کد سوم – رنگ زمینه دکمه را مشخص می کند
کد چهارم – رنگ قلم دکمه را مشخص می کند
کد پنجم – مختصات دکمه بر روی فرم را تعیین می کند
کد ششم – مشخص می کند که وقتی بر روی دکمه کلیک شد ، چه کدهایی فراخوانی شود .
کد هفتم – دکمه را به فرم اضافه می کند .

حالا باید یک تابع بنویسیم که با کلیک بر روی آن کدهایش اجرا می شوند .
پس کدهای زیر را دقیقا به همین صورت در قبل از end class بنویسید .


68177

milad.biroonvand
شنبه 13 فروردین 1390, 12:43 عصر
نتیجه :

وقتی برنامه را اجرا می کنیمیه شکل بصورت زیر داریم :

68178

هنگامی که بر روی دکمه ی run کلیک کنیم ، فرم به حالت زیر می شود :

68179
.
و اگر بر روی دکمه ی button1 کلیک کنیم ، یک پیام مانند زیر برایمان نشان داده می شود .


68180

پایان

milad.biroonvand
شنبه 13 فروردین 1390, 12:45 عصر
سلام

این هم متن مقاله

لطفا دانلود کن

milad.biroonvand
شنبه 13 فروردین 1390, 12:46 عصر
این هم خود پروژه ، لطفا تو دات نت 2010 بازش کن

soonami
شنبه 13 فروردین 1390, 17:49 عصر
منون یه چیزی یاد گرفتم ولی این کد ها رو که می خواهیم باید قبلا بنویسیم اگر کار بر با هر بار کلیک روی دگمه یک دگمه دیگه ساخته شد اونوقت چی ؟



Public Class Form1
Dim Index, _top, _left As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
createButton(Index)
Index = Index + 1
_top = _top + 22
_left = _left + 55
End Sub
Private Sub createButton(ByVal _nameind As Integer)
Try
Dim b As New Button
b.Name = "btn" & _nameind
b.Text = "دکمه " & _nameind
b.Top = _top
b.Left = _left
b.Width = 50
b.Height = 20
Me.Controls.Add(b)
AddHandler b.Click, AddressOf Btn_click
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
_top = 50
_left = 50
End Sub
Private Sub Btn_click(ByVal sender As Object, ByVal e As EventArgs)
Try
Dim btmp As Button
btmp = CType(sender, Button)
Select Case btmp.Name
Case "btn0"
Me.BackColor = Color.Green
Case "btn1"
Label1.Text = "This is my test"
Case "btn2"
btmp.BackColor = Color.Red
Case "btn3"
Me.Font = New Font("Tahoma", 11, FontStyle.Bold, GraphicsUnit.Pixel)
Case "btn4"
MsgBox("This is Test")
Case Else
MsgBox(btmp.Text)
End Select
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
End Class


این کد ساخت دگمه با هر بار کلیک بر روی دگمه اول هست برای کد نویسی مجزا برای هر یک از این دگمه ها چه کار باید کرد

shadi khanum
شنبه 13 فروردین 1390, 19:36 عصر
باید یا واسه هر کدوم جدا تابع نوشته باشی از قبل ، یا اینکه کلیک همه رو add Handler کنی به یه تابع و توی اون تابع بر اساس اینکه کدوم button فراخوانی کرده یه اتفاقی بیفته

soonami
شنبه 13 فروردین 1390, 19:48 عصر
این که خیلی در دسر میشه
مثلا طرف بخواد روی دگمه 101 بنویسه من 100 بیشتر نداشته باشم ارور میده
راهی هست اتوماتیک خودش تابع رو طریف کنه بعد کار بر کد های مربوط به اون کنترل یا کنترل دیگه رو بنویسه ؟

روی ریچ باکس مثلا من روی label کلیک کردم 13 ساختم روی label 6 بنویسم label6.text="S" ?????

یکی تو قسمت c# این سوال پرسیده بود که میشه من یک کنترل بزارم بعد کاربر کد بنویسه توش

دوستان چند تا سایت معرفی کرده بودند اکا مکن چیزی متوجه نشدم

تو اینتر نت هم نیست تا الان که گشتم

milad.biroonvand
شنبه 13 فروردین 1390, 22:57 عصر
این که خیلی در دسر میشه
مثلا طرف بخواد روی دگمه 101 بنویسه من 100 بیشتر نداشته باشم ارور میده
راهی هست اتوماتیک خودش تابع رو طریف کنه بعد کار بر کد های مربوط به اون کنترل یا کنترل دیگه رو بنویسه ؟

روی ریچ باکس مثلا من روی label کلیک کردم 13 ساختم روی label 6 بنویسم label6.text="S" ?????

یکی تو قسمت c# این سوال پرسیده بود که میشه من یک کنترل بزارم بعد کاربر کد بنویسه توش

دوستان چند تا سایت معرفی کرده بودند اکا مکن چیزی متوجه نشدم

تو اینتر نت هم نیست تا الان که گشتم


سلام

میخوای کاری کنی که کاربر کدی رو بنویسه و اون کد اجرا بشه . اگه اینجو ر می خوای میشه . با استفاده از سرویس runtime ، دیگه کد ها رو به یه تابع می فرستی تابع خودش اون ها رو اجرا می کنه .

soonami
شنبه 13 فروردین 1390, 23:48 عصر
همین که گفتی امکانش هست یه مثال بزنی من نگاه کنم متوجه بشم ؟ بعد اگر سوالی بود بپرسم

soonami
یک شنبه 14 فروردین 1390, 14:47 عصر
دوست عزیز منتظر راهنمایی شما هستم

milad.biroonvand
یک شنبه 14 فروردین 1390, 17:12 عصر
سلام

این مثال رو ببین ، اگه مشکلی داشتی بگو تا برات توضیحش بدم .

موفق باشی.

soonami
یک شنبه 14 فروردین 1390, 23:16 عصر
سلام مجدد دوست عزیز اون چیزی که می خواستم نبود حال شما اجازه بده چند روزی کار کنم سوال داشتم می پرسم