c# wpf treeView return list of all nodes / Рекурсивный перебор элементов


  1. private void PrintRecursive(TreeNode treeNode)   
  2. {   
  3.    // Print the node.   
  4.    System.Diagnostics.Debug.WriteLine(treeNode.Text);   
  5.    MessageBox.Show(treeNode.Text);   
  6.    // Print each node recursively.   
  7.    foreach (TreeNode tn in treeNode.Nodes)   
  8.    {   
  9.       PrintRecursive(tn);   
  10.    }   
  11. }   
  12.    
  13. // Call the procedure using the TreeView.   
  14. private void CallRecursive(TreeView treeView)   
  15. {   
  16.    // Print each node recursively.   
  17.    TreeNodeCollection nodes = treeView.Nodes;   
  18.    foreach (TreeNode n in nodes)   
  19.    {   
  20.       PrintRecursive(n);   
  21.    }   
  22. }  

Настройка принтера HP P1102w через WIFI

Вообщем всё очень просто. Сама идея заключается в том что ваш принтер подключается к WiFi роутеру,а все находящиеся в зоне действия этого wifi могут подключится к принтеру,сам принтер стоит в углу включенный в разетку и мигает синей лампочкой.

Итак поэтапно:
1. Подключаем принтер к любому компьютеру,устанваливаем все дрова и программы стандартно с диска, при установке выбираем "Подключение через USB"
2. Потом заходим в пуск,находим в программах папку с нашим принтером,там есть специальная программка для настройки wifi,не помню как точно называется,запускаем её.
3. Там выбираем настроить вручную,не автоматом,принтер ищет доступные wifi роутеры, выбираем нужный, вводим пароль от wifi, жмем ОК
4. Теперь остается с компьютеров которые желаем подключить зайти в "устройства и принтеры" и нажать добавить принтер, там выбрать подключение по беспроводной сети. Данный компьютер должен быть естественно подключен к wifi. Следуем инструкциям и вуаля, всё работает.
5. Пункт 4 повторяем со всеми нужными компьютерами. 

Timer in WPF


  1. private void Window_Loaded(object sender, RoutedEventArgs e)   
  2.    
  3. {   
  4.    
  5.     DispatcherTimer dispatcherTimer = new DispatcherTimer();   
  6.    
  7.     dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);   
  8.    
  9.     dispatcherTimer.Interval = new TimeSpan(0, 0, 1);   
  10.    
  11.     dispatcherTimer.Start();   
  12.    
  13. }   
  14.    
  15.     
  16.    
  17. private void dispatcherTimer_Tick(object sender, EventArgs e)   
  18.    
  19. {   
  20.    
  21.     listBox1.Items.Add(DateTime.Now.Hour.ToString() + ":" +   
  22.    
  23.         DateTime.Now.Second.ToString());   
  24.    
  25.        
  26.    
  27.     CommandManager.InvalidateRequerySuggested();   
  28.    
  29.     listBox1.Items.MoveCurrentToLast();   
  30.    
  31.     listBox1.SelectedItem = listBox1.Items.CurrentItem;   
  32.    
  33.     listBox1.ScrollIntoView(listBox1.Items.CurrentItem);   
  34.    
  35. }  



Multi-coloured code for a blog http://aivolkov.ru/online-syntax-highlighter/

c# WPF Аналог Delphi Application.ProcessMessages и WinForms Application.DoEvents


  1. private void DoEvents()   
  2. {   
  3.     Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { }));   
  4. }   
  5.   
  6. private void btnDel_Click(object sender, RoutedEventArgs e)   
  7. {   
  8.     popupLoad.IsOpen = true;   
  9.     DoEvents();   
  10.     if (eDelRecord != null)   
  11.         eDelRecord(this, EventArgs.Empty);   
  12.     popupLoad.IsOpen = false;   
  13. }  

masterhost , подключение к mysql через ssh . Прямой доступ к mysql на хостинге

Небольшую инструкцию вы можете найти в faq'е самого мастерхоста , но к сожалению putty не поддерживает открытым соединение,если оно отвалилось - то отвалилось. Выхода два
1. писать самому
2. использовать MyEnTunnel
Несмотря на все заверения техподдержки мастерхоста что ssh тунель не отваливается при активной работе - он благопулочно и без зазрений совести это периодически всё-таки делает.

Итак настраиваем MyEnTunnel

Во вкладке Settings пишем
SSH Server: uXXXXX.ssh.masterhost.ru
Username: uXXXXX
Вводим пароль,ставим чтобы запускалось при старте компьютера,ну это если вдруг разработали десктопное приложение и устанавливаем программу пользователю


Во кладке Tunnels пишем в Local
3306:uXXXXX.mysql.masterhost.ru:3306
Жмём коннект и вуаля - наша программа работает,теперь она подключается на localhost на стандартный порт 3306


Смотрим чтобы замок тал зеленым


p.s. есть кстати хостинги без этой замороки - например 1gb

c# Protecting a connectionstring in a configuration file

  1. private void DataProtectionAPI()   
  2. {   
  3.     try   
  4.     {   
  5.         System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(   
  6.         System.Reflection.Assembly.GetExecutingAssembly().Location);   
  7.   
  8.         ConnectionStringsSection section =   
  9.         config.GetSection("connectionStrings"as ConnectionStringsSection;   
  10.   
  11.         if (!section.SectionInformation.IsProtected)   
  12.         {   
  13.             section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");   
  14.             config.Save();   
  15.         }   
  16.   
  17.     }   
  18.     catch   
  19.     {   
  20.     }   
  21. }  

c# WPF oval button

  1. <ControlTemplate x:Key="myButton" TargetType="Button">   
  2.     <Grid Width="{TemplateBinding ActualWidth}"   
  3.             Height="{TemplateBinding ActualHeight}" Background="#00FFFFFF">   
  4.         <Ellipse Name="Circle" StrokeThickness="1">   
  5.             <Ellipse.Fill>   
  6.                 <LinearGradientBrush EndPoint="2.2,0" StartPoint="0,0">   
  7.                     <LinearGradientBrush.GradientStops>   
  8.                         <GradientStop Offset="0" Color="LightGray" />   
  9.                         <GradientStop Offset="0.3" Color="Gray" />   
  10.                     </LinearGradientBrush.GradientStops>   
  11.                 </LinearGradientBrush>   
  12.             </Ellipse.Fill>   
  13.         </Ellipse>   
  14.         <ContentPresenter x:Name="content" HorizontalAlignment="Center" VerticalAlignment="Center"/>   
  15.     </Grid>   
  16.     <ControlTemplate.Triggers>   
  17.         <Trigger Property="UIElement.IsEnabled" Value="false">   
  18.             <Setter Property="Shape.Fill" TargetName="Circle">   
  19.                 <Setter.Value>   
  20.                     <LinearGradientBrush EndPoint="2.2,0" StartPoint="0,0">   
  21.                         <LinearGradientBrush.GradientStops>   
  22.                             <GradientStop Offset="0" Color="#FFFFFFFF" />   
  23.                             <GradientStop Offset="0.5" Color="#FFEBEEF5" />   
  24.                             <GradientStop Offset="0.5" Color="#FFD8DDEB" />   
  25.                             <GradientStop Offset="1" Color="#FFDFE2F0" />   
  26.                         </LinearGradientBrush.GradientStops>   
  27.                     </LinearGradientBrush>   
  28.                 </Setter.Value>   
  29.             </Setter>   
  30.         </Trigger>   
  31.         <Trigger Property="UIElement.IsMouseOver" Value="true">   
  32.             <Setter Property="Shape.Fill" TargetName="Circle">   
  33.                 <Setter.Value>   
  34.                     <LinearGradientBrush EndPoint="2.2,0" StartPoint="0,0">   
  35.                         <LinearGradientBrush.GradientStops>   
  36.                             <GradientStop Offset="0" Color="#FFFFFFFF" />   
  37.                             <GradientStop Offset="0.1" Color="#FFDFEDF9" />   
  38.                             <GradientStop Offset="0.47" Color="#FF3086E1" />   
  39.                             <GradientStop Offset="0.47" Color="#FF003B91" />   
  40.                             <GradientStop Offset="0.7" Color="#FF1793EF" />   
  41.                             <GradientStop Offset="0.85" Color="#FF5AD4FF" />   
  42.                             <GradientStop Offset="0.95" Color="#FFBDFFFF" />   
  43.                             <GradientStop Offset="1" Color="#FFFFFFFF" />   
  44.                         </LinearGradientBrush.GradientStops>   
  45.                     </LinearGradientBrush>   
  46.                 </Setter.Value>   
  47.             </Setter>   
  48.         </Trigger>   
  49.         <Trigger Property="ButtonBase.IsPressed" Value="True">   
  50.             <Setter Property="Shape.Fill" TargetName="Circle">   
  51.                 <Setter.Value>   
  52.                     <LinearGradientBrush EndPoint="2.2,0" StartPoint="0,0">   
  53.                         <LinearGradientBrush.GradientStops>   
  54.                             <GradientStop Offset="0" Color="#FFC0D2F5" />   
  55.                             <GradientStop Offset="0.47" Color="#FF5E7A9C" />   
  56.                             <GradientStop Offset="0.47" Color="#FF00062D" />   
  57.                             <GradientStop Offset="0.7" Color="#FF005F9F" />   
  58.                             <GradientStop Offset="0.85" Color="#FF1FA4E2" />   
  59.                             <GradientStop Offset="0.95" Color="#FF61DAFF" />   
  60.                             <GradientStop Offset="1" Color="#FF48CFFF" />   
  61.                         </LinearGradientBrush.GradientStops>   
  62.                     </LinearGradientBrush>   
  63.                 </Setter.Value>   
  64.             </Setter>   
  65.         </Trigger>   
  66.     </ControlTemplate.Triggers>   
  67. </ControlTemplate>   

Result:


No action


IsMouseOver


IsPressed