PDA

View Full Version : سوال: ایجاد سلولی در گرید ویو که هم text باشه هم دکمه



fa_karoon
شنبه 22 تیر 1392, 19:39 عصر
سلام دوستان
ببینید می خوام یه سلولی تو گریدم داشته باشم که حالت textbox داشته باشه اما انتهاش یه دکمه کوچیک قرار بگیره که وقتی کاربر روی اون کلیک کرد یه پنجره دیگه باز بشه
این کار رو با رویداد EditingControlShowing انجام دادم، اما در این حالت باید حتما تو سلول مورد نظر کلیک کنی تا این حالت ایجاد بشه، اما من می خوام در حالت عادی نمایش به این موضوع برسم
مرسی اگر راهنمایی کنید
نماز روزه هاتون قبول

ali_md110
شنبه 22 تیر 1392, 23:01 عصر
ابتدا قسمت جنرال برنامه متغیری از نوع دکمه تعریف کنید
WithEvents Colbtn As New Button
باید بعضی رویدادها ی گرادویو دست کاری کنی


Private Sub DataGridView1_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles Dg.Scroll
'=========================================
'

Dim rect As Rectangle = Dg.GetCellDisplayRectangle(Dg.CurrentCell.ColumnIn dex, Dg.CurrentCell.RowIndex, True)

Colbtn.Location = rect.Location
Colbtn.Width = 28
Colbtn.Height = rect.Height
End Sub


Private Sub DataGridViewEx1_CellBeginEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellCancelEventAr gs) Handles Dg.CellBeginEdit
If ColProductCode.Visible = True Then
If e.ColumnIndex = ColProductCode.Index Then
Dim rect As Rectangle = Dg.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, True)
Dg.Controls.Add(Colbtn)
Colbtn.Location = rect.Location
Colbtn.Width = 28
Colbtn.Height = rect.Height
End If
End If
End Sub


Private Sub DataGridViewEx1_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dg.CellEndEdit

If ColProductCode.Visible = True Then
If e.ColumnIndex = ColProductCode.Index Then
Dg.Controls.Remove(Colbtn)
End If

End If
End Sub

در نهایت جهت باز شدن پنجره دیگری با کلیک بر روی دکمه


Private Sub Colbtn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Colbtn.Click
If Dg.CurrentCell.ColumnIndex = ColProductCode.Index Then
Dim FRM As New FrmSelectProduct
FRM.ShowDialog()

End If
End Sub

fa_karoon
یک شنبه 23 تیر 1392, 05:42 صبح
ممنون از پاسخ عالی تون، اما نمی شه کاری کرد که بدون کلیک روی سلول این نمایش دیده بشه؟
باز هم ممنون

ali_md110
یک شنبه 23 تیر 1392, 14:04 عصر
If ColProductCode.Visible = True Then If e.ColumnIndex = ColProductCode.Index Then Dim rect As Rectangle = Dg.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, True) Dg.Controls.Add(Colbtn) Colbtn.Location = rect.Location Colbtn.Width = 28 Colbtn.Height = rect.Height End If End If


این کدها رو در رویداد paint سلول قرار بده شاید انجام بشه

shadi khanum
یک شنبه 23 تیر 1392, 15:10 عصر
دوست عزیز میتونی از گرید جانوس استفاده کنی و در قسمت تنظیمات اون ستون مورد نظر، button Style رو برابر TextButton بذاری و ButtonDisplayMode رو Always بذاری. به رحتی این کار برات انجام میشه

fa_karoon
یک شنبه 23 تیر 1392, 19:13 عصر
دوست عزیز باز هم ممنون از تلاش و پیگیری تون، کدها رو Copy , Paste کردم چیز به درد بخوری نشد، اما باهاش کلنجار می رم ببینم چی می شه
مرسی از اینکه یه سری کدنویسی جدید و کار با ابزارهای جدیدی رو یادم دادین