C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 19.04.11 22:02
Оценка:
Доброго времени суток!

Разрабатываю UserControl для контекстного поиска в датагридах, все зашибись, но попутался в динамических свойствах.
Трабла в том, что не получается создать динамическую ссылку на датагрид для нового экземпляза UserControl.
Если кто-то шарит — поясните...

Спасибо!
Re: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 20.04.11 18:24
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Доброго времени суток!


A>Разрабатываю UserControl для контекстного поиска в датагридах, все зашибись, но попутался в динамических свойствах.

A>Трабла в том, что не получается создать динамическую ссылку на датагрид для нового экземпляза UserControl.
Вы думаете что ваш вопрос понятен?
... << RSDN@Home 1.2.0 alpha 5-AN rev. 98>>
Re[2]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 20.04.11 21:43
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Вы думаете что ваш вопрос понятен?


Поясняю, есть мной разработанный UserControl, который должен взаимодействовать с датагридами на различных формах.
При том, мой UserControl должен хранить переменные и ссылку на датагрид для каждого экземпляра окна.
Для передачи параметров (ссылки на датагрид) в UserControl я предусмотрел класс.
Проблема в том, что каждый новый экземпляр UserControl-а перезаписывает переменные и ссылку на датагрид.
Это является недопустимым при одновременном использовании UserControl-а на двух и более формах.

Спасибо!
Re[3]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 20.04.11 21:48
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Здравствуйте, AlexNek, Вы писали:


AN>>Вы думаете что ваш вопрос понятен?


A>Поясняю, есть мной разработанный UserControl, который должен взаимодействовать с датагридами на различных формах.

A>При том, мой UserControl должен хранить переменные и ссылку на датагрид для каждого экземпляра окна.
A>Для передачи параметров (ссылки на датагрид) в UserControl я предусмотрел класс.
A>Проблема в том, что каждый новый экземпляр UserControl-а перезаписывает переменные и ссылку на датагрид.
A>Это является недопустимым при одновременном использовании UserControl-а на двух и более формах.
Немного яснее, но непонято зачем нужен именно контрол. Сделайте проперти и поставьте вреакпоинт на сеттер. Увидите кто переписывает данные
... << RSDN@Home 1.2.0 alpha 5-AN rev. 98>>
Re[4]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 20.04.11 21:59
Оценка:
AN>Немного яснее, но непонято зачем нужен именно контрол. Сделайте проперти и поставьте вреакпоинт на сеттер. Увидите кто переписывает данные

Без одельного контрола не обойтись, это адвансед поиск по датагриду т.е. доп. окно для настроек и т.д...
Кто перезаписывает данные и так ясно — это каждый новый экземпляр моего контрола в новом окне.
Вопрос как сделать каждый новый экземпляр контрола со своими локальными переменными и ссылками на датагрид..?
Re[5]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 20.04.11 22:12
Оценка:
Здравствуйте, alexparser, Вы писали:

AN>>Немного яснее, но непонято зачем нужен именно контрол. Сделайте проперти и поставьте вреакпоинт на сеттер. Увидите кто переписывает данные


A>Без одельного контрола не обойтись, это адвансед поиск по датагриду т.е. доп. окно для настроек и т.д...

Что видно сразу и всегда в этом контроле?
A>Кто перезаписывает данные и так ясно — это каждый новый экземпляр моего контрола в новом окне.
A>Вопрос как сделать каждый новый экземпляр контрола со своими локальными переменными и ссылками на датагрид..?
При создании класса будут новые переменные, а ссылку на дату грид надо ставить в родительском окне
... << RSDN@Home 1.2.0 alpha 5-AN rev. 98>>
Re[6]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 20.04.11 22:22
Оценка:
Здравствуйте, AlexNek, Вы писали:

A>>Без одельного контрола не обойтись, это адвансед поиск по датагриду т.е. доп. окно для настроек и т.д...

AN>Что видно сразу и всегда в этом контроле?
ТекстБокс для ввода искомого слова + 4 кнопки для управления поиском.

A>>Кто перезаписывает данные и так ясно — это каждый новый экземпляр моего контрола в новом окне.

A>>Вопрос как сделать каждый новый экземпляр контрола со своими локальными переменными и ссылками на датагрид..?
AN>При создании класса будут новые переменные, а ссылку на дату грид надо ставить в родительском окне
Сыылка на датагрид естественно ставится из родительского окна через класс.
Но так получается, что ссылка на датагрид применяется ко всем экземплярам моего контрола.
А должна быть для каждого своя.
Re[7]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 20.04.11 22:29
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Здравствуйте, AlexNek, Вы писали:


A>>>Без одельного контрола не обойтись, это адвансед поиск по датагриду т.е. доп. окно для настроек и т.д...

AN>>Что видно сразу и всегда в этом контроле?
A>ТекстБокс для ввода искомого слова + 4 кнопки для управления поиском.
Ну тогда контрол.

A>>>Кто перезаписывает данные и так ясно — это каждый новый экземпляр моего контрола в новом окне.

A>>>Вопрос как сделать каждый новый экземпляр контрола со своими локальными переменными и ссылками на датагрид..?
AN>>При создании класса будут новые переменные, а ссылку на дату грид надо ставить в родительском окне
A>Сыылка на датагрид естественно ставится из родительского окна через класс.
A>Но так получается, что ссылка на датагрид применяется ко всем экземплярам моего контрола.
A>А должна быть для каждого своя.
Попробуйте сделать тестовый проектик и выставить его куда нибудь. Статик нигде не пользуете
... << RSDN@Home 1.2.0 alpha 5-AN rev. 98>>
Re[8]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 20.04.11 22:32
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Попробуйте сделать тестовый проектик и выставить его куда нибудь. Статик нигде не пользуете

использую, public static DataGridView dgv = new DataGridView();
в этом и трабла, а иначе как?
Re[9]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 20.04.11 22:41
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Здравствуйте, AlexNek, Вы писали:


AN>>Попробуйте сделать тестовый проектик и выставить его куда нибудь. Статик нигде не пользуете

A>использую, public static DataGridView dgv = new DataGridView();
A>в этом и трабла, а иначе как?
Необязательно, но назначение этой строки не ясно
... << RSDN@Home 1.2.0 alpha 5-AN rev. 98>>
Re[10]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 20.04.11 22:47
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>>>Попробуйте сделать тестовый проектик и выставить его куда нибудь. Статик нигде не пользуете

A>>использую, public static DataGridView dgv = new DataGridView();
A>>в этом и трабла, а иначе как?
AN>Необязательно, но назначение этой строки не ясно

Мой юзерконтрол
---------------

public partial class UserControl1 : UserControl
{
public static DataGridView dgv = new DataGridView();

public UserControl1()
{
InitializeComponent();
}
}

public class search
{
public void setDataGridView(DataGridView datagrid)
{
UserControl1.dgv = datagrid; // инизиализация датагрида для юзерконтрола
}
}
Re[11]: C# UserControl динамические свойства контрола?
От: joher  
Дата: 21.04.11 10:56
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Здравствуйте, AlexNek, Вы писали:


AN>>>>Попробуйте сделать тестовый проектик и выставить его куда нибудь. Статик нигде не пользуете

A>>>использую, public static DataGridView dgv = new DataGridView();
A>>>в этом и трабла, а иначе как?
AN>>Необязательно, но назначение этой строки не ясно

A>Мой юзерконтрол

A>---------------

A> public partial class UserControl1 : UserControl

A> {
A> public static DataGridView dgv = new DataGridView();

A> public UserControl1()

A> {
A> InitializeComponent();
A> }
A> }

A> public class search

