Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 7 из 25<  1 ... 4  5  6  7  8  9  10 ... 25  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Smoke писал(а):
однако никто так и не поделился своими успехами в конструировании собственных контролов

Видимо пока не до них :)



Партнер
 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
ну так, господа, никто не созрел заняться совместно проектом?

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke


 

Цитата:
ну так, господа, никто не созрел заняться совместно проектом?

Каким если не секрет, пролистал пол ветки назад, ничего не нашел.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Народ, кто знаен сайты с бесплатными компонентами для .NET поделитесь плиз инфой.
Сейчас зашли в тупик так как не можем найти нормальный компонент для работы с COM портами! в NET 2.0 поддержка есть, но мы пока пишем только под 1.1


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams сваяеть библиотеку на VC++ и подключить к .net проэкту.

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Сенкс мне уже прислали хорошую библу для работы с портами.
_________
Теперь вопрос несколько иного плана. На Delphi у меня была процедура, параметром в которую передавался class, а не переменная. Тоесть передавался какойто грубо говоря тип.
procedure FindThis(F:TformClass);
эта процедура получив этот класс, искала уже созданные обьекты и при нахождении делала некоторые операции. Не важно что и зачем она эта делала. Самое главно, что в процедуру передавался ТИП, а не переменная этого типа и эта процедура далее сама создавала переменные этого типа, даже не знаю с каким типом работает.
Как оное провернуть на C#?
процедура будет делать тоже самое и на входе она должна будет получить класс формы, а не переменную этого класса
Код:
   public class Form2 : System.Windows.Forms.Form

Надо сделать так FindThis(Form2);
Пока никак не могу найти , что-то похожее на Дельфийский вариант.
Видимо плохо обьясняю так как сам мало понял из своей же писанины :)
Давайте проще.
Вот так к примеру создаю MDI child форму
Код:
         Form2 form= new Form2();
         form.MdiParent=this;
         form.Show();

Теперь представим что мне нужна функция, которая принимает как параметр класс и сама создает форму. Мне малость тяжело после Delphi переключать мозги на C#, может там и есть что-то более легкое для этого дела.
Код:
    private void RunForm({тут надо передать класс формы}, bool allow_multi)
{
     ---------делаем что нибудь, всякие проверки и т.д.
    тут создаем переменную того типа, что передали в форму.
}


Добавлено спустя 5 минут, 19 секунд:
Daemon писал(а):
сваяеть библиотеку на VC++ и подключить к .net проэкту

Ну а на кой мне тогда .NET вообще понадобился? :) Не, тут хочется чтобы все было в нативном варианте! :) Без unsafe кода


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams что-то я тебя несовсем понял :-)
Ты допустим написал класс
Код:
public class Form1 : System.Windows.Forms.Form
{
.
.
.
}
И тебе нужно его передать в качестве параметра в процедуру? так почему бы и не сделать:
Код:
      private void RunForm(Form1 NewFrm, bool allow_multi)
      {

      }


Цитата:
Ну а на кой мне тогда .NET вообще понадобился?
Наверное для того, чтобы парить себе мозги с отсутствием возможности общаться с портами и отсутствием половины нужного API в .net классах :-)

_________________
Ку ку


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Daemon писал(а):
Наверное для того, чтобы парить себе мозги с отсутствием возможности общаться с портами и отсутствием половины нужного API в .net классах

Другого выхода нет :)

Daemon писал(а):
что-то я тебя несовсем понял

Ты не правильно понял, вот эта часть
Код:
 private void RunForm(Form1 NewFrm, bool allow_multi)
      {

      }

должна быть гдето такой
Код:
 private void RunForm([b]FormClass[/b] NewFrm, bool allow_multi)
      {
         NewFrm frm=new NewFrm();
         frm.Show();
      }

Вот гдето так


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
а если так?
Код:
private void RunForm(string NewFrmTypeName, /*это уже на усмотрение*/ bool allow_multi)
{
  Type t = Type.GetType(NewFrmTypeName);
  //проверка что t != null
  //проверка что NewFrmTypeName унаследован от System.Windows.Forms.Form (пройтись по всей иерархии до встречи).
  // или проверить что f != null (он не привидёт к Form если не сможет и результат будет null), наверно так даже проще
  Form f = t.TypeInitializer.Invoke() as Form;
  f.Show();
}


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Ray Adams т.е. не конкретный класс формы, а класс любой формы, ну тогда есть вариант зделать так:
Код:
 private void RunForm(System.Windows.Forms.Form NewFrm, bool allow_multi)
      {
         NewFrm frm=new NewFrm();
         frm.Show();
      }

Ведь по сути, любой класс формы, наследует System.Windows.Forms.Form. Или я опять не так тебя понял? :-)

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
можно изменить верхушку на
Код:
private void RunForm(Type t, /*это уже на усмотрение*/ bool allow_multi)
{
  //Type t = Type.GetType(NewFrmTypeName);
  ...
}

и вызывать
RunForm(typeof(MyForm1), true);


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
DenisMak Ближе но ничего из приведенного тобой не пашет :) :(

Добавлено спустя 1 минуту, 25 секунд:
Код:
      private void RunForm(Type form, bool allow_multi)
      {
         
         if (!allow_multi)
         {
            for (int i=0;i<MdiChildren.Length;i++)
            {
               
               if (MdiChildren[i].GetType()==form.GetType())
               {
                  //form.Dispose();
                  return ;
               }
            }
         }
         
         Form frm=new form.TypeInitializer.Invoke() as Form;
         frm.MdiParent=this;
         frm.Show();

      }

Вот такой вариант не пашет, ругается на Form frm=new form.TypeInitializer.Invoke() as Form;
The type or namespace name 'form' could not be found


 

Member
Статус: Не в сети
Регистрация: 18.02.2005
Откуда: Москва
Ray Adams писал(а):
Вот такой вариант не пашет, ругается

И правильно ругается.
Код:
using System;

namespace ConsoleApplication4
{
   class Class1
   {
      [STAThread]
      static void Main(string[] args)
      {
         Type t = typeof(Test);
         CreateInstance(t);
      }

      public static void CreateInstance(Type t)
      {
         // Ищем конструктор с заданными параметрами и вызываем его, получаем экземпляр
         object test = t.GetConstructor(new System.Type[0]).Invoke(new System.Type[0]);

         // Проверяем, что получили
         if (test is Test)
            Console.WriteLine(((Test)test).TestParam);
         else
            Console.WriteLine("blah");
      }
   }

   public class Test
   {
      public string TestParam;

      public Test()
      {
         TestParam = "Test";
      }
   }
}


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Сенкс, завтра попробую на работе этот кусок


 

Member
Статус: Не в сети
Регистрация: 29.09.2004
Откуда: Moscow-city
Smoke
Smoke писал(а):
-ничего из серии "Библия...", такие толстенные рыжие книги...я еще ни одной хорошей книги этой серии не читал.. кстати есть VB.NET из этой серии

Visual C++.Net (Том Арчер и Эндрю Уайтчепел) - читал? По-моему очень достойная книга. Там все зависит от авторов, а не от издателства и серии и поэтому я не советую бросаться такими заявлениями: "те рыжие книжки - полная чушь" не прочитав их все без исключения.

_________________
Truth in the trance


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
Ray Adams мда, не проверил..., но суть думаю понял да и Kot-II тебе проверенный код дал


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Kot-II Сенкс, все заработало. Только вот , что означает System.Type[0] ?


 

Member
Статус: Не в сети
Регистрация: 06.11.2003
массив 0 длины типа System.Type (System.Type[])


 

Member
Статус: Не в сети
Регистрация: 07.05.2003
Откуда: Москва
civil-gb учту, сейчас исправлю интро :beer:

_________________
Вы все еще жарите на AMD??? Тогда мы идем к Вам!
подпись: Intel & Ko -----------------------> (C) Smoke


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
DenisMak писал(а):
массив 0 длины типа System.Type (System.Type[])

Блин я торможу видимо :)
_____
А также выполз вопрос по ASP.NET. Чисто теоретический. Насколько быстро будет работать все это дело в интернете, а не в интранете? Я к примеру для баловства дома тыкаю его, так вот к примеру чтобы обработать изменение скажем checkbox страница перегружается! Я понимаю, что это все моно запросто сделать на JavaScript, но тут возникает вопрос, а на кой тогда мне надо на C# это дело ваять? Вот хоть убейте пока не вижу чем ASP.NET крут, кроме того, что ты пишеш спокойно на C# все что тебе надо. Но ведь скорость работы в интернете одна из важнейших составляющих сайтов!


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 481 • Страница 7 из 25<  1 ... 4  5  6  7  8  9  10 ... 25  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan