Контрольные пары элементов управления - PullRequest
0 голосов
/ 21 февраля 2011

У меня есть набор пользовательских элементов управления типа "ChartControl".Я хочу «спарить» их (каким-то образом) так, чтобы при наличии 10 элементов управления это было 5 парами из 2 графиков.Цель этого состоит в том, чтобы когда я вызывал какое-то конкретное событие на одном графике, я хотел, чтобы класс Form выполнял действие как на этом графике, так и на его парном графике, но не на другомЯ о том, как «найти» этот 2-й график пары?Или другими словами: как организовать эти диаграммы в виде списка или структуры классов, чтобы это было легко?

Проблема, которую я вижу, заключается в том, что при получении события из элемента управления диаграммы я не могу простоПросмотрите список элементов управления, чтобы увидеть, где он находится, поскольку я не могу сравнить объекты:

Operator '=' is not defined for types "UserControl"   (VB.NET)

Буду признателен за некоторые идеи о том, как это сделать.Это, наверное, просто, но мой мозг кажется застрявшим здесь ..

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Создайте новый элемент управления, который состоит из двух диаграмм (и, возможно, других элементов управления, если вы сочтете это целесообразным). Таким образом, вы также можете написать методы для элемента управления, которые будут работать с ними обоими. Он инкапсулирует пары пользовательских элементов управления в один центральный элемент.

1 голос
/ 21 февраля 2011

Вы должны иметь возможность сравнивать объекты, используя Object.Equals () .Вы также можете сгруппировать их в любую форму контейнера и посмотреть на его коллекцию Controls.Таким образом, вы можете сделать разделительный графический интерфейс вместо логики программы.

И: Сообщение об ошибке вы получаете, потому что вы назначаете (=), а не сравниваете (==)?:)

Какой-то псевдокод:


private void ChartClicked(object sender, someargs...)
{
   foreach (Control c in this.Controls)
   {
      if (Object.Equals(sender, c)
      {
         // This is the sender
      }
   }
}

или


private void ChartClicked(object sender, someargs...)
{
   // Was it chart1 that was clicked? (We could use switch statement here to make the code cleaner)
   if (Object.Equals(sender, chart1)
   {
       // Do something to chart5
       chart5.Value = chart1.Value;
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...