Доброго времени суток!
Я неплохо знаю Qt, а сейчас пытаюсь освоить .NET(3.5), и возникло несколько вопросов связанных с редактором форм:
1. Где в .NET классы аналогичные QLayout и QSpacer, или как прицепить мэнэджер размещения к форме?
1.1 Как сделать что-бы, например панель, занимала всю площадь формы?
2. Есть ли в .NET аналоги сигналов/слотов?
3. В сгенерирированном коде есть методы вида:
System::Void foo(System::Object^ sender){}
Я правильно понимаю, что ^ это "умный указатель" из C++/CLI, или что-то еще?
4. Нет инклудов в сгенерированных файлах. Почему это компилируется?
Заранее спасибо!
Try
> 1. Где в .NET классы аналогичные QLayout и QSpacer, или как прицепить мэнэджер
> размещения к форме?
LayoutPanel и иже с ней, - это если приспичило WinForms использовать. Как там в WPF, - хз, я ейный больной на всю голову XML и придуманный для лиц с альтернативным творческим мышлением Expression Blend не асилил
Try
> 2. Есть ли в .NET аналоги сигналов/слотов?
Гуглить делегаты
>4. Нет инклудов в сгенерированных файлах. Почему это компилируется?
Стоит почитать основные принципы работы CLR и вообще архитектуру дотнета, это в 2 словах не рассказать
>1.1 Как сделать что-бы, например панель, занимала всю площадь формы?
там где-то должно быть свойство Dock
> Есть ли в .NET аналоги
Огорчает постановка вопроса, дотнет это блин не игрушка сделанная студентами в подвале, есть аналоги всего что только можно вообразить
Если аналогов нет значит оригинал уныл и вместо него есть более качественная альтернатива
> Если аналогов нет значит оригинал уныл и вместо него есть более качественная альтернатива
Не всегда, например на ум приходит QStackedWidget. Когда я начинаю читать на форумах про TabControl и пустой Label, чтобы закрыть (!) им табы, у меня начинает нервно подергиваться глаз.
Странно, обычно в обратную сторону переходят (:
Лично я использовал WPF, чего и вам советую, он мне показался намного проще winforms.
Mono и переносимость мне вообще была не важна. Проект был чисто под винду и чисто для PC.
В противном случае не рекомендовал бы переходить на .NET.
Кстати по поводу компиляции где хедеров, у MS это вошло в моду, ты еще не видел WPF. Там куча файлов генерируется и суется не в проект, а в папку obj и как бы не предназначены для ручного изменения, короче опять MS всё за всех решает.
PS: WinForms это вообще муть, непроходимая, имхо, зато для него есть поддержка в mono.
>>Я правильно понимаю, что ^ это "умный указатель" из C++/CLI, или что-то еще?
Да это умный указатель... И умнее обычного. работать как с обычным указателем, но объявлять так:
System::Object^ obj = gcnew System::Object();
Яс дело вместо System::Object может быть любой класс на объект которого нужно сделать умный указатель
Удалять не надо, сборщик мусора сам удалит.
Ах да, надеюсь вы знаете что использовать обычный указатель (*) на .net классы не рекомендуется, это называется смешивать управляемый и неуправляемый код, что вообще-то считается ошибкой.
>>Нет инклудов в сгенерированных файлах. Почему это компилируется?
Хм, у меня в visual studio.net 2005 они есть и без них собираться не будет, то есть все как в обычном c++ коде. А понял, .net платформу не нужно инклюдить. Запись
using namespace System;
И далее, указывает что код должен использовать эту платформу и все что нужно само подключится.
> Запись using namespace System;
> И далее, указывает что код должен использовать эту платформу и все что нужно само подключится.
"using namespace" ничего не подключает, его использование аналогично c++, просто чтобы каждый раз не писать при обращение к элементам namespace-а. Подключение происходит в проекте, когда добавляются reference.
Amp
> Когда я начинаю читать на форумах про TabControl и пустой Label, чтобы закрыть
> (!) им табы, у меня начинает нервно подергиваться глаз.
Зачем??? Все решается проще.
Всем спасибо за советы!
Если у меня будут еще вопросы - напишу.
Monstradamus
> Зачем??? Все решается проще.
Это совет с одного из известных отечественных форумов, видимо решение в лоб. Говорят, что подобная порнография и в реальных проектах наблюдается.
Amp
Ну так такую порнографию накодить можно на любом языке, используя любую технологию. По этому, например, вопросу адекватное решение гуглится в лоб.
XAML очередная кривая поделка мс, в их стиле. Освоить не сложно, но завтра выйдет очередное их изобретение и о ней забудут, винформы уже мертвые можно сказать. Кому интересно читаем M. MacDonald, Pro WPF in C# 2010 Windows Presentation Foundation in .NET 4.
А кривота ее и сырость вскрывается при попытке хотябы заюзать патерн mvvm
Monstradamus
> По этому, например, вопросу адекватное решение гуглится в лоб.
Существует именно "формошлепное" решение без привлечения сторонних компонент?
Тема в архиве.