Кто прикручивал свой UserControl к DataGridView
От: realchel Россия  
Дата: 11.01.08 07:58
Оценка:
Собственно проблему не описываю.
Пока ищу тех кто делал такое.
Потому как возникла проблема.
Другие форумы молчат.


PS
Ссылки на статьи по DatGridView с сайта и описание как прикрутить datatimepicker,
не давать. Проблема глубже.
повторяю ищу тех у кого есть опыт.

12.01.08 00:14: Перенесено модератором из '.NET' — AndrewVK
Re: Кто прикручивал свой UserControl к DataGridView
От: Igor_P  
Дата: 11.01.08 13:34
Оценка:
Здравствуйте, realchel, Вы писали:

R>Собственно проблему не описываю.

А зря

Что значит прикрутить? показывать контрол в клеточках датагрида или что-то еще? Кстати DataGridView у себя я не нашел, может это фишка .NET 2.0?
Сам как-то прикручивал комбобокс, аналогично dateTimePickerу
Re: Кто прикручивал свой UserControl к DataGridView
От: Peter Fleischer Германия www.informtoools.de
Дата: 12.01.08 09:10
Оценка:
"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
Re[2]: Кто прикручивал свой UserControl к DataGridView
От: realchel Россия  
Дата: 12.01.08 13:22
Оценка:
Здравствуйте, 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 всеравно скачит в следующую ячейку.
Что еще сделать ума не приложу.
Как то же стандартные контролы корректно работают. Допустим тот же календарь.
Re: Кто прикручивал свой UserControl к DataGridView
От: realchel Россия  
Дата: 16.01.08 14:05
Оценка:
Здравствуйте, realchel, Вы писали:

R>Собственно проблему не описываю.

R>Пока ищу тех кто делал такое.
R>Потому как возникла проблема.
R>Другие форумы молчат.


R>PS

R>Ссылки на статьи по DatGridView с сайта и описание как прикрутить datatimepicker,
R>не давать. Проблема глубже.
R>повторяю ищу тех у кого есть опыт.

Ну таки что?
Никто не делал такого?
Re[2]: Кто прикручивал свой UserControl к DataGridView
От: Peter Fleischer Германия www.informtoools.de
Дата: 16.01.08 14:28
Оценка:
"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
news:2798890@news.rsdn.ru...

> Никто не делал такого?


Я сделал — см. ответ

Peter
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Кто прикручивал свой UserControl к DataGridView
От: realchel Россия  
Дата: 16.01.08 15:05
Оценка:
Здравствуйте, Peter Fleischer, Вы писали:

PF>"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag

PF>news:2798890@news.rsdn.ru...

>> Никто не делал такого?


PF>Я сделал — см. ответ


PF>Peter


Я написал выше в чем у меня проблема.
Посмотри плиз.
Re[4]: Кто прикручивал свой UserControl к DataGridView
От: Peter Fleischer Германия www.informtoools.de
Дата: 16.01.08 15:30
Оценка:
"realchel" <71919@users.rsdn.ru> schrieb im Newsbeitrag
news:2799025@news.rsdn.ru...

> Я написал выше в чем у меня проблема.

> Посмотри плиз.

Где выше?

Peter
Posted via RSDN NNTP Server 2.1 beta
Re[5]: Кто прикручивал свой UserControl к DataGridView
От: realchel Россия  
Дата: 17.01.08 08:49
Оценка:
Здравствуйте, 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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.