Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
В тридцать третьем выпуске рассылки '.Net Собеседник' вы можете узнать о том,
Информационный Канал Subscribe.Ru |
.Net Собеседник #33
Содержание- От автора
- Обзор новостей
- Code Colorer
- Время кода - Групповые и одиночные делегаты
- Форумы .Net на www.sql.ru
От автора
Здравствуйте, коллеги!
На самом деле всё просто. Если у нас есть два текстбокса с некими числами и мы
хотим вывести их произведение в третьем, то делаем так - добавляем HTML-кнопку
на форму, пишем:
<input type=”button” value=”произведение” onclick=”func();” ID="”button”1" NAME="”button”1"> |
<script language=”javascript”> function func() { var tb1, tb2, res; tb1 = document.Form1.tb1.value; tb2 = document.Form1.tb2.value; res = tb1*tb2; document.Form1.tbRes.value = res.toFixed(2); } </script> |
На этом всё - желаю интересного чтения.
Обзор новостей
-
Live Journal блог
от hDrummer'a
- Поменял цветовую схему в рассылке, как вам понравилось? Напишите пожалуйста.
-
SQL Database Tool для
IDE редактирования БД
- Apex SQL Tools запустила блог для комментирования процесса разработки Apex SQL Edit, инструмента для редактирвания БД. Apex SQL Edit – это IDE для SQL Server, включающее мощные средства разработки БД, обновлённый GUI, командную строку, Подсказчик, интеграцию с Visual Source safe, форматирование SQL и т.п.
-
Вышел
Thesaurus Desktop .NET v1
- Keyoti выпустил Thesaurus Desktop .NET 1.0, новый компонент-словарь для .NET приложений под Windows.
-
Вышел .netCHARTING для
WinForms
- .netCHARTING для WinForms может быть бесплатно использован для desktop-приложений. Эта версия включает функциональность .netCHARTING 3.0 для несетевой среды.
-
Обновился Apex SQL Log для чтения
транзакционного лога
- Apex SQL Log – инструмент, анализирующий транзакционный лог SQL, отображающий информацию и структурные изменения. Имеет аудит DDL, отображает пользовательское имя NT, усовершенствованный GUI, UNDO, командную строку и т.д.
-
RichSuite v1.1 от Richer Components
- В новом релизе обновлённые версии RichTextBox, RichDatePicker и RichSlider, а также компонент RichHelpTip, который показывает всплывающую помощь справа от элементов формы. Есть бесплатная версия, ограниченная по времени использования.
-
Вышел RichDatePicker v1.6
- Новый релиз поддерживает выборку недель, серьёзную кросс-браузерную поддержку, использование файлов внешних скриптов, внутристраничный рендеринг, а также уже стандартные возможности выбора кварталов, времени, множественного выбора и удобный интерфейс.
-
Выложены исходники искусственной
нейросети на C#
- Knowledge Discovery Keys выложила исходники искусственной нейросети на C# открытой лицензией. Можно применить в приложениях .NET для добычи данных и программирования искусственного интеллекта в играх.
Статья номера
Code Colorer
ЯЗЫК: C#
Автор статьи: Чужа В.Ф.
private void btnConvert_Click(object
sender, EventArgs e) { tbD.Text = ""; // перебор строк, находящихся в окне-источнике TextBox tbS foreach (string s in tbS.Lines) { // конвертация CodeConvertor cc = new CodeConvertor(s); // добавления переконвертированной строки в окно-приёмник tbD.Text += cc.CodeConvert(); } // копирование текста из окна-приёмника в буфер обмена // для последующей вставки в рассылку Clipboard.SetDataObject(tbD.Text, false); } |
Вот так вот всё достаточно просто и красиво. Осталось разобрать класс CodeConvertor, в котором собственно и содержится реализация конвертации (конечно же достаточно сложная и не совсем красивая :)
using System.Collections; namespace hDrummer.waMailListCC { public class CodeConvertor { private string code; private string temp; private string keyword_fontcolor; private string string_fontcolor; private string comment_fontcolor; private static bool first = true; private char prev_char; private CodeConvertor() { } public CodeConvertor(string scode) { code = scode; keyword_fontcolor = "blue"; string_fontcolor = "green"; comment_fontcolor = "gray"; } public string CodeConvert() { // если это комментарий, то ничего не раскрашиваем if (code.Trim().StartsWith("//")) { return "<font color=" + comment_fontcolor + ">" + code + "</font><br>"; } // если нет – раскрашиваем по полной SubCodeConvertor scc = new SubCodeConvertor(); foreach (string kw in scc) { temp = code.Replace(kw, "<font color='" + keyword_fontcolor + "'>" + kw + "</font>"); code = temp; } // и добавляем перевод строки code += "<br>"; return StringConvert(code); } public string StringConvert(string s) { string myresult = ""; foreach (char c in s) { if ((c.ToString() == "\"")) { if (first != true) { // анализируем на наличие escape-последовательности if (prev_char.ToString() !="\\" ) { myresult += c + "</font>"; first = true; } else { myresult += c; } } else { myresult += "<font color='" + string_fontcolor + "'>" + c; first = false; } } if (c.ToString() != "\"") { myresult += c; } prev_char = c; } return myresult; } #region CodeConvertor – только для внутренних нужд класса CodeConvertor private class SubCodeConvertor : IEnumerator, IEnumerable { private string[] keywords = { "public", "private", "internal", "protected", "static", "abstract", "string", " int ", " bool ", "void", "decimal", " byte ", "char", "string[]", "int[]", "bool[]", "decimal[]", "byte[]", " in ", "ref ", "try", "catch", "finally", "throw", " if", "return", "while", " do", "foreach", "else", "true", "false", "object", "class", "this", "base", "const", "delegate", "event", "namespace", "new", "null", "using", "#region", "#endregion" }; private int counter; public SubCodeConvertor() { counter = -1; } public bool MoveNext() { if (counter < keywords.Length - 1) { counter++; return true; } else return false; } public void Reset() { counter = -1; } public object Current { get { return keywords[counter]; } } #region IEnumerable Members public IEnumerator GetEnumerator() { return (IEnumerator) this; } #endregion } #endregion } } |
Время кода
Групповые и
одиночные делегаты
ЯЗЫК: C#
АВТОР: Чужа В.Ф., dotnetgrains.sql.ru
Как вы знаете, в языке c# существуют как одиночные, так и групповые делегаты (или указатели на функции, что может быть проще для понимания). Так вот, одиночные делегаты (или просто делегаты) предназначены для того, чтобы указывать на один метод и могут применяться для вызова одного метода. В свою очередь групповые делегаты могут использоваться для вызова нескольких методов одной строкой, а добавляться делегаты в групповой делегат могут с помощью оператора +=. Удалить делегаты из группового делегата можно с помощью операции -=. На групповой делегат накладываются дополнительные ограничения – он должен указывать на функцию, возвращающую void, а также она не должна иметь параметров out. Пример применения одиночного и группового делегата приведен ниже.
using System; namespace hDrummer { class clMain { [STAThread] static void Main(string[] args) { // создание и вызов делегата MyOps ops = new MyOps(); HelloDel hd = new HelloDel(ops.Hello); // так можем сделать, но //hd += new HelloDel(ops.Hello); // вызываться метод будет всё равно только 1 раз Console.WriteLine(hd("Vitali")); //создание и вызов группового делегата HelloGroup hg = new HelloGroup(ops.SergeHello); hg += new HelloGroup(ops.StelaHello); hg += new HelloGroup(ops.NNNHello); hg("Виталя"); // теперь удалим несколько делегатов из группового hg -= new HelloGroup(ops.StelaHello); hg -= new HelloGroup(ops.NNNHello); hg("Виталя"); } } //Вывод на экран - // Hello, Vitali // Здаров, Виталя! // Рада тебя видеть, Виталя! // Сколько лет, сколько зим, Виталя! // Здаров, Виталя! delegate string HelloDel (string name); delegate void HelloGroup(string name); /// <summary> /// Класс с методами, вызываемыми с помощью делегатов /// class MyOps { /// <summary> /// Метод для вызова с помощью одиночного делегата /// /// <param name="name"> /// <returns> public string Hello(string name) { return "Hello, "+name; } /// <summary> /// Метод для вызова с помощью группового делегата /// /// <param name="name"> public void SergeHello(string name) { Console.WriteLine("Здаров, {0}!", name); } public void StelaHello(string name) { Console.WriteLine("Рада тебя видеть, {0}!", name); } public void NNNHello(string name) { Console.WriteLine("Сколько лет, сколько зим, {0}!", name); } }} |
На этом всё.
{К содержанию}
Форумы .Net - вопросы оставшиеся без ответа
OleDbTransaction
InTransaction (Active)
как
узнать кол-во open session in webApplication
Запуск
CGI приложения и обработка его результата
На этом тридцать третий выпуск .Net Собеседника закончен.
До следующего номера.
Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши предложения и замечания.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.dotnetgrains |
Отписаться |
В избранное | ||