PDA

View Full Version : C# унд VB.Net под Linux



crazy-mike
03-26-2015, 09:29 AM
http://www.mono-project.com/

Примерно так. Этот проект ведь совместно с Microsoft. Я все , что к нему относится поставил под Ubuntu. Скомпилил тестовые проги на C# и VB.Net. Все работает и под Linux , и под Win XP без перекомпиляции.

XCNY
03-26-2015, 11:04 AM
http://www.mono-project.com/Примерно так. Этот проект ведь совместно с Microsoft. Я все , что к нему относится поставил под Ubuntu. Скомпилил тестовые проги на C# и VB.Net. Все работает и под Linux , и под Win XP без перекомпиляции.Майки запатентуй терь))это дело))

crazy-mike
03-26-2015, 11:44 AM
Майки запатентуй терь))это дело))

у меня сейчас два корпоративных сервера в распоряжении и один "по знакомству". Два из них под Linux - один под Debian , один под Fedora. И один под FreeBSD. Под Ubuntu структура пакетов чуть отличается от Debian и Fedora. Ну а под FreeBSD все собирать из исходников тупо не хочется. И не особо понятно - во имя чего. Тестовые aspx по default project templates там показывают отстойные xhtml- странички с обработчиками принятых данных на сервере внутри DLL ( это там называется code behind ). Но у меня давным- давно button click не отсылается на сервер , а обрабатывается на клиенте внутри JavaScript!

Яправ
03-26-2015, 12:27 PM
http://www.mono-project.com/

Примерно так. Этот проект ведь совместно с Microsoft. Я все , что к нему относится поставил под Ubuntu. Скомпилил тестовые проги на C# и VB.Net. Все работает и под Linux , и под Win XP без перекомпиляции.

дотнет не уважаю. Програмируй на нормальных языках, майки

Sixteen
03-26-2015, 12:34 PM
новелл - живее всех живых, хо хо.

crazy-mike
03-26-2015, 12:37 PM
дотнет не уважаю. Програмируй на нормальных языках, майки

в ненормальных языках больше интересных возможностей. Мне просто интересно как они собираются конкурировать с AJAX и динамическим формированием контента страницы из JavaScript. Более-менее удачно это получилось у Adobe Flash и Adobe AIR ( в основном из-за скорости )

crazy-mike
03-26-2015, 12:38 PM
новелл - живее всех живых, хо хо.
ну хоть не Borland :111:

crazy-mike
03-26-2015, 01:21 PM
вот такое , компилируется командой mcs и выполняется под Ubuntu



using System;

public class Me {
public static void Main() {
Console.WriteLine("Приветик!");
}
}


а вот такое командой vbnc :



Module Module1
Sub Main()
Console.WriteLine("Приветик")
End Sub
End Module


А ещё csharp можно использовать как shell.

#!/usr/bin/csharp
Console.WriteLine ("Hello, World");

Sixteen
03-26-2015, 01:24 PM
я поэт по кличке цветик
от меня вам всем минетик (Ц)

crazy-mike
03-26-2015, 01:28 PM
я поэт по кличке цветик
от меня вам всем минетик (Ц)
Да фиг поймёшь - зачем это нужно. У меня просто сейчас проект на Visual Basic пробуют перетащить "в интернет" на apache2 под Debian Linux. Но хотят туда загнать бизнес-логику по максимуму. Под Linux этих Basic-ов не меньше трёх разных есть. Но в этом проекте Mono ведь самый настоящий VB.Net! ( там Microsoft участвует ).

Яправ
03-26-2015, 01:34 PM
майк мудохается с какими-то примитивными хренями. Проблема "hello word" решена уже давно, майки. То что нужно мудохаться цтоб чего-то скомпилировать говорит о том что ты неправильные технологии используешь

Sixteen
03-26-2015, 01:35 PM
Да фиг поймёшь - зачем это нужно. У меня просто сейчас проект на Висуал Басиц пробуют перетащить "в интернет" на апаче2 под Дебиан Линух. Но хотят туда загнать бизнес-логику по максимуму. Под Линух этих Басиц-ов не меньше трёх разных есть. Но в этом проекте Моно ведь самый настоящий ВБ.Нет! ( там Мицрософт участвует ).

настаивайте на железном питоне (.нет имплементаця)

crazy-mike
03-26-2015, 01:38 PM
настаивайте на железном питоне (.нет имплементаця)
Нет. Скорее на ActionScript 3. ( и на php5 на сервере ). Тем не менее у Mono заинтересовали некоторые вещи - переносимость на серверы Microsoft Azure , например ( у нас там сейчас вообще бесплатный хостинг предлагают ).

