А чем не устраивает готовое решение из состава .NET Framework?Стало интересно а как вобще самому сделать контрол,например свой grid с нуля. Рисовать через GDI ?
![Фотография](https://vse.kz/uploads/av-7746.jpg?_r=0)
Господа .Net 3.5Если такие ???
#83
Отправлено 24.11.2008, 23:39:29
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Тогда все получается довольно просто. При запуске студии выбирается тип проекта - конечно, "Windows"
![:D](http://vse.kz/public/style_emoticons/default/smile.gif)
Самодельный контрол (допустим, он называется MyControl) будет храниться в сборке *.dll, поэтому компилятору нужно указать опцию /target:dll. MyControl будет наследовать от System.Windows.Forms.UserControl.
Рисовать кое-что придется, но это тоже не трудно - надо всего лишь перейти на вкладку [Design]. При необходимости в клиентскую область проектируемого контрола добавляются стандартные контролы - видимые (например, PictureBox) и невидимые (Timer). А дальше остается только хорошо запроектировать класс MyControl - добавить в него данные, методы, свойства, события. Затем протестировать MyControl - поместить его в несложное пользовательское приложение типа Windows Forms. Хотя для тестирования контролов прямо в студии есть еще и испытательный контейнер - UserControl Test Container. Вот, в основном, и все. Удачи.
![:D](http://vse.kz/public/style_emoticons/default/smoke.gif)
#84
Отправлено 28.11.2008, 11:01:21
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Зачем писать гриду, если таких написано сотни. Нужна навороченная грида - мне кажется, самый простой способ заюзать DevExpress. А если неохото тратить денег, то поищите на CodeProject. Там примеров куча. И не придется писать свою "с нуля".
#86
Отправлено 28.11.2008, 11:16:00
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
http://www.codeproje...ridcontrol.aspx
По архитектуре: при написании своих контролов лучше сразу закладывать разделение логики контрола от его отрисовки (использовать Renderer-ы например). Для логических отвязанных объектов (например, ячейка, столбец) создавать отдельный класс и там реализовывать логику. Удачи Вам в изучении.
![:)](http://vse.kz/public/style_emoticons/default/smile.gif)
#88
Отправлено 28.11.2008, 18:51:34
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
public BankAccount() : this("[Unknown]", 0)
{}
public BankAccount(string name) : this(name, 0)
{}
public BankAccount(string name, decimal balance)
{
_name = name;
_balance = balance;
}
[Visual Basic]
Public Sub New()
Me.New("[Unknown]", 0)
End Sub
Public Sub New(ByVal name As String)
Me.New(name, 0)
End Sub
Public Sub New(ByVal name As String, ByVal balance As Decimal)
_name = name
_balance = balance
End Sub
Пошто тут применяют вызов Me, This? Чаво ета за способ обращения к конструктору такой?
#89
Отправлено 28.11.2008, 20:22:02
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
![:laugh:](http://vse.kz/public/style_emoticons/default/smile.gif)
В общем, это хороший стиль программирования.
![:rotate:](http://vse.kz/public/style_emoticons/default/kruto.gif)
#91
Отправлено 29.11.2008, 18:06:02
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Альтернативные методы - не использовать this. То есть, для каждого конструктора, какие только нужны в классе, тупо расписывать опять все в его теле:так ета - а какие альтернативные методы написания то?
public BankAccount() { _name = "[Unknown]"; _balance = 0; } public BankAccount(string name) { _name = name; _balance = 0; }В этом примере неудобство отказа от this пока еще не очень ощущается. А если конструкторов больше? А если инициализировать надо не 2 переменных класса, а 22?
![:lol:](http://vse.kz/public/style_emoticons/default/shy.gif)
#92
Отправлено 29.11.2008, 20:41:16
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
А вот чаво там за байда:
partial class - пишут что типа описание класса можно раскидать по разным файликам и т.д. - а чаво то сути идеи не изложили - типа для веберов круто и се - чем круто - нафиг надо - не понять.
#93
Отправлено 29.11.2008, 22:47:11
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
![:lol:](http://vse.kz/public/style_emoticons/default/fie.gif)
Для веберов тоже круто. Например, в ASP.NET студия генерирует много кода в классах автоматически. Удобно, что partial позволяет вынести этот автоматически сгенерированный код в отдельный файл, чтобы он не мешал разработчику.
Сообщение отредактировал Visual1: 29.11.2008, 23:18:12
#94
Отправлено 30.11.2008, 12:11:12
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Но мое другое Я, то, которое читало Голлуба, Макконела, Александреску, Мейерса и др. - говорит что это костыль, из-за не совсем верной архитектуры. Есть большое подозрение, что вообще-то для таких целей, как например необходимый код в ASP.NET можно с успехом использовать наследование, при должном рефакторинге и перепроектировке. Либо включение.
А с партиал классами получается немного странная реализация MVC, на мой взгляд, когда все находится в одном классе.
#97
Отправлено 30.11.2008, 13:35:42
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Какие такие причины для "большого подозрения"? Вообще-то, partial классы никто никого использовать не заставлял. И почему вдруг partial class как-то мешает использовать наследование и включение, и/или проводить рефакторинг?Но мое другое Я, то, которое читало Голлуба, Макконела, Александреску, Мейерса и др. - говорит что это костыль, из-за не совсем верной архитектуры. Есть большое подозрение, что вообще-то для таких целей, как например необходимый код в ASP.NET можно с успехом использовать наследование, при должном рефакторинге и перепроектировке. Либо включение.
А бросаться презрительными словами ("костыль" и т.д.), для этого много ума не надо.
#98
Отправлено 30.11.2008, 13:58:03
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Да например, то, что крайне нужны классы в тысячи строк кода. Не слишком хороший стиль программирования, имхо, сопровождение будет интересным и завлекательным. И то - что в одном классе объединены разные вещи, тоже не является хорошим признаком.Какие такие причины для "большого подозрения"?
Заставлял как раз таки. Автоматическая генерация - это не заставление? Опять таки - сопровождение кода становится более сложным когда класс раскидан по файлам, ИДЕ конечно выручает, но привязка языка к ИДЕ - не во всех случаях самой удобной, это плохо по любому. Я не говорю что с партиалами код обязательно получится плохим, я считаю, что с ним проще написать неподдерживаемый код.Вообще-то, partial классы никто никого использовать не заставлял. И почему вдруг partial class как-то мешает использовать наследование и включение, и/или проводить рефакторинг?
Надеюсь вы не воспринимаете это как личное оскорбление?А бросаться презрительными словами ("костыль" и т.д.), для этого много ума не надо.
#99
Отправлено 30.11.2008, 14:51:42
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Они (тысячи строк кода) стали нужны по объективным причинам. Требования к удобству пользовательского интерфейса очень возросли. Но в любом случае, вам никто не запрещает выносить за пределы класса самостоятельные (на ваш взгляд) сущности.Да например, то, что крайне нужны классы в тысячи строк кода. Не слишком хороший стиль программирования, имхо, сопровождение будет интересным и завлекательным. И то - что в одном классе объединены разные вещи, тоже не является хорошим признаком.
Никакой "привязки языка к IDE" нет. Если вам так не нравится зависеть от IDE, то блокнот (notepad.exe) и компилятор командной строки (csc.exe) всегда к вашим услугам.Заставлял как раз таки. Автоматическая генерация - это не заставление? Опять таки - сопровождение кода становится более сложным когда класс раскидан по файлам, ИДЕ конечно выручает, но привязка языка к ИДЕ - не во всех случаях самой удобной, это плохо по любому. Я не говорю что с партиалами код обязательно получится плохим, я считаю, что с ним проще написать неподдерживаемый код.
![:smoke:](http://vse.kz/public/style_emoticons/default/smile.gif)
Как личное оскорбление нет, поскольку "костыль" было сказано не обо мне, а ключевом слове partial. Но обосновать свое утверждение (почему partial - костыль языка C#) вы не сумели.Надеюсь вы не воспринимаете это как личное оскорбление?
А бросаться презрительными словами ("костыль" и т.д.), для этого много ума не надо.
#100
Отправлено 30.11.2008, 15:26:46
![](https://vse.kz/public/style_images/osnovnoi34/post_offline.png)
Приведите пример интерфейса, который требует тысяч строк кода для конкретного случая. И причем эти тысячи строк нельзя засунуть глубоко в библиотеку. У меня складвается впечатление, что библиотека плохо спроектирована.Они (тысячи строк кода) стали нужны по объективным причинам. Требования к удобству пользовательского интерфейса очень возросли. Но в любом случае, вам никто не запрещает выносить за пределы класса самостоятельные (на ваш взгляд) сущности.
Предпочитаю vim. Привязка заключается в том, чтоНикакой "привязки языка к IDE" нет. Если вам так не нравится зависеть от IDE, то блокнот (notepad.exe) и компилятор командной строки (csc.exe) всегда к вашим услугам.
![]()
1) Нельзя блокнотом узнать какие же функции экспортирует либа. Для этого нужна студия.
2) Не всегда легко догадаться, где же находится второй кусок класса, на который идет ссылка.
3) Очень тяжело определить блокнотом, в каком же файле находится класс из секции using.
Этого уже достаточно для того чтобы сказать, что шарп привязан к студии.
Я же говорил - мое имхо, из-за неправильной проектировки библиотеки, когда требуется писать интерфейс на тысячи строк кода, которые нельзя, или тяжело использовать повторно. Если бы было можно - эти тысячи строк писать было бы не нужно.Но обосновать свое утверждение (почему partial - костыль языка C#) вы не сумели.
Количество пользователей, читающих эту тему: 1
пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0