Учебники MVC 4 и WPF

Пока читаю WPF, написано очень сжато и скорее всего не всё, но для быстрого старта нормально.

http://metanit.com/sharp/mvc/

http://metanit.com/sharp/wpf/

Цикл статей ASP.Net MVC на Хабре
http://habrahabr.ru/post/175999/

Непутевые заметки о ASP.NET MVC
http://habrahabr.ru/post/143024/

RSS-читалка

С запросом к серверу и использованием XSL-трансформации для преобразования в HTML
http://www.vr-online.ru/content/rss-chitalka-na-c-svoimi-rukami-4683

С классами для узлов XML
http://devoid.com.ua/csharp/win-forms/sozdanie_svoego_rss_reader_na_csharp.html

Из этого же блога:
Автозапуск программы в C#
http://devoid.com.ua/csharp/win-forms/autorun-program-in-csharp.html

Создание собственной RSS ленты (на PHP)
http://devoid.com.ua/php/php-beginners/sozdanije-sobstvennoj-rss-lenti.html

И еще раз о ридерах, с этим примером не особенно разбиралась
http://www.codeproject.com/Articles/19924/Simple-RSS-Reader-in-C

WPF NotifyIcon

Библиотека для отображения иконки в трее, всплывающих окошек и т.п. Можно устанавливать через NuGet.
http://www.hardcodet.net/projects/wpf-notifyicon
http://www.codeproject.com/Articles/36468/WPF-NotifyIcon

Найдено в этом обсуждении (Как свернуть окно в трей)
http://www.cyberforum.ru/wpf-silverlight/thread550534.html

Запуск стороннего приложения

using System.Diagnostics;
 
Process.Start("IExplore.exe", "http://infobs.athn.ru/");

Блог давно не ведется, но ссылка пусть будет.
http://alex-comments.blogspot.ru/2011/02/wpf_13.html

Открыть страничку в браузере, установленном по умолчанию

System.Diagnostics.Process.Start("http://infobs.athn.ru/");

Таймер

System.Windows.Threading.DispatcherTimer dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0,0,1);
dispatcherTimer.Start();


private void dispatcherTimer_Tick(object sender, EventArgs e)
{
  // code goes here
}

http://stackoverflow.com/questions/5410430/wpf-timer-like-c-sharp-timer

Сравнение объектов в списках

Задача: есть два списка объектов одного типа. Объекты могут повторяться. Нужно взять из второго списка только те объекты, которых нет в первом.

var newArticles = allArticles.Except(oldArticles, new ArticleEqualityComparer());

ArticleEqualityComparer реализован по примеру с MSDN:
http://msdn.microsoft.com/ru-ru/library/ms132151.aspx

class BoxEqualityComparer : IEqualityComparer
{

    public bool Equals(Box b1, Box b2)
    {
        if (b1.Height == b2.Height & b1.Length == b2.Length
                            & b1.Width == b2.Width)
        {
            return true;
        }
        else
        {
            return false;
        }
    }


    public int GetHashCode(Box bx)
    {
        int hCode = bx.Height ^ bx.Length ^ bx.Width;
        return hCode.GetHashCode();
    }

}

Continue Reading →

WPF сохранение настроек в App.config

Два примера (почти как один), которые у меня почему-то не захотели работать (настройки по-прежнему сохраняются только в памяти). Буду разбираться.

Configuration oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
oConfig.AppSettings.Settings["PreferenceToRemember"].Value = “NewValue”;
oConfig.Save(ConfigurationSaveMode.Full);
ConfigurationManager.RefreshSection(”appSettings”);

http://stackoverflow.com/questions/305529/how-to-update-appsettings-in-a-wpf-app

exePath = Path.Combine( exePath, "MyApp.exe" );
    Configuration config = ConfigurationManager.OpenExeConfiguration( exePath );
    var setting = config.AppSettings.Settings[SettingKey];
    if (setting != null)
    {
        setting.Value = newValue;
    }
    else
    {
        config.AppSettings.Settings.Add( SettingKey, newValue);
    }

    config.Save();

http://stackoverflow.com/questions/3638754/how-can-i-read-write-app-config-settings-at-runtime-without-using-user-settings

Атрибуты файлов

using System;
using System.IO;
using System.Text;

class Test 
{
    public static void Main() 
    {
        string path = @"c:\temp\MyTest.txt";

        // Create the file if it does not exist.
        if (!File.Exists(path)) 
        {
            File.Create(path);
        }

        if ((File.GetAttributes(path) & FileAttributes.Hidden) == FileAttributes.Hidden) 
        {
            // Show the file.
            File.SetAttributes(path, FileAttributes.Archive);
            Console.WriteLine("The {0} file is no longer hidden.", path);

        } 
        else 
        {
            // Hide the file.
            File.SetAttributes(path, File.GetAttributes(path) | FileAttributes.Hidden);
            Console.WriteLine("The {0} file is now hidden.", path);
        }
    }
}