:101:
Мне просто хочется , чтобы "бизнес-партнёры" скомпилировали свои спагетти на VB.Net и загнали ко мне на сервер - и пусть оно там работает с моей БД. Я вообще не хочу в их исходники лезть.

Sixteen
03-26-2015, 03:59 PM
Нет. Скорее на АцтионСцрипт 3. ( и на пхп5 на сервере ). Тем не менее у Моно заинтересовали некоторые вещи - переносимость на серверы Мицрософт Азуре , например ( у нас там сейчас вообще бесплатный хостинг предлагают ).

:101:
Мне просто хочется , чтобы "бизнес-партнёры" скомпилировали свои спагетти на ВБ.Нет и загнали ко мне на сервер - и пусть оно там работает с моей БД. Я вообще не хочу в их исходники лезть.

если все таки не тока кампелируецца но исчо и эксекьютаеца и есть все драйверы то я не вижу пачему бы и нет.

crazy-mike
03-26-2015, 04:31 PM
если все таки не тока кампелируецца но исчо и эксекьютаеца и есть все драйверы то я не вижу пачему бы и нет.

в том и всё дело , что "эксекьютаеца и есть все драйверы" - они практически полностью перетащили в Linux этот самый "operating environment". Уже смотрел - там классы для работы с MySQL есть ( даже без ODBC ). И ещё куча всего.
Просто интерфейс чуточку "непривычно-противный" по сравнению с php.

XCNY
03-26-2015, 08:12 PM
ну хоть не Borland :111:А чё Борланд ,тоже нормально ,это как принято выражаться дата бэйс прикладная программа,под разработкой Борланд.Хотя рулёз это Оракл ..

Serge7
03-26-2015, 08:17 PM
новелл - живее всех живых, хо хо. Это правда! :)

Lor
03-26-2015, 08:26 PM
http://www.mono-project.com/

Примерно так. Этот проект ведь совместно с Microsoft. Я все , что к нему относится поставил под Ubuntu. Скомпилил тестовые проги на C# и VB.Net. Все работает и под Linux , и под Win XP без перекомпиляции.

К сожалению, я в этом ни хрена не понимаю, но круто! :110:

Quanty
03-27-2015, 01:15 AM
дотнет не уважаю. Програмируй на нормальных языках, майки

специалист, твою мать....

Serge7
03-27-2015, 01:33 AM
специалист, твою мать....Марек - специалист по- Hardware. Поэтому, респект и уважуха пацану. Куда он полез!? :197: :110:

crazy-mike
03-27-2015, 04:29 AM
А чё Борланд ,тоже нормально ,это как принято выражаться дата бэйс прикладная программа,под разработкой Борланд.Хотя рулёз это Оракл ..
Нормальнее всех Raining Data где-то в Калифорнии. ( former Pick Systems ) - но это моё глубоко личное мнение. :111:

Ангел
03-27-2015, 05:46 PM
Нет. Скорее на ActionScript 3. ( и на php5 на сервере ). Тем не менее у Mono заинтересовали некоторые вещи - переносимость на серверы Microsoft Azure , например ( у нас там сейчас вообще бесплатный хостинг предлагают ).

:101:
Мне просто хочется , чтобы "бизнес-партнёры" скомпилировали свои спагетти на VB.Net и загнали ко мне на сервер - и пусть оно там работает с моей БД. Я вообще не хочу в их исходники лезть.
Сейчас может и бесплатно.. а через год потребуют твою душу :227:
А Borland и Novell ЕМНИП под одной крышей сейчас :117:

XCNY
03-27-2015, 09:13 PM
Марек - специалист по- Hardware. Поэтому, респект и уважуха пацану. Куда он полез!? :197: :110:
мне кажеться он не может этим быть,так платы не травил и тиристоры не подбирал для цветомузыки да и не делал пал-секам ,конверторы.Но теоретически может он силён,даже может видел как многослойные И платы делают или на кремнивой подложке.. процессор структуируют... или как из феритоваого материала и провода медного оперативную память машины собирают..))Хотя германий тоже применяелься в основах транзистора...Он не программировал на программатора маску для ПЗУ , а были такие машинки .На машине электронной он не выдергивал ТЭЗЫ ,он не вмдел физическую шину передачи даных, 16 битной машины.Да и ващэ много разного железа типа.А ещё я думаю он никогда не работал с осцилогорфом,и даже не сможет фигуру Лисажу там создать или определить даже по сигнал прочитать

Serge7
03-27-2015, 09:23 PM
если все таки не тока кампелируецца но исчо и эксекьютаеца и есть все драйверы то я не вижу пачему бы и нет.Вот именно. :116:

Serge7
03-27-2015, 09:27 PM
мне кажеться он не может этим быть,так платы не травил и тиристоры не подбирал для цветомузыки да и не делал пал-секам ,конверторы.Но теоретически может он силён,даже может видел как многослойные платы делают или на кремнивой подложке.. процессор структуируют... или как из феритоваого материала и провода медного оперативную память машины собирают..))Хотя германий тоже применяелься в основах транзистора...Он не программировал на программатора маску для ПЗУ , а были такие машинки .На машине электронной он не выдергивал ТЭЗЫ ,он не вмдел физическую шину передачи даных, 16 битной машины.Да и ващэ много разного железа типа Да, было время, когда мы всё это травили, грызли и паяли рученьками своими собственными! :197::110:
Да ещё и нужные транзисторы с диодами на чёрном рынке приходилось втридорога покупать. :)

crazy-mike
03-28-2015, 01:43 AM
Сейчас может и бесплатно..
Ну - под Linux никто ничего такого не требовал. :111:

Serge7
03-28-2015, 02:05 AM
Ну - под Linux никто ничего такого не требовал. :111:Майки, ты паял сам транзисторы в плату? Или устанавливал их в радиаторы? Если да, то расскажи - как. Поэтапно, please. :116: :)

MariLi
03-28-2015, 02:28 AM
http://www.mono-project.com/

Примерно так. Этот проект ведь совместно с Microsoft. Я все , что к нему относится поставил под Ubuntu. Скомпилил тестовые проги на C# и VB.Net. Все работает и под Linux , и под Win XP без перекомпиляции.

И графика? Сомневаюсь...

crazy-mike
03-28-2015, 04:00 AM
И графика? Сомневаюсь...

Графика , кстати , тоже.
( правда там отдельные классы для GTK - но ведь GTK для Windows тоже есть )

Ангел
03-28-2015, 05:22 AM
Ну - под Linux никто ничего такого не требовал. :111:
Там зато мозг порабощался.. Никсы это красные глаза.. и танцы с бубном... постоянно :227: Хотя сервер под вин изврат конечно :227:
Вряд ли кто то тут прошивал такую память 85843 Их обычно тетки прошивали )

crazy-mike
03-28-2015, 07:55 AM
Там зато мозг порабощался.. Никсы это красные глаза.. и танцы с бубном... постоянно Их обычно тетки прошивали )
Нет там никаких танцев с бубном как раз. И красных глаз тоже.

Lor
03-28-2015, 10:57 AM
... никогда не работал с осцилогорфом,и даже не сможет фигуру Лисажу там создать

Вот блин! Я уже и сам забыл что это ... :)

Хотя сегодня чудное время. Электронщиков почти не осталось. Я починил в одной компании плату производства 80-ых годов, так они про меня теперь легенды расказывают. :111:

Правда, она была последняя в мире ... :)

XCNY
03-28-2015, 07:21 PM
Вот блин! Я уже и сам забыл что это ... :)Хотя сегодня чудное время. Электронщиков почти не осталось. Я починил в одной компании плату производства 80-ых годов, так они про меня теперь легенды расказывают. :111:Правда, она была последняя в мире ... :)Да крутящийся элипс на мониторе осцилографа,а токое ощющение 3х-мерное верчение-3 ДИ просто.Тока этож нада сделать -подклчить наложить да ващэ ручки настроек повертеть ,по кинескпу пальчиком постучаиь итд итп,ах да два независимых сигнала нада или генератора которые это создают...

Lor
03-28-2015, 08:03 PM
Да крутящийся элипс на мониторе осцилографа,а токое ощющение 3х-мерное верчение-3 ДИ просто.Тока этож нада сделать -подклчить наложить да ващэ ручки настроек повертеть ,по кинескпу пальчиком постучаиь итд итп,ах да два независимых сигнала нада или генератора которые это создают...

Мы в институте разрабатывали то, что в Америке можно было уже купить в виде микросхемы. :) Севастьянов приезжал. Я правую руку месяц не мыл. :111:

XCNY
03-28-2015, 08:54 PM
Мы в институте разрабатывали то, что в Америке можно было уже купить в виде микросхемы. :) Севастьянов приезжал. Я правую руку месяц не мыл. :111:Мы про Америку мало знали,кроме джинсов и жвачки типа,но на лекциях экономики нам читали ...,что отрасль связи отстаёт от Америки на 60 лет типо.))Показатели были такие на мы имели 60 тлф на 100 абонентов а сша 110 на 100 ))как это было понять))Вот так экономисти расчитывали,как то и просчитывали.A ещё достижение было ,что экономисты СССР как то доквзвли и показали, что связь это не отрасль услуг населению а что это производство

Lor
03-28-2015, 11:51 PM
... мы имели 60 тлф на 100 абонентов ...
Это где и когда? :120:

Нам телефон поставили в 1976 только потому, что отец был инвалид и смертельно болен(рак). Еще был у мента в подъезде телефон. Весь подъезд(15 квартир) ходили звонить к нам или к менту. А в доме(9 подъездов по 15 квартир) было 10..15 телефонов от силы.

P.S. В среднем исходили их отставания на 20 лет. Но это "в среднем".

crazy-mike
04-06-2015, 10:58 AM
http://zetcode.com/gui/csharpwinforms/

Winforms

Windows Forms is a graphical user interface application programming interface (API) included as a part of Microsoft's .NET Framework. As of 13 May 2008, Mono's System.Windows.Forms 2.0 is API complete. Simply put, Winforms is a library for creating GUI applications.

:101:
Оно в самом деле компилируется по gmcs -pkg:dotnet .... И получается что-то исполняемое в графическом режиме ( и с "расширением" .exe ).

crazy-mike
04-06-2015, 12:14 PM
Вот так оно работает - если скомпилировать C# под Ubuntu:

gmcs -pkg:dotnet whello.cs

ну и сам исходник whello.cs



using System;
using System.Drawing;
using System.Windows.Forms;

public class HelloWorld : Form
{
static public void Main ()
{
Application.Run (new HelloWorld ());
}

public HelloWorld ()
{
Text = "кросс-платформный тест";
Label l=new Label();
l.Text="Привет!"; l.Location=new Point(10,10);
l.Parent=this;
}
}

crazy-mike
04-18-2015, 02:08 PM
Сегодня вечером "кошмарили" C# и VB.Net под Windows XP. Притащил им туда *.exe после компилятора с C# и VB под Mono. Всё нормально работало под Win XP. Потом решили загнать исходники в проект внутри Microsoft Visual Studio чего-то там.

Загнать - загнали. Но у меня там все классы ( вся программа ) в одном файле. А Microsoft Visual Studio начало для проекта свой "пролог-запускалку" генерировать ( Program1.cs - и там внутри Application.Run( new Form1 ). У меня они там совсем не так , конечно же ,
называются. Ну и соответственно "порезали" всё "по правилам Visual Studio" - только для того чтобы их "девелопер" мог изменения вносить. ( командной строкой и вызовом компилятора из командной строки "девелопер" почему-то вообще пользоваться не умеет :101: )

Короче - всё заработало. А по длине exe-файл под Mono не отличается от exe-файла после Microsoft Visual Studio.

Вот эта "радость" на VB.NET: ( vbnc - компилятор под Mono на Linux )



Imports System
Imports System.Net
Imports System.Drawing
Imports System.Xml
Imports System.Windows.Forms

Class MyLabel
Inherits Label
Public Sub New
Me.Font=new System.Drawing.Font("SansSerif",10,System.Drawing.FontStyle.Bold)
End Sub
End Class

Class MyStatusBar
Inherits StatusBar

Public Sub New
AutoSize = true
Font = New System.Drawing.Font("SansSerif",12,System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Italic )
BackColor = System.Drawing.Color.DeepPink
Me.ForeColor = System.Drawing.Color.White
End Sub

End Class

Class MyBut
Inherits Button

Public Sub New
AutoSize = True
Font = New System.Drawing.Font("SansSerif",24)
BackColor = System.Drawing.Color.DeepPink
Cursor = Cursors.Hand
ForeColor = System.Drawing.Color.White
End Sub

End Class


Class MyUt

Shared Public Sub ClearCtrl( ByRef c as Control )
Dim i as Integer = c.Controls.Count
Dim a as Control
While i > 0
i -= 1
a = c.Controls(i)
c.Controls.Remove(a)
a.Dispose
End While
End Sub

End Class


Class MakPP
Inherits Form

Private St as MyStatusBar
Private T As TextBox
Private Pw As TextBox
Private P As Panel
Private PL As Panel

Private Sub OnExit(ByVal sender As Object, e as EventArgs)
Close()
End Sub

Private Sub OnLastUp(ByVal sender As Object, e as EventArgs)
St.Text = "нові надходження"
MyUt.ClearCtrl(Me.PL)
Dim wc As WebClient = New WebClient
wc.Encoding = System.Text.Encoding.UTF8
Try
Dim z() As Byte = wc.DownloadData("http://a.b.c/gtable.php?fn=fresh.sql")
Dim a As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
Dim xml As XmlDocument = New XmlDocument
xml.LoadXml(a.GetString(z,0,z.Length))
Dim cc As XmlNodeList
Dim qn As XmlNode
Dim rr As XmlNodeList = xml.GetElementsByTagName("r")
St.Text="відібрано оголошень "+Convert.ToString(rr.Count)
Dim lv As ListView = New ListView()
lv.BackColor = System.Drawing.Color.DeepPink
lv.FullRowSelect = True
lv.GridLines = True
lv.CheckBoxes = True
lv.Scrollable = True
lv.AllowColumnReorder = True
lv.Sorting = SortOrder.Descending
lv.Columns.Add("Коли",140,HorizontalAlignment.Left)
lv.Columns.Add("Звідки",120,HorizontalAlignment.Left)
lv.Columns.Add("Ціна",90,HorizontalAlignment.Left)
lv.Columns.Add("Валюта",80,HorizontalAlignment.Left)
lv.Columns.Add("Тип нерухомості",200,HorizontalAlignment.Left)
lv.Columns.Add("Оголошення",350,HorizontalAlignment.Left)
lv.Columns.Add("Місто",90,HorizontalAlignment.Left)
lv.Columns.Add("Р-н",80,HorizontalAlignment.Left)
lv.Columns.Add("Адреса",100,HorizontalAlignment.Left)
Dim al As MyLabel = New MyLabel
al.Location = New Point(2,2)
al.Text = "останні надходження"
al.Size = New Size(200,30)
al.Parent = PL
PL.Parent = Me
PL.Size = New Size(900,400)
Dim scr As Panel = New Panel
scr.Parent = PL
scr.Size = new Size(850,300)
scr.Location = new Point(0,40)
lv.Parent = scr
lv.Visible = False
scr.AutoScroll = True
PL.BackColor = System.Drawing.Color.Gold
PL.ForeColor = System.Drawing.Color.Black
PL.Visible = True
Dim i As Integer
i = 0
lv.Dock = DockStyle.Fill
lv.View = View.Details
While (i<rr.Count)
qn = rr.Item(i)
i += 1
cc = qn.ChildNodes
Dim it As ListViewItem = New ListViewItem
it.UseItemStyleForSubItems = False
it.Text = cc.Item(8).InnerText
it.SubItems.Add(cc.Item(2).InnerText)
Dim t As ListViewItem.ListViewSubItem = New ListViewItem.ListViewSubItem
t.Text=cc.Item(13).InnerText
If(cc.Item(22).InnerText = "$")
t.ForeColor = System.Drawing.Color.LimeGreen
t.BackColor = System.Drawing.Color.Black
End If
it.SubItems.Add(t)
it.SubItems.Add(cc.Item(22).InnerText)
it.SubItems.Add(cc.Item(27).InnerText)
it.SubItems.Add(cc.Item(28).InnerText)
it.SubItems.Add(cc.Item(19).InnerText)
it.SubItems.Add(cc.Item(20).InnerText)
it.SubItems.Add(cc.Item(21).InnerText)
lv.Items.Add(it)
End While
lv.Visible = True
Catch ee As Exception
St.Text = "Помилка мережі! "+ee.Message
End Try
End Sub

Private Sub OnMyNote(ByVal sender As Object, e as EventArgs)
St.Text = "блокнот"
End Sub

Private Sub OnSeeAll(ByVal sender As Object, e as EventArgs)
St.Text = "Всі дані"
End Sub

Private Sub OnMyQryNow(ByVal sender As Object, e as EventArgs)
St.Text = "Знайти зараз"
End Sub

Private Sub OnMyActQry(ByVal sender As Object, e as EventArgs)
St.Text = "Активні запити"
End Sub


Private Sub BeginIt
Dim mm As MainMenu = New MainMenu()
Dim fileZ As MenuItem = mm.MenuItems.Add("Файли")
Dim seeZ As MenuItem = mm.MenuItems.Add("Показати")
Dim searchZ As MenuItem = mm.MenuItems.Add("Пошук")
fileZ.MenuItems.Add(New MenuItem("Завершити роботу",New EventHandler(AddressOf OnExit)))
seeZ.MenuItems.Add(New MenuItem("Нові надходження",New EventHandler(AddressOf OnLastUp)))
seeZ.MenuItems.Add(New MenuItem("Всі дані",New EventHandler(AddressOf OnSeeAll)))
seeZ.MenuItems.Add(New MenuItem("Блокнот",New EventHandler(AddressOf OnMyNote)))
searchZ.MenuItems.Add(New MenuItem("Знайти зараз",New EventHandler( AddressOf OnMyQryNow)))
searchZ.MenuItems.Add(New MenuItem("Активні запити",New EventHandler(AddressOf OnMyActQry)))
Me.Menu = mm
WindowState = FormWindowState.Maximized
End Sub

Private Sub OnClick(ByVal sender As Object, ByVal e As EventArgs)
St.Text = "Перевіряємо користувача"
P.Visible = false
Dim wc As WebClient = New WebClient
wc.Encoding = System.Text.Encoding.UTF8
Dim pp As System.Collections.Specialized.NameValueCollection = New System.Collections.Specialized.NameValueCollection
pp.Add("m",T.Text)
pp.Add("p",Pw.Text)
Try
Dim z() As Byte = wc.UploadValues ( "http://a.b.c/login.php","POST",pp )
Dim a As System.Text.UTF8Encoding = New System.Text.UTF8Encoding
Dim xml As XmlDocument = New XmlDocument
xml.LoadXml( a.GetString( z,0,z.Length ) )
Dim nx As XmlNodeList = xml.GetElementsByTagName( "c" )
Dim rc As String = nx.Item(0).InnerText
St.Text = ""
If(rc = "fail") Then
St.Text = "Неправильний користувач/пароль"
End If
If(rc= "ok") Then
St.Text="Розпочинаємо роботу"
beginIt
End If
If(rc="adm") Then
St.Text="Аккаунт не активовано!"
End If
Catch ee As Exception
St.Text = "Помилка мережі! "+ee.Message
End Try
End Sub

Sub MakeLogin
P = New Panel
P.Text = "Login"
P.Parent = Me
P.BackColor = System.Drawing.Color.Gold
P.BorderStyle = BorderStyle.FixedSingle
P.Size = New Size(600,400)
Dim L As MyLabel = new MyLabel
L.Text = "користувач:"
L.Parent = P
T = new TextBox
T.Size = new Size(320,20)
T.Location = new Point(110,5)
T.MaxLength = 64
T.ReadOnly = False
T.BorderStyle=BorderStyle.FixedSingle
T.Parent=P
Dim L1 As MyLabel = New MyLabel
L1.Text = "пароль:"
L1.Parent = P
L1.Location = new Point(5,26)
Pw = New TextBox
Pw.Size = New Size(320,20)
Pw.Location = New Point(110,30)
Pw.MaxLength = 64
Pw.ReadOnly = False
Pw.UseSystemPasswordChar = True
Pw.BorderStyle=BorderStyle.FixedSingle
Pw.Parent=P
Dim B as MyBut = New MyBut
B.Text = "Зайти"
AddHandler B.Click, AddressOf Me.OnClick
B.Location = new Point(100,200)
B.Parent = P
End Sub

Sub New
PL = new Panel()
PL.Visible = False
PL.Parent = Me
Me.Text = "Mak++/кросс-платформна версія для Windows/Linux/Android"
Me.BackColor = System.Drawing.Color.Khaki
Me.Location = new Point(0,0)
Me.Size = Screen.GetWorkingArea(Me).Size
Me.St = New MyStatusBar
Me.St.Parent = Me
Me.St.Text = "вхід у систему"
Me.St.Visible = True
MakeLogin
End Sub

Shared Sub Main
Application.Run( New Makpp )
End Sub

End Class

crazy-mike
04-18-2015, 02:13 PM
Ну а вот так на С# под Mono: ( exe-файл после компилятора C# получается на 3K короче чем после компилятора с VB.Net )



using System;
using System.IO;
using System.Net;
using System.Drawing;
using System.Xml;
using System.Windows.Forms;

class MyLabel :Label {
public MyLabel() {
Font=new System.Drawing.Font("SansSerif",10,
System.Drawing.FontStyle.Bold);
}
}

class MyStatusBar :StatusBar {

public MyStatusBar() {
AutoSize=true;
Font=new System.Drawing.Font("SansSerif",12,
System.Drawing.FontStyle.Bold|System.Drawing.FontS tyle.Italic);
BackColor=System.Drawing.Color.DeepPink;
ForeColor=System.Drawing.Color.White;
}
}

class MyBut :Button {

public MyBut() {
AutoSize=true;
Font=new System.Drawing.Font("SansSerif",24,System.Drawing.FontStyle.Bold);
BackColor=System.Drawing.Color.DeepPink;
Cursor=Cursors.Hand;
ForeColor=System.Drawing.Color.White;
}

}

class MyUt {

static public void ClearCtrl( Control c) {
int n,i; Control a;
n=c.Controls.Count;
i=n;
while(i>0) {
i--; a=c.Controls[i];
c.Controls.Remove(a); a.Dispose();
};
}

static public Image FigFromUrl(String url)
{ WebClient wc=new WebClient();
byte[] imd = wc.DownloadData(url);
MemoryStream stream = new MemoryStream(imd);
Image img = Image.FromStream(stream);
stream.Close();
return img;
}

}

public class Makpp : Form
{ TextBox T;
TextBox Pw;
Panel P,PL;
MyStatusBar St;

static public void Main () { Application.Run (new Makpp()); }

public void makeLogin() {
P = new Panel(); P.Text="Login";
P.Parent=this; P.BackColor=System.Drawing.Color.Gold;
P.BorderStyle=BorderStyle.FixedSingle;
P.Size=new Size(600,400);
MyLabel L = new MyLabel();
L.Text="користувач:"; L.Parent=P;
T = new TextBox(); T.Size=new Size(320,20);
T.Location=new Point(110,5); T.MaxLength=64; T.ReadOnly=false;
T.BorderStyle=BorderStyle.FixedSingle;
T.Parent=P;
MyLabel L1 = new MyLabel();
L1.Text="пароль:"; L1.Parent=P;
L1.Location=new Point(5,26);
Pw = new TextBox(); Pw.Size=new Size(320,20);
Pw.Location=new Point(110,30); Pw.MaxLength=64; Pw.ReadOnly=false;
Pw.UseSystemPasswordChar=true; Pw.BorderStyle=BorderStyle.FixedSingle;
Pw.Parent=P;
MyBut B=new MyBut(); B.Text="Зайти";
B.Click += new EventHandler(OnClick);
B.Location=new Point(100,200); B.Parent=P;
}

void OnClick(object sender, EventArgs e) {
St.Text="Перевіряємо користувача";
P.Visible=false;
WebClient wc=new WebClient();
wc.Encoding = System.Text.Encoding.UTF8;
System.Collections.Specialized.NameValueCollection pp=new System.Collections.Specialized.NameValueCollection ();
pp.Add("m",T.Text);
pp.Add("p",Pw.Text);
try {
byte[] z=wc.UploadValues("http://a.b.c/login.php","POST",pp);
System.Text.UTF8Encoding a=new System.Text.UTF8Encoding();
XmlDocument xml=new XmlDocument(); xml.LoadXml(a.GetString(z,0,z.Length));
XmlNodeList nx=xml.GetElementsByTagName("c");
String rc=nx.Item(0).InnerText;
St.Text="";
if(rc=="fail") { St.Text="Неправильний користувач/пароль"; };
if(rc=="ok") { beginIt(); St.Text="Розпочинаємо роботу"; };
if(rc=="adm") { St.Text="Аккаунт не активовано!"; };
} catch(Exception ee) {
St.Text="Проблеми у мережі: "+ee.Message;
};
}

public Makpp ()
{ Text = "Mak++/кросс-платформна версія для Windows/Linux/Android";
PL=new Panel(); PL.Visible=false; PL.Parent=this;
BackColor=System.Drawing.Color.Khaki; //WindowState=FormWindowState.Maximized;
this.Location=new Point(0,0);
this.Size=Screen.GetWorkingArea(this).Size;
St=new MyStatusBar(); St.Dock=DockStyle.Bottom; St.Parent=this;
St.Text="вхід у систему"; St.Visible=true;
makeLogin();
}

void OnExit(object sender, EventArgs e) { Close(); }

void OnLastUp(object sender, EventArgs e) {
St.Text="нові надходження";
PL.Visible=false;
MyUt.ClearCtrl(this.PL);
WebClient wc=new WebClient();
wc.Encoding = System.Text.Encoding.UTF8;
try {
byte[] z=wc.DownloadData("http://a.b.c/gtable.php?fn=fresh.sql&d="
+ Convert.ToString(DateTime.Now));
System.Text.UTF8Encoding a=new System.Text.UTF8Encoding();
XmlDocument xml=new XmlDocument(); xml.LoadXml(a.GetString(z,0,z.Length));
XmlNodeList cc;
XmlNode qn;
XmlNodeList rr=xml.GetElementsByTagName("r");
St.Text="відібрано оголошень "+Convert.ToString(rr.Count);
ListView lv=new ListView();
lv.BackColor=System.Drawing.Color.DeepPink;
lv.FullRowSelect=true;
lv.GridLines=true; lv.CheckBoxes=true; lv.Scrollable=true;
lv.AllowColumnReorder=true; lv.Sorting=SortOrder.Descending;
lv.Columns.Add("Коли",140,HorizontalAlignment.Left);
lv.Columns.Add("Звідки",120,HorizontalAlignment.Left); // 0
lv.Columns.Add("Ціна",90,HorizontalAlignment.Left); // 1
lv.Columns.Add("Валюта",80,HorizontalAlignment.Left); // 2
lv.Columns.Add("Тип нерухомості",200,HorizontalAlignment.Left);
lv.Columns.Add("Оголошення",250,HorizontalAlignment.Left);
lv.Columns.Add("Місто",90,HorizontalAlignment.Left);
lv.Columns.Add("Р-н",80,HorizontalAlignment.Left);
lv.Columns.Add("Адреса",100,HorizontalAlignment.Left);
MyLabel al = new MyLabel();
al.Location=new Point(2,2);
al.Text="останні надходження"; al.Size=new Size(200,30); al.Parent=PL;
PL.Parent=this;
PL.Size=new Size(900,400);
Panel scr=new Panel();
scr.Parent=PL; scr.Size=new Size(850,300); scr.Location=new Point(0,40);
lv.Parent=scr; lv.Visible=false;
scr.AutoScroll=true;
PL.BackColor=System.Drawing.Color.Gold;
PL.ForeColor=System.Drawing.Color.Black;
PL.Visible=true;
//
int i;
i=0;
lv.Dock=DockStyle.Fill;
lv.View=View.Details;
while(i<rr.Count) {
qn=rr.Item(i); i++;
cc=qn.ChildNodes;
ListViewItem it=new ListViewItem();
it.UseItemStyleForSubItems = false;
it.Text=cc.Item(8).InnerText;
ListViewItem.ListViewSubItem tsrc=new ListViewItem.ListViewSubItem();
tsrc.Text=cc.Item(2).InnerText;
it.SubItems.Add(tsrc); // 0
ListViewItem.ListViewSubItem t=new ListViewItem.ListViewSubItem();
t.Text=cc.Item(13).InnerText;
if(cc.Item(22).InnerText == "$") {
t.ForeColor=System.Drawing.Color.LimeGreen;
t.BackColor=System.Drawing.Color.Black;
};
it.SubItems.Add(t); // 1
it.SubItems.Add(cc.Item(22).InnerText); // 2
it.SubItems.Add(cc.Item(27).InnerText); // 3
it.SubItems.Add(cc.Item(28).InnerText); // 4
it.SubItems.Add(cc.Item(19).InnerText); // 5
it.SubItems.Add(cc.Item(20).InnerText); // 7
it.SubItems.Add(cc.Item(21).InnerText); // 8
lv.Items.Add(it);
};
lv.Visible=true;
} catch(Exception ee) {
St.Text="Проблеми у мережі: "+ee.Message;
};
}

void OnMyNote(object sender, EventArgs e) { St.Text="блокнот"; }
void OnSeeAll(object sender, EventArgs e) { St.Text="Всі дані"; }
void OnMyQryNow(object sender, EventArgs e) { St.Text="Знайти зараз"; }
void OnMyActQry(object sender, EventArgs e) { St.Text="Активні запити"; }

void beginIt ()
{ MainMenu mainMenu = new MainMenu();
MenuItem file = mainMenu.MenuItems.Add("Файли");
MenuItem seeZ = mainMenu.MenuItems.Add("Показати");
MenuItem searchZ = mainMenu.MenuItems.Add("Пошук");
file.MenuItems.Add(new MenuItem("Завершити роботу",new EventHandler(OnExit)));
seeZ.MenuItems.Add(new MenuItem("Нові надходження",new EventHandler(OnLastUp)));
seeZ.MenuItems.Add(new MenuItem("Всі дані",new EventHandler(OnSeeAll)));
seeZ.MenuItems.Add(new MenuItem("Блокнот",new EventHandler(OnMyNote)));
searchZ.MenuItems.Add(new MenuItem("Знайти зараз",new EventHandler(OnMyQryNow)));
searchZ.MenuItems.Add(new MenuItem("Активні запити",new EventHandler(OnMyActQry)));
this.Menu = mainMenu;
WindowState=FormWindowState.Maximized;
}
}