0.00
0 читателей, 6 топиков

Переопределение закрытия формы

Если при закрытии формы пользователем, вас надо оставить окна открытым или применить команду Hide, то кнопку закрытия можно легко переопределить.

К примеру давайте скроем форму, а не закроем:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            e.Cancel = true;
            this.Hide();
        }

Работа с разными потоками

Пример с таймером.

Создаем таймер:

TimerCallback timeCB = new TimerCallback(Timers);
Timer time = new Timer(timeCB, null, 0, 100); 

Метода таймера:

 private void Timers(object state)
        {
          for(int i = 10; i>=0; i--){
                Dispatcher.BeginInvoke(new ThreadStart(delegate { Timer.Text = Convert.ToString(i); }));
                Thread.Sleep(1000);
            }
          Dispatcher.BeginInvoke(new ThreadStart(delegate { Late(); })); 
        }

Демонстрация адаптивного дизайна.

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication4
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
          

        }

        private void cmdClose_Click(object sender, RoutedEventArgs e)
        {
            Application.Current.Shutdown();
        }
        private void chkLongtext_Checked_1(object sender, RoutedEventArgs e)
        {
            cmdPrev.Content = "Переход к следующему окну.";
            cmdNext.Content = "Пререйти к следующему окну - Windows.";
        }

        private void chkLongtext_Unchecked_1(object sender, RoutedEventArgs e)
        {
            cmdPrev.Content = "Назад";
            cmdNext.Content = "Вперед";
        }
    }
    
    
}


XAML

<Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApplication4"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition  Width="Auto"></ColumnDefinition>
            <ColumnDefinition  Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Row="0" Grid.Column="0">
            <Button Name="cmdPrev" Margin="10,10,10,3"></Button>
            <Button Name="cmdNext" Margin="10,3,10,3"></Button>
            <CheckBox Name="chkLongtext" Margin="10,10,10,10" Checked="chkLongtext_Checked_1" Unchecked="chkLongtext_Unchecked_1" Content="Коротки текст"></CheckBox>
            <Button Name="cmdClose" VerticalAlignment="Bottom" Margin="10" Content="Закрыть" Click="cmdClose_Click"></Button>
        </StackPanel>
        <TextBox Grid.Row="0" Grid.Column="1" Margin="10,0,10,0" TextWrapping="Wrap" Grid.RowSpan="2" Background="RosyBrown"> Демонстрация адаптации кнопки.</TextBox>
    </Grid>
</Window>

Content Button

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication4
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            name1.Content = new Test();
            TextBox text = new TextBox();
            text.Width = 100;
            name2.Content = text;

        }
    }
    class Test
    {
        public override string ToString()
        {
            return "Hello";
        }

    }
    
}


XAML

<Grid>
        <StackPanel>
            <Button Name="name1" Height="80"></Button>
            <Button Name="name2" Height="80"></Button>
        </StackPanel>
    </Grid>
  • avatar
  • 0
  • 0

Размещение элементов

1. Добавление кнопки кодом.

   Button button2 = new Button();
   button2.Width = 100;
   button2.Height = 30;
   button2.Content = "Кнопка";
   Grid1.Children.Add(button2);


XAML

Необходимо сделать Id, для нашего Grid.

<Grid x:Name="Grid1">       
</Grid>


2. Добавление картинки


Image img = new Image();
img.Source = new BitmapImage (new Uri (@"C:\Users\Леонид\Documents\visual studio 2013\Projects\WpfApplication1\WpfApplication1\bin\Debug\1.jpg"));
img.Width = 1000;
img.Height = 1000;
Grid1.Children.Add(img);


3. Фоновое изображение

String path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName), @"1.jpg");
this.Background = new ImageBrush(new BitmapImage(new Uri(path)));


4. Добавление картинки в определенное место.

Код C#

Image img = new Image();
            path = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName), @"2.png");
            img.Source = new BitmapImage(new Uri(path));
            ImageViewer1.Source  = new BitmapImage(new Uri(path));


XAML


<Grid Name="Grid1">
<Image Grid.Row="3" Name="ImageViewer1" Height="40" Width="40" />
</Grid>