PDA

View Full Version : اضافه کردن کنترل زمان اجرا



lovecity7
یک شنبه 23 دی 1397, 08:13 صبح
با سلام
می خواستم در زمان اجرا به عنوان مثال یک Textbox به پروژه اضافه شده را ذخیره کنم نحوه اضافه شدنش رو می دونم ولی چطوری ذخیره میشه که بعد از بستن و باز شدن پروژه حذف نشه.دیتابیس اکسس هم داره.
ممنون

hamidrezax1
دوشنبه 24 دی 1397, 19:02 عصر
سلام دوست عزیز میتونید یه جدول خاص توی دیتا بیس برای کنترل هاتون و موقعیتشون در نظر بگیرین که با لود شدن فرمتون از دیتابیس اونها رو بخونه و لود کنه
موفق باشید

lovecity7
سه شنبه 25 دی 1397, 08:58 صبح
سلام من الان نمیدونم چه کنترلی رو می خوام اضافه کنم می خوام اگه بعدا به یک textbox یا چیز دیگه ای نیاز بود فقط کد نویسی کنم فلان کنترل اضافه بشه حالا با این موضوع ، چطوری ذخیره کنم؟
ممنون

1595035
چهارشنبه 29 اسفند 1397, 03:24 صبح
با سلام
می خواستم در زمان اجرا به عنوان مثال یک Textbox به پروژه اضافه شده را ذخیره کنم نحوه اضافه شدنش رو می دونم ولی چطوری ذخیره میشه که بعد از بستن و باز شدن پروژه حذف نشه.دیتابیس اکسس هم داره.
ممنون

سلام
من یک نمونه کد با استفاده از فایل xml براتون میزارم. فقط شما کاری که من تو فایل xml کردم رو باید رو دیتا بیس اکسس خودتون ایجاد کنید و کدهای insert و update فایل xml رو با کدهای insert و update اکسس جابه جا کنید.
1- تعریف dataset و ایجاد ستون ها برای ذخیره داده های مورد نیاز کنترلها
کد :

Dim ds As New DataSet
ds.Tables.Add("Objects")
With ds.Tables("Objects")
.Columns.Add("ObjectType")
.Columns.Add("ObjectName")
.Columns.Add("Position")
.Columns.Add("Text")
End With

2- کد ذخیره کردن dataset در فایل :

ds.Tables("Objects").Clear()
For Each control As Control In Panel1.Controls
If control.Tag = "TextBox" Then
With control
ds.Tables("Objects").Rows.Add(New Object() { .Tag, .Name, .Location, .Text})
End With
End If
Next
ds.WriteXml(Application.StartupPath & "\Objects.xml")


3- کد فراخوانی Objects از فایل :



ds.Clear()
Panel1.Controls.Clear()
ds.ReadXml(Application.StartupPath & "\Objects.xml")
For Each row As DataRow In ds.Tables("Objects").Rows
If row.Item("ObjectType") = "TextBox" Then
Dim myStringWhichCantBeChanged = row.Item("Position").ToString
Dim g = System.Text.RegularExpressions.Regex.Replace(myStr ingWhichCantBeChanged, "[\{\}a-zA-Z=]", "").Split(",")


Dim pointResult As Point = New Point(Int(g(0)), Int(g(1)))


Dim txt As New TextBox
With txt
.Location = pointResult
.Name = row.Item("ObjectName").ToString
.Tag = row.Item("ObjectType").ToString
AddHandler .MouseDown, AddressOf Control_MouseDown
AddHandler .MouseMove, AddressOf Control_MouseMove
AddHandler .MouseUp, AddressOf Control_MouseUp
End With
Panel1.Controls.Add(txt)
End If
Next



4- کد ایجاد Object به صورت داینامیک در فرم (برای مثال یک textbox) :

Dim txt As New TextBox
With txt
.Location = New Point(100, 100)
.Name = Guid.NewGuid().ToString().Replace("-", "")
.Tag = "TextBox"
AddHandler .MouseDown, AddressOf Control_MouseDown
AddHandler .MouseMove, AddressOf Control_MouseMove
AddHandler .MouseUp, AddressOf Control_MouseUp
End With

Panel1.Controls.Add(txt)


5- کد تغییر مکان Objectها :

'Move Objects
Private _isMoved As Boolean
Private _x As Integer
Private _y As Integer


Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
_isMoved = True
_x = e.Location.X
_y = e.Location.Y
End Sub


Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
If _isMoved Then
sender.Location = New Point(sender.Location.X + (e.Location.X - _x), sender.Location.Y + (e.Location.Y - _y))
End If
End Sub


Private Sub Control_MouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)
_isMoved = False
End Sub


http://webx1.ir/Untitled1.gif



:چشمک: