Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Child control in design time


Автор: StepS 25.12.2006, 23:45
Привет, всем.
Значица так. Я написал контрол (MyControl), типа панельки. В нем размещаю другой контрол, например DataGrid. 
у MyControl есть свойство oControl, которое возвращает мне контрол, находящийся в панельке, в данном случае это DataGrid.
Вопрос: В дизайнере, в окне Properties я вижу свойство oControl и могу выставить ему например BackColor и т.д. - вообщем работать со свойствами грида. Но в кодебехаинде это никак не отображается. т.е. стOит мне закрыть форму в дизайнере и открыть ее снова, как все настройки этого дочернего грида пропадают. Как сделать так чтоб они не пропадали, и мало того, чтоб при запуске формы они применялись ?

Пример контрола:

Код

 public class MyControl : Panel {
   private Control oControl;

   public MyControl(Control control){
      oControl = control;
   }

   public Control oControl {
     get {return oControl; }
   }
 }


помогите плз.  smile 

Автор: ivashkanet 26.12.2006, 10:24
StepS, а почему у тя нету сеттера для 
Цитата(StepS @  25.12.2006,  22:45 Найти цитируемый пост)
 public Control oControl {

Читать то оно читает, а вот записать не может  smile 

Автор: StepS 26.12.2006, 11:21
Если бы все было так просто smile
сделал ему set-ер, теперь пишет:

this.oMyControl1.oControl.CaptionBackColor = System.Drawing.Color.Red;

Windows.Form.Control does not contain a definition for CaptionBackColor 

Автор: ivashkanet 26.12.2006, 11:31
Цитата(StepS @  25.12.2006,  22:45 Найти цитируемый пост)
public Control oControl

Нутык, ты ведь сам сказал, что тип этого поля Control, а не твой класс  smile 

Автор: StepS 26.12.2006, 12:05
а мне то нужно устанавливать свойства именно DataGrid-а, если (oControl is DataGrid) = true smile
в дизайнере я могу установить такие свойства, а вот потом они пропадают. Вопрос был в том, как эти установленные свойства сохранить  smile 

еще идеи есть ?

Автор: ivashkanet 26.12.2006, 12:07
Цитата(StepS @  26.12.2006,  11:05 Найти цитируемый пост)
еще идеи есть ? 

Я вот не сильно понимаю что ты хочешь сделать  smile 

Что мешает написать:
Код

 public DataGrid oControl 
  {
     get {return oControl; }
     
     set {oControl = value; }
  }


Автор: mr.DUDA 26.12.2006, 12:58
StepS, как добавляется вложенный контрол ? В дизайнере или через код ?

Автор: StepS 26.12.2006, 18:27
mr.DUDA, добавляется через код, а свойства хочу редактировать через дизайнер.

Цитата

Что мешает написать:

 public DataGrid oControl 
  {
     get {return oControl; }
     
     set {oControl = value; }
  }



Мешает, то что за ранее не известно какого типа контрол находиться на панельке. Я хочу на эту панельку добавлять разные контролы.

Автор: ivashkanet 26.12.2006, 18:37
Цитата(StepS @  26.12.2006,  17:27 Найти цитируемый пост)
Мешает, то что за ранее не известно какого типа контрол находиться на панельке. Я хочу на эту панельку добавлять разные контролы.

Интересно получается, контролы могут быть разные, а поля выставлять ты хочешь у конкретных smile 

Цитата(StepS @  26.12.2006,  17:27 Найти цитируемый пост)
 добавляется через код

Если добовляется через код, а дизайнер этот контрол видит, то добавляется он внутри класса главного контрола либо для него есть элемент в дизайнере формы.

Если первый вариант, то он статический и ничего не мешает выставить свойство панельи в нужный тип.

Если второй, что более вероятно, то что мешает выделить этот контрол и редактировать его свойства, а не включать в цепочку еще и панель  

smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)