вторник, 8 октября 2013 г.

Получить всю информацию о файле

Привет всем. Сегодня в форумах читал вопрос о том, как получить размер файла с помошью C# программы. В этой статье буду показать как получить размер файла и не только (время создания файла, последное изменение файла и т.д).
Создаем новый проект Windows Forms Application и в форме добавим новый button. Назавем его "Choose File", создаем для него собитию по клике.


        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog f = new OpenFileDialog();
            if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                GetFileInformation(f.FileName);
            }
        }

В методе создается диалоговое окно для выбора файла. Об этом мы говорили в "C# Программное копирование файла" статье.
Добавым 7 label в форме, чтобы отображать разные свойства файла, и пишем следующый метод.

        private void GetFileInformation(string fileName)
        {
            FileInfo f = new FileInfo(fileName);

            label1.Text = "Creation Time - " + f.CreationTime.ToString();
            label2.Text = "Directory Name - " + f.DirectoryName;
            label3.Text = "File Extension - " + f.Extension;
            label4.Text = "Full Name - " + f.FullName;
            label5.Text = "Last Access Time - " + f.LastAccessTime.ToString();
            label6.Text = "Last Write Time - " + f.LastWriteTime.ToString();
            label7.Text = "File Size - " + (f.Length / 1024).ToString() + "KB";
        }

Для получение информации файла используется класс FileInfo. Там есть разные методы но я выбрал более употребленные.

А вот результат

И конечно же польный код
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace File_Information
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog f = new OpenFileDialog();
            if (f.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                GetFileInformation(f.FileName);
            }
        }

        private void GetFileInformation(string fileName)
        {
            FileInfo f = new FileInfo(fileName);

            label1.Text = "Creation Time - " + f.CreationTime.ToString();
            label2.Text = "Directory Name - " + f.DirectoryName;
            label3.Text = "File Extension - " + f.Extension;
            label4.Text = "Full Name - " + f.FullName;
            label5.Text = "Last Access Time - " + f.LastAccessTime.ToString();
            label6.Text = "Last Write Time - " + f.LastWriteTime.ToString();
            label7.Text = "File Size - " + (f.Length / 1024).ToString() + "KB";
        }
    }
}

пятница, 27 сентября 2013 г.

Изображение в качестве кнопки

Все знают cc как добавить кнопки в C# форму, особенно в Visual Studio это очень легко. Но как добавить в форму кнопка изображения. Сегодня будем создать именно такую приложению.
Создаем новый Windows.Forms приложения. Добавим там две PictureBox и даем их размер 40x40.


Откроем свойство приложении и в Resources добавим картинки, которые находятся где то в компьютере.

Картинки программным образом можно получать из Resources таким образом
        Image Check = Resources.check;
        Image Cross = Resources.cross;

Если теперь в конструкторе добавить эти строки
            pictureBox1.Image = Check;
            pictureBox2.Image = Cross;
то при запуске приложении, изображении будут появляться на форму


Когда курсор мыши находится на изображении, мы хотим чтобы вид курсора изменился на рука. Для этого в свойстах двух PictureBox для Cursor выбираем Hand.

Теперь создаем событии для клика, где например должен выводится какое то сообщения
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Check Button is Clicked!");
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Cross Button is Clicked!");
        }

Давайте теперь сделаем немного анимацию. Мы например хотим, чтобы когда курсор мыши находится на PictureBox размер изображении изменился. Для этого для каждого изображении создаем события MouseHover и MouseLeave. То что будет с MouseLeave думаю всем понятно, изображения будет принимать свой прежний размер.
        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.Image = Check;
        }

        private void pictureBox2_MouseLeave(object sender, EventArgs e)
        {
            pictureBox2.Image = Cross;
        }

