Собственно проблему не описываю.
Пока ищу тех кто делал такое.
Потому как возникла проблема.
Другие форумы молчат.
PS
Ссылки на статьи по DatGridView с сайта и описание как прикрутить datatimepicker,
не давать. Проблема глубже.
повторяю ищу тех у кого есть опыт.
12.01.08 00:14: Перенесено модератором из '.NET' — AndrewVK
Здравствуйте, realchel, Вы писали:
R>Собственно проблему не описываю.
А зря
Что значит прикрутить? показывать контрол в клеточках датагрида или что-то еще? Кстати DataGridView у себя я не нашел, может это фишка .NET 2.0?
Сам как-то прикручивал комбобокс, аналогично dateTimePickerу
"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
news:2792071@news.rsdn.ru...
> Собственно проблему не описываю.
> Пока ищу тех кто делал такое.
Я, см пример:
Option Infer On
Option Strict On
Public Class Form1
Dim arr(4, 4) As UC1
Private Sub Form1_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load
Dim dgv As New DataGridView
Me.Controls.Add(dgv)
With dgv
.ReadOnly = True
.Dock = DockStyle.Fill
.VirtualMode = True
.RowCount = arr.GetUpperBound(0) + 1
.ColumnCount = arr.GetUpperBound(1) + 1
AddHandler .CellPainting, AddressOf dgv_CellPainting
End With
For i As Integer = 0 To arr.GetUpperBound(0)
For k As Integer = 0 To arr.GetUpperBound(1)
arr(i, k) = New UC1 With {.Description = _
i.ToString & " - " & k.ToString}
dgv.Controls.Add(arr(i, k))
Next
Next
End Sub
Private Sub dgv_CellPainting(ByVal sender As Object, _
ByVal e As DataGridViewCellPaintingEventArgs)
If e.RowIndex >= 0 And e.ColumnIndex >= 0 AndAlso _
arr(e.RowIndex, e.ColumnIndex) IsNot Nothing Then
With arr(e.RowIndex, e.ColumnIndex)
.Location = e.CellBounds.Location
.Size = e.CellBounds.Size
.Refresh()
End With
End If
End Sub
End Class
Public Class UC1
Inherits UserControl
Private _desc As String
Public Property Description() As String
Get
Return _desc
End Get
Set(ByVal value As String)
_desc = value
End Set
End Property
Protected Overrides Sub OnPaint(ByVal e As
System.Windows.Forms.PaintEventArgs)
With e.Graphics
.DrawLine(Pens.Black, 5, 5, Me.Width - 10, Me.Height - 10)
.DrawRectangle(Pens.Red, 5, 5, Me.Width - 10, Me.Height - 10)
.DrawString(_desc, Me.Font, Brushes.Blue, 10, 10)
End With
End Sub
End Class
Peter
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, Igor_P, Вы писали:
I_P>Здравствуйте, realchel, Вы писали:
R>>Собственно проблему не описываю.
I_P>А зря
I_P>Что значит прикрутить? показывать контрол в клеточках датагрида или что-то еще? Кстати DataGridView у себя я не нашел, может это фишка .NET 2.0?
I_P>Сам как-то прикручивал комбобокс, аналогично dateTimePickerу
Есть свой контрол который наследуется от TextBox
В контроле на событие Validating весит обработка, введенные значения проверяются,и если не соответсвуют нужным,выдается сообщение.
И соотвественно из контрола не выходим.
cancel=true
Решил этот контрол сделать в виде колонки в DataGridView
Взял общеизвестный пример с DataTimePiсker
Все отлично привязалось,даже свои свойства к колонке добавил.
Но вот проблема.
Когда я в таблице,уже при редактировании ячейки со своим контролом жму Enter или выхожу по TAB.
То сробатывает событие Validating в моем контроле,где идет проверка на корректность введенных данных.Все отлично,так должно быть.
И если значение не корректное,то я присваиваю Cancel=true
Что бы запретить выходить из контрола.
Но вот DataGridView на это чихал, и спокойно переходит в другую ячейку.
Выяснилось,что у класса DataGridViewEditingConlrol
событие DetachEditingControl срабатывает раньше чем Valideting в моем контроле.
Как вариант было переопределить onDetachEditingControl в своем DataGridViewEditingControl и не вызвать метод базового класса
DetachEditingControl. Но как я уже сказал выше, последовательность сработки событий происходит не так как хотелось бы.
Щас попробовал еще вариант с переопределением onDetachEditingControl в котором не вызываю метод базового класса.
А методе onValideting(он переопеределен от моего контрола) в классе
DataGridViewEditingConlrol, вызывать метод onDetachEditingControl ,
если значение корректное. Но блин, DataGridView всеравно скачит в следующую ячейку.
Что еще сделать ума не приложу.
Как то же стандартные контролы корректно работают. Допустим тот же календарь.
"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
news:2798890@news.rsdn.ru...
> Никто не делал такого?
Я сделал — см. ответ
Peter
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, Peter Fleischer, Вы писали:
PF>"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
PF>news:2798890@news.rsdn.ru...
>> Никто не делал такого?
PF>Я сделал — см. ответ
PF>Peter
Я написал выше в чем у меня проблема.
Посмотри плиз.
"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
news:2799025@news.rsdn.ru...
> Я написал выше в чем у меня проблема.
> Посмотри плиз.
Где выше?
Peter
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, Peter Fleischer, Вы писали:
PF>"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
PF>news:2799025@news.rsdn.ru...
>> Я написал выше в чем у меня проблема.
>> Посмотри плиз.
PF>Где выше?
PF>Peter
http://rsdn.ru/forum/message/2793505.1.aspx