A> {
A> public void setDataGridView(DataGridView datagrid)
A> {
A> UserControl1.dgv = datagrid; // инизиализация датагрида для юзерконтрола
A> }
A> }

Непонятно зачем вы здесь используете static поле. Очевидно, что для всех экземпляров вашего класса будет одна и та же ссылка в памяти для этого свойства. Уберите static и все будет хорошо.
Re[12]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 21.04.11 11:42
Оценка:
Здравствуйте, joher, Вы писали:

J>Непонятно зачем вы здесь используете static поле. Очевидно, что для всех экземпляров вашего класса будет одна и та же ссылка в памяти для этого свойства. Уберите static и все будет хорошо.


Без поля static вообще не работает, ругается — Error 1 An object reference is required for the non-static field, method, or property
Re[11]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 21.04.11 15:27
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Здравствуйте, AlexNek, Вы писали:


AN>>>>Попробуйте сделать тестовый проектик и выставить его куда нибудь. Статик нигде не пользуете

A>>>использую, public static DataGridView dgv = new DataGridView();
A>>>в этом и трабла, а иначе как?
AN>>Необязательно, но назначение этой строки не ясно

A>Мой юзерконтрол

A>---------------

A> public partial class UserControl1 : UserControl

A> {
A> public static DataGridView dgv = new DataGridView();

A> public UserControl1()

A> {
A> InitializeComponent();
A> }
A> }

A> public class search

A> {
A> public void setDataGridView(DataGridView datagrid)
A> {
A> UserControl1.dgv = datagrid; // инизиализация датагрида для юзерконтрола
A> }
A> }
По крайней мере, у вас три логических ошибки и катастрофическое нарушение правил (А).
А. Запрешен прямой публик доступ к данным класса, особенно статическим. Для этого существует синглетон и проперти.
1. Если контрол должен работать в паре с гридом, то это подразумевает отсутствие общих (статических) полей. Обращении по имени класса уже подразумевает статический доступ.
2. Если переменной требуется инициализация, то она должна находится в "неправильном" состоянии. DataGridView dgv = null;
3. Связанные классы должны находитс в одном месте.
Возможное решение говорить не буду, думаю, будет более полезно найти самому
... << RSDN@Home 1.2.0 alpha 5-AN rev. 98>>
Re[12]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 22.04.11 21:53
Оценка:
Здравствуйте, AlexNek, Вы писали:

Что-то реально увяз
Выкладываю демо-код здесь с траблой, проперти тоже ничего не дали.

Плс., поможите...
Re[13]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 24.04.11 11:40
Оценка:
Здравствуйте, alexparser, Вы писали:

a> Что-то реально увяз

a> Выкладываю демо-код здесь с траблой, проперти тоже ничего не дали.

a> Плс., поможите...


Зачем создаешь новый?
       public Form1()
        {
            InitializeComponent();
            //MyControl1 e = new MyControl1();
            //e.textControl = label1;

            myControl11.textControl = label1;
        }
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[14]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 25.04.11 19:44
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Зачем создаешь новый?

AN>
       public Form1()
AN>        {
AN>            InitializeComponent();
AN>            //MyControl1 e = new MyControl1();
AN>            //e.textControl = label1;

AN>            myControl11.textControl = label1;
AN>        }
AN>


В таком виде даже не компилится: Error 1 An object reference is required for the non-static field, method, or property 'UserControl1.MyControl1.textControl.get'...
[i][/i]
Re[15]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 25.04.11 19:58
Оценка:
Здравствуйте, alexparser, Вы писали:

a> AN>Зачем создаешь новый?

a> AN>
       public Form1()
a> AN>        {
a> AN>            InitializeComponent();
a> AN>            //MyControl1 e = new MyControl1();
a> AN>            //e.textControl = label1;

a> AN>            myControl11.textControl = label1;
a> AN>        }
a> AN>


a> В таком виде даже не компилится: Error 1 An object reference is required for the non-static field, method, or property 'UserControl1.MyControl1.textControl.get'...