А вот с MouseHover мы должны изменить размер изображении допустим на 20%. Вот две события для изменения размеров изображений
        private void pictureBox1_MouseHover(object sender, EventArgs e)
        {
            int Check_Width = Check.Width + ((Check.Width * 20) / 100);
            int Check_Height = Check.Height + ((Check.Height * 20) / 100);

            Bitmap Check_1 = new Bitmap(Check_Width, Check_Height);
            Graphics g = Graphics.FromImage(Check_1);
            g.DrawImage(Check, new Rectangle(Point.Empty, Check_1.Size));
            pictureBox1.Image = Check_1;
        }

        private void pictureBox2_MouseHover(object sender, EventArgs e)
        {
            int Cross_Width = Cross.Width + ((Cross.Width * 20) / 100);
            int Cross_Height = Cross.Height + ((Cross.Height * 20) / 100);

            Bitmap Cross_1 = new Bitmap(Cross_Width, Cross_Height);
            Graphics g = Graphics.FromImage(Cross_1);
            g.DrawImage(Cross, new Rectangle(Point.Empty, Cross_1.Size));
            pictureBox2.Image = Cross_1;
        }

Вот польный код программы
using Image_as_Button.Properties;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Image_as_Button
{
    public partial class Form1 : Form
    {
        Image Check = Resources.check;
        Image Cross = Resources.cross;

        public Form1()
        {
            InitializeComponent();
            pictureBox1.Image = Check;
            pictureBox2.Image = Cross;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Check Button is Clicked!");
        }

        private void pictureBox2_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Cross Button is Clicked!");
        }

        private void pictureBox1_MouseHover(object sender, EventArgs e)
        {
            int Check_Width = Check.Width + ((Check.Width * 20) / 100);
            int Check_Height = Check.Height + ((Check.Height * 20) / 100);

            Bitmap Check_1 = new Bitmap(Check_Width, Check_Height);
            Graphics g = Graphics.FromImage(Check_1);
            g.DrawImage(Check, new Rectangle(Point.Empty, Check_1.Size));
            pictureBox1.Image = Check_1;
        }

        private void pictureBox2_MouseHover(object sender, EventArgs e)
        {
            int Cross_Width = Cross.Width + ((Cross.Width * 20) / 100);
            int Cross_Height = Cross.Height + ((Cross.Height * 20) / 100);

            Bitmap Cross_1 = new Bitmap(Cross_Width, Cross_Height);
            Graphics g = Graphics.FromImage(Cross_1);
            g.DrawImage(Cross, new Rectangle(Point.Empty, Cross_1.Size));
            pictureBox2.Image = Cross_1;
        }

        private void pictureBox1_MouseLeave(object sender, EventArgs e)
        {
            pictureBox1.Image = Check;
        }

        private void pictureBox2_MouseLeave(object sender, EventArgs e)
        {
            pictureBox2.Image = Cross;
        }
    }
}


среда, 25 сентября 2013 г.

C# Программное копирование файла

В C# копирование файла программным образом очень легко. Для этого есть метод File.Copy из пространство имен System.IO, который в качестве аргументов принимает путь исходного файла и место где файл должен быть копирован.
Давайте создаем маленькое приложение в котором будет возможность выбрать файл и место где оно будет копироваться и по клику "Copy" файл будет копирован в папку.

вторник, 18 июня 2013 г.

Создание инструмента для рисование с помощью C#

Думаю всем известен стандартная программа Windows - Paint, который дает возможность сделать разные действие над картинками. Также с помощью этой программы можно рисовать картинки выбрав карандаш с некоторой толщиной и цвета. Тут, и в несколько других статьях будем создать маленький инструмент с помощью C#-а, который будет иметь функционал, схожий Paint. 

1. Создаем новый проект File -> New Project
2. Выберем Visual C# - Windows Forms Application, назовем проект Paint (или так как хотите) и нажимаем OK.

четверг, 13 июня 2013 г.

Простая "Hello World" программа в C#

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

Для написание простой C# программы мы не будем использовать Microsoft Visual Studio, вместе него возьмем простой текстовой редактор например Notepad (Notepad++ еще лучше) и напишем программу.



class System
{
      static void Main()
      {
             Console.WriteLine("Hello World");
      }
}

Сохраняем файл "Hello World.txt"
Для компиляции программы будем использовать командную строку Visual Studio - Developer Command Promt, который обычно находится в Visual Studio Tools.

Откроем его и переходим в директорию, где находится файл, и напишем следующую команду.
csc /target:exe "Hello World.txt"

Компилятор будет генерировать файл "Hello World.exe", который в консоле будет вывести "Hello World".

Конечно можно использовать Microsoft Visual Studio, но я думаю что командная строка классная вещь особенно для начинающих.