a>
[i][/i]
Странно, это были единственные исправления в проекте, возьмите то что лежит в архиве по ссылке
avalon 1.0rc3 rev 380, zlib 1.2.3
Re[16]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 25.04.11 20:09
Оценка:
Здравствуйте, AlexNek, Вы писали:

AN>Странно, это были единственные исправления в проекте, возьмите то что лежит в архиве по ссылке


По какой ссылке?
Re[17]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 25.04.11 20:19
Оценка:
Здравствуйте, alexparser, Вы писали:

a> AN>Странно, это были единственные исправления в проекте, возьмите то что лежит в архиве по ссылке


a> По какой ссылке?

Не ну, а откуда я то взял?

alexparser
Дата: 22.04.11 23:53

Что-то реально увяз
Выкладываю демо-код здесь с траблой, проперти тоже ничего не дали.

avalon 1.0rc3 rev 380, zlib 1.2.3
Re[3]: C# UserControl динамические свойства контрола?
От: Victor Hytyk Украина  
Дата: 25.04.11 20:20
Оценка:
Здравствуйте, alexparser, Вы писали:

A>Поясняю, есть мной разработанный UserControl, который должен взаимодействовать с датагридами на различных формах.

A>При том, мой UserControl должен хранить переменные и ссылку на датагрид для каждого экземпляра окна.
A>Для передачи параметров (ссылки на датагрид) в UserControl я предусмотрел класс.
A>Проблема в том, что каждый новый экземпляр UserControl-а перезаписывает переменные и ссылку на датагрид.
A>Это является недопустимым при одновременном использовании UserControl-а на двух и более формах.

Во-первых, если много форм, должна быть базовая форма (или тимплейт-контрол/контейнер что общий для всех форм/окон). Свой обьект UserControl создавайте в базовой форме. Так у вас будет по екземпляру контрола вашего контестного поиска для каждой формы (Естественно удалять его тоже нужно например в Dispose формы). Так отпадет проблема перекрестного использования контрола поиска (в рамках одной формы используется один и тот-же).
Во-вторых, если уж делаете контекстный поиск, сделайте более виртуально, не привязывайтесь к датагриду (мало ли, может надо будет искать в каком-то мемо, лукап-е и т.д.). Пусть за поиск в отдельно взятом контроле (гриде, мемо, текстбоксе...) отвечают конкретные провайдеры. А ваш контрол пусть работает с каким-то абстрактным интерфейсом ISearchProvider.
-----------------------------------------
тут может быть ваша реклама
Re[18]: C# UserControl динамические свойства контрола?
От: alexparser  
Дата: 25.04.11 20:31
Оценка:
Здравствуйте, AlexNek, Вы писали:

a>> По какой ссылке?

AN>Не ну, а откуда я то взял?

Дык тест-проект у меня есть, я же его сам выложил.
Я думал будет линк на пофиксенный проект..

p.s. вроде бы не сложный вопрос, а увяз вон на скока, да и гугляндии ничего полезного не нарыл
Re[19]: C# UserControl динамические свойства контрола?
От: AlexNek  
Дата: 25.04.11 21:35
Оценка:
Здравствуйте, alexparser, Вы писали:

a> a>> По какой ссылке?


a> AN>Не ну, а откуда я то взял?


a> Дык тест-проект у меня есть, я же его сам выложил.

Ну так в него то мои три строчки и внесите, две линии убрать и одну вставить.
Специально кинул больше чтобы было понятно куда вставлять.

a> Я думал будет линк на пофиксенный проект..

А я думал масла будет достаточно, Вам в два слоя на хлеб намазать или в один?

a> p.s. вроде бы не сложный вопрос, а увяз вон на скока, да и гугляндии ничего полезного не нарыл

Поиском тут ничего не найдете, нужно просто немного подумать.
avalon 1.0rc3 rev 380, zlib 1.2.3
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.