PS-Commands/WinForms/WinForms-Test-Stend.ps1
2023-04-11 14:03:30 +03:00

885 lines
No EOL
74 KiB
PowerShell
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#region file function
function OpenFile {
$Status.Text = "Выберите файл"
$OpenFileDialog = New-Object System.Windows.Forms.OpenFileDialog
$OpenFileDialog.Filter = "All Files (*.*)|*.*"
$OpenFileDialog.InitialDirectory = ".\"
$OpenFileDialog.Title = "Выберите файл"
$OpenFileDialog.ShowDialog() # открыть файл
$path_save = $OpenFileDialog.FileNames # забрать путь к файлу
$Status.Text = "Выбран файл: $path_save"
}
function SaveFile {
$Status.Text = "Сохранение файла"
$SaveFileDialog = New-Object System.Windows.Forms.SaveFileDialog
$SaveFileDialog.Filter = "All Files (*.txt)|*.txt"
$SaveFileDialog.FileName = "test" # предустановленное имя файла
$SaveFileDialog.InitialDirectory = "$env:USERPROFILE\desktop\"
$SaveFileDialog.Title = "Выберите файл"
$SaveFileDialog.ShowDialog()
$path_out = $SaveFileDialog.FileNames # забрать путь к файлу
$Status.Text = "Файл сохранен: $path_out"
}
#endregion
#region favicon.cc
Add-Type -assembly System.Drawing # добавить сборку для подключения иконок
$bmp = New-Object System.Drawing.Bitmap(16,16)
$g = [System.Drawing.Graphics]::FromImage($bmp)
$g.drawline([System.Drawing.Pens]::Black,0,0,15,0)
$g.drawline([System.Drawing.Pens]::Black,15,0,15,4)
$g.drawline([System.Drawing.Pens]::Black,15,4,10,4)
$g.drawline([System.Drawing.Pens]::Black,10,4,10,15)
$g.drawline([System.Drawing.Pens]::Black,10,15,6,15)
$g.drawline([System.Drawing.Pens]::Black,6,15,6,4)
$g.drawline([System.Drawing.Pens]::Black,6,4,0,4)
$g.drawline([System.Drawing.Pens]::Black,0,4,0,0)
$g.drawline([System.Drawing.Pens]::Blue,1,1,14,1)
$g.drawline([System.Drawing.Pens]::Blue,1,2,14,2)
$g.drawline([System.Drawing.Pens]::Blue,1,3,14,3)
$g.drawline([System.Drawing.Pens]::Blue,7,4,7,14)
$g.drawline([System.Drawing.Pens]::Blue,8,4,8,14)
$g.drawline([System.Drawing.Pens]::Blue,9,4,9,14)
$ico = [System.Drawing.Icon]::FromHandle($bmp.GetHicon())
#endregion
#region main_form
Add-Type -assembly System.Windows.Forms # подключить сборку формы .NET
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text ="WinForms Test Stend"
$main_form.Width = 1120 # ширина
$main_form.Height = 710 # высота
$main_form.AutoSize = $false
$main_form.StartPosition = "CenterScreen" # стартовая позиция расположения формы при открытии
#$main_form.ShowIcon = $False # скрыть иконку
#$main_form.Icon = [System.Drawing.Icon]::ExtractAssociatedIcon('C:\Users\lifailon\desktop\favicon.cc.ico')
$main_form.Icon = $ico # назначить favicon для формы
$main_form.FormBorderStyle = "FixedSingle" # запретить растягивать
$Label = New-Object System.Windows.Forms.Label
$Label.Text = "Label"
$Label.Location = New-Object System.Drawing.Point(10,30)
$Label.AutoSize = $true
$main_form.Controls.Add($Label)
$CheckBox = New-Object System.Windows.Forms.CheckBox
$CheckBox.Text = "CheckBox"
$CheckBox.AutoSize = $true
$CheckBox.Checked = $true
$CheckBox.Location = New-Object System.Drawing.Point(10,50)
$main_form.Controls.Add($CheckBox)
$button = New-Object System.Windows.Forms.Button
$button.Text = "КНОПКА"
$button.Location = New-Object System.Drawing.Point(160,35)
$button.FlatAppearance.BorderSize = 0
$button.FlatStyle = "Flat"
#$button.BackColor = "Tansparent"
#Checked Back Color = "Transparent"
#Mouse Down Back Color = "Transparent"
#Mouse Over Back Color = "Transparent"
$main_form.Controls.Add($button)
$RadioButton = New-Object System.Windows.Forms.RadioButton
$RadioButton.Location = New-Object System.Drawing.Point(160,65)
$RadioButton.Text = "RadioButton-1"
$RadioButton.AutoSize = $true
$main_form.Controls.Add($RadioButton)
$RadioButton_2 = New-Object System.Windows.Forms.RadioButton
$RadioButton_2.Location = New-Object System.Drawing.Point(260,65)
$RadioButton_2.Text = "RadioButton-2"
$RadioButton_2.AutoSize = $true
$RadioButton_2.Checked = $true
$main_form.Controls.Add($RadioButton_2)
$ComboBox = New-Object System.Windows.Forms.ComboBox
$ComboBox.DataSource = @("ComboBox1","ComboBox2","ComboBox3")
$ComboBox.Location = New-Object System.Drawing.Point(10,70)
$main_form.Controls.Add($ComboBox)
$CheckedListBox = New-Object System.Windows.Forms.CheckedListBox
$CheckedListBox.Items.ADD("CheckedListBox")
$CheckedListBox.Items.ADD("Items 2")
$CheckedListBox.Items.ADD("3")
$CheckedListBox.Location = New-Object System.Drawing.Point(10,100)
$main_form.Controls.Add($CheckedListBox)
$GroupBox = New-Object System.Windows.Forms.GroupBox
$GroupBox.Text = "GroupBox"
$GroupBox.AutoSize = $true
$GroupBox.Location = New-Object System.Drawing.Point(160,95)
$button2 = New-Object System.Windows.Forms.Button
$button2.Text = "Кнопка 2"
$button2.Location = New-Object System.Drawing.Point(0,30)
$GroupBox.Controls.Add($button2) # добавить на GroupBox
$CheckBox2 = New-Object System.Windows.Forms.CheckBox
$CheckBox2.Text = "CheckBox2"
$CheckBox2.AutoSize = $true
$CheckBox2.Checked = $true
$CheckBox2.Location = New-Object System.Drawing.Point(10,60)
$GroupBox.Controls.Add($CheckBox2)
$main_form.Controls.Add($GroupBox) # добавить GroupBox на форму
$ListBox = New-Object System.Windows.Forms.ListBox
$ListBox.Location = New-Object System.Drawing.Point(10,210)
$ListBox.Items.Add('ListBox');
$ListBox.Items.Add('2');
$ListBox.Items.Add('3');
$main_form.Controls.add($ListBox)
$TabControl = New-Object System.Windows.Forms.TabControl
$TabControl.Location = New-Object System.Drawing.Point(160,210)
$TabPage1 = New-Object System.Windows.Forms.TabPage
$TabPage1.Text = 'TabPage1'
$TabControl.Controls.Add($TabPage1)
# Добавить Label на TabPage1
$TabLabel = New-Object System.Windows.Forms.Label
$TabLabel.Text = "TabControl"
$TabLabel.Location = New-Object System.Drawing.Point(60,30)
$TabLabel.AutoSize = $true
$TabPage1.Controls.Add($TabLabel)
$TabPage2 = New-Object System.Windows.Forms.TabPage
$TabPage2.Text = 'TabPage2'
$TabControl.Controls.Add($TabPage2)
$main_form.Controls.add($TabControl)
$ListView = New-Object System.Windows.Forms.ListView
$ListViewItem1 = New-Object System.Windows.Forms.ListViewItem("--=1=--")
$ListViewItem2 = New-Object System.Windows.Forms.ListViewItem("--=2=--")
$ListViewItem3 = New-Object System.Windows.Forms.ListViewItem("--=3=--")
$ListViewItem4 = New-Object System.Windows.Forms.ListViewItem("--=4=--")
$ListView.Items.Add($ListViewItem1)
$ListView.Items.Add($ListViewItem2)
$ListView.Items.Add($ListViewItem3)
$ListView.Items.Add($ListViewItem4)
$ListView.Location = New-Object System.Drawing.Point(10,320)
$main_form.Controls.add($ListView)
$TreeView = New-Object System.Windows.Forms.TreeView
$TreeViewNode=$TreeView.Nodes.Add("1")
$TreeViewNode.Nodes.Add("2")
$TreeView.Nodes.Add("3")
$TreeView.Location = New-Object System.Drawing.Point(160,320)
$main_form.Controls.add($TreeView)
$DateTimePicker = New-Object System.Windows.Forms.DateTimePicker
$DateTimePicker.Location = New-Object System.Drawing.Point(10,430)
$main_form.Controls.add($DateTimePicker)
$TrackBar = New-Object System.Windows.Forms.TrackBar
$TrackBar.Location = New-Object System.Drawing.Point(230,430)
$TrackBar.Autosize = $true
$TrackBar.Value=5
$main_form.Controls.add($TrackBar)
$ProgressBar = New-Object System.Windows.Forms.ProgressBar
$ProgressBar.Location = New-Object System.Drawing.Point(10,460)
$ProgressBar.Size = New-Object System.Drawing.Size(200,24)
$ProgressBar.Value = 0
$main_form.Controls.add($ProgressBar)
# Скролл по горизонтали
$HScrollBar = New-Object System.Windows.Forms.HScrollBar
$HScrollBar.Size = New-Object System.Drawing.Size(170,30)
$HScrollBar.Location = New-Object System.Drawing.Point(10,490)
$main_form.Controls.add($HScrollBar)
# Скролл по вертикали
$VScrollBar = New-Object System.Windows.Forms.VScrollBar
$VScrollBar.Size = New-Object System.Drawing.Size(16,176)
$VScrollBar.Location = New-Object System.Drawing.Point(380,25)
$main_form.Controls.add($VScrollBar)
# ПКМ (Right Click Mouse)
$ContextMenu = New-Object System.Windows.Forms.ContextMenu
$ContextMenu.MenuItems.Add(
"Copy",{
$dgv_selected = @($DataGridView.SelectedCells.Value) # создать массив
Set-Clipboard $dgv_selected # скопировать в буфер содержимое массива
})
$main_form.ContextMenu = $ContextMenu
#endregion
#region binary data
$Formatter_binaryFomatter = New-Object System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
$System_IO_MemoryStream = New-Object System.IO.MemoryStream (,[byte[]][System.Convert]::FromBase64String('
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
4P8B2nibrmILiXkAAAAASUVORK5CYIIL'))
#endregion
#region menu
# Создать меню
$Menu = New-Object System.Windows.Forms.MenuStrip
$Menu.BackColor = "white"
$main_form.MainMenuStrip = $Menu
$main_form.Controls.Add($Menu)
# Добавить вкладку
$menuItem_file = New-Object System.Windows.Forms.ToolStripMenuItem
$menuItem_file.Text = "File"
$menuItem_file.Image = $Formatter_binaryFomatter.Deserialize($System_IO_MemoryStream)
$Menu.Items.Add($menuItem_file)
# Добавить кнопки
$menuItem_file_open = New-Object System.Windows.Forms.ToolStripMenuItem
$menuItem_file_open.Text = "Открыть"
$menuItem_file_open.Add_Click({OpenFile})
$menuItem_file.DropDownItems.Add($menuItem_file_open)
$menuItem_file_save = New-Object System.Windows.Forms.ToolStripMenuItem
$menuItem_file_save.Text = "Сохранить"
$menuItem_file_save.Add_Click({SaveFile})
$menuItem_file.DropDownItems.Add($menuItem_file_save)
$menuItem_file_font = New-Object System.Windows.Forms.ToolStripMenuItem
$menuItem_file_font.Text = "Шрифт"
$menuItem_file_font.Add_Click({
$FontDialog = New-Object System.Windows.Forms.FontDialog
$FontDialog.ShowDialog()
$font = $fontDialog.Font.Name
$Status.Text = "Выбран шрифт: $font"
})
$menuItem_file.DropDownItems.Add($menuItem_file_font)
$menuItem_file_exit = New-Object System.Windows.Forms.ToolStripMenuItem
$menuItem_file_exit.Text = "Выход"
$menuItem_file_exit.Add_Click({$main_form.Close()})
$menuItem_file.DropDownItems.Add($menuItem_file_exit)
#endregion
#region Associated Icon
$iconNP = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command notepad).Path) # создать иконку ассоциации
# Добавить вкладку
$menuItem_file = New-Object System.Windows.Forms.ToolStripMenuItem
$menuItem_file.Text = "Help"
$menuItem_file.Image = $iconNP
$Menu.Items.Add($menuItem_file)
#endregion
#region C# Dll Import
$dll_import = @"
using System;
using System.Drawing;
using System.Runtime.InteropServices;
namespace System
{
public class IconExtractor
{
public static Icon Extract(string file, int number, bool largeIcon)
{
IntPtr large;
IntPtr small;
ExtractIconEx(file, number, out large, out small, 1);
try
{
return Icon.FromHandle(largeIcon ? large : small);
}
catch
{
return null;
}
}
[DllImport("Shell32.dll", EntryPoint = "ExtractIconExW", CharSet = CharSet.Unicode, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]
private static extern int ExtractIconEx(string sFile, int iIndex, out IntPtr piLargeVersion, out IntPtr piSmallVersion, int amountIcons);
}
}
"@
Add-Type -TypeDefinition $dll_import -ReferencedAssemblies System.Drawing
#endregion
#region menu-2
$mainToolStrip = New-Object System.Windows.Forms.ToolStrip
$mainToolStrip.Location = New-Object System.Drawing.Point(615,25)
$mainToolStrip.ImageScalingSize = New-Object System.Drawing.Size(26,32) # размер изображения
$mainToolStrip.Size = New-Object System.Drawing.Size(300,32) # размер формы (для изображения меняется высота)
$mainToolStrip.AutoSize = $false
$mainToolStrip.Anchor = "Bottom" # None, Top, Bottom, Left, Right
$main_form.Controls.Add($mainToolStrip)
$toolStripOpen = New-Object System.Windows.Forms.ToolStripButton
$toolStripOpen.ToolTipText = "Open"
$toolStripOpen.Image = [System.IconExtractor]::Extract("shell32.dll", 22, $true) # 4-е изображение из 48
$toolStripOpen.Add_Click({OpenFile})
$mainToolStrip.Items.Add($toolStripOpen)
$toolStripTextBox = New-Object System.Windows.Forms.ToolStripTextBox # ToolStripComboBox
$toolStripTextBox.Size = New-Object System.Drawing.Size(80)
$mainToolStrip.Items.Add($toolStripTextBox)
#endregion
#region status
$StatusStrip = New-Object System.Windows.Forms.StatusStrip
$Status = New-Object System.Windows.Forms.ToolStripStatusLabel
$main_form.Controls.Add($statusStrip)
$StatusStrip.Items.Add($Status)
$Status.Text = "Статус"
#endregion
#region new
# UpDown
$NumericUpDown = New-Object System.Windows.Forms.NumericUpDown
$NumericUpDown.Location = New-Object System.Drawing.Point(420,30)
$NumericUpDown.text = 1
$main_form.Controls.add($NumericUpDown)
$DomainUpDown = New-Object System.Windows.Forms.DomainUpDown
$DomainUpDown.Location = New-Object System.Drawing.Point(420,55)
$DomainUpDown.Items.add("text")
$main_form.Controls.add($DomainUpDown)
$Calendar = New-Object System.Windows.Forms.MonthCalendar
$Calendar.Location = New-Object System.Drawing.Point(420,80)
$main_form.Controls.add($Calendar)
$button.add_Click({
if ($RadioButton.Checked -eq $true) {$Status.Text = "Выбран RadioButton-1"}
if ($RadioButton.Checked -eq $true) {$ProgressBar.Value = 10}
if ($RadioButton_2.Checked -eq $true) {$Status.Text = "Выбран RadioButton-2"}
if ($RadioButton_2.Checked -eq $true) {$ProgressBar.Value = 30}
})
$button2.add_Click({
$Status.Text = "Нажата кнопка 2"
$ProgressBar.Value = 100
})
# Картинка на форме
$PictureBox = New-Object System.Windows.Forms.PictureBox
#$PictureBox.Load('D:\favico.jpg')
$PictureBox.Image = $iconNP.ToBitmap()
$PictureBox.Location = "550, 480"
$PictureBox.Size = "32, 32"
$PictureBox.SizeMode = "StretchImage"
$main_form.Controls.Add($PictureBox)
$iconFolder = [Drawing.Icon]::ExtractAssociatedIcon((Get-Command explorer).Path)
$panel = New-Object System.Windows.Forms.Panel # создать панель, используется для группировки
$panel.Location = New-Object System.Drawing.Point(420,260) # удобно перемещать панель со всеми элементами внутри
$panel.BackgroundImage = $iconFolder # фоновое изображение на форме панели
$panel.BackgroundImageLayout = "zoom" # подогнать под размер формы с сохранение пропорций (none, stretch - растянуть)
$main_form.Controls.Add($panel)
# Динамическое добавление элемента
$button3 = New-Object System.Windows.Forms.Button
$button3.ForeColor = "Green"
$button3.Text = "Add +"
$button3.Location = New-Object System.Drawing.Point(5,5) # расположение на панели
$panel.Controls.Add($button3) # добавить на панель
$button3.add_Click({
$global:button_temp = New-Object System.Windows.Forms.Button # добавить в виде глобальной переменной
$button_temp.Text = "Temp"
$button_temp.Location = New-Object System.Drawing.Point(5,65)
$panel.Controls.Add($button_temp)
})
$button4 = New-Object System.Windows.Forms.Button
$button4.ForeColor = "Red"
$button4.Text = "Remove -"
$button4.Location = New-Object System.Drawing.Point(5,35)
$panel.Controls.Add($button4)
$button4.add_Click({
$panel.Controls.Remove($button_temp) # удаление кнопки
})
$LinkLabel = New-Object System.Windows.Forms.LinkLabel # создать текст ссылки
$LinkLabel.Text = "Ссылка"
$LinkLabel.LinkColor = "green"
$LinkLabel.ActiveLinkColor = "red"
$LinkLabel.LinkBehavior = "HoverUnderline" # подчеркивается при наведении
$LinkLabel.Location = New-Object System.Drawing.Point(420,370)
$LinkLabel.add_LinkClicked({ # событие нажатия
Start-Process ("https://metanit.com/sharp/windowsforms/4.2.php")
})
$main_form.Controls.Add($LinkLabel)
$auto_text = @("Text","TextBox")
# Пароль
$TextBox = New-Object System.Windows.Forms.TextBox
$TextBox.Multiline = $true # перенос по строкам, нужно применять для раскрытия пароля
$TextBox.WordWrap = $true
$TextBox.PasswordChar = "*"
$TextBox.Location = New-Object System.Drawing.Point(420,400)
$main_form.Controls.Add($TextBox)
$ErrorProvider = New-Object System.Windows.Forms.ErrorProvider # добавить статус ошибки
$button5 = New-Object System.Windows.Forms.Button
$button5.Text = "Раскрыть"
$button5.Location = New-Object System.Drawing.Point(420,430)
$main_form.Controls.Add($button5)
$button5.add_Click({
$TextBox.UseSystemPasswordChar = $true
$ErrorProvider.SetError($button5, "Пароль раскрыт") # ошибка
})
# Текст с масками
$TextBox2 = New-Object System.Windows.Forms.MaskedTextBox
$TextBox2.Mask = "8("+"000"+")"+"-"+"000"+"-"+"0000"
# 9 - позволяет вводить цифры и пробелы
# # - позволяет вводить цифры, пробелы и знаки '+' и '-'
# L - позволяет вводить только буквенные символы
# A - позволяет вводить буквенные и цифровые символы
$TextBox2.Location = New-Object System.Drawing.Point(420,460)
$main_form.Controls.Add($TextBox2)
$CheckBox3 = New-Object System.Windows.Forms.CheckBox
$CheckBox3.Text = "CheckBox3"
$CheckBox3.AutoSize = $true
$CheckBox3.Checked = $true
$CheckBox3.CheckState = "Indeterminate" # флажок не определен - отмечен, но находится в неактивном состоянии
$CheckBox3.AutoCheck = $false # невозможно снять или активировать галочку (можно отключать когда функции будут недоступны)
# при изменении состояния флажка он генерирует событие CheckedChanged
$CheckBox3.Location = New-Object System.Drawing.Point(420,490)
$main_form.Controls.Add($CheckBox3)
# Разделитель (горизонтальная линия)
$outputBox1 = New-Object System.Windows.Forms.TextBox
$outputBox1.Location = New-Object System.Drawing.Point(0,530)
$outputBox1.Size = New-Object System.Drawing.Size(600,1)
$outputBox1.BackColor = "Black"
$outputBox1.MultiLine = $True
$main_form.Controls.Add($outputBox1)
#endregion
#region password
Add-Type -AssemblyName System.Web
$button_gen = New-Object System.Windows.Forms.Button
$button_gen.Text = "Сгенерировать пароль"
$button_gen.BackColor = "orange"
$button_gen.Location = New-Object System.Drawing.Point(20,540)
$button_gen.Size = New-Object System.Drawing.Size(150,40)
$main_form.Controls.Add($button_gen)
$button_gen.add_Click({
$pass = [System.Web.Security.Membership]::GeneratePassword(10,2)
$outputBox2.Text = $pass
})
$outputBox2 = New-Object System.Windows.Forms.TextBox
$outputBox2.Location = New-Object System.Drawing.Point(21,585)
$outputBox2.Size = New-Object System.Drawing.Size(150,30)
$outputBox2.Font = "Arial,14"
$outputBox2.MultiLine = $True
$main_form.Controls.Add($outputBox2)
#endregion
#region translit
function translit {
param([string]$inString) # параметр принимает только текст
$Translit = @{ # создать массив
[char]'а' = "a"
[char]'А' = "A"
[char]'б' = "b"
[char]'Б' = "B"
[char]'в' = "v"
[char]'В' = "V"
[char]'г' = "g"
[char]'Г' = "G"
[char]'д' = "d"
[char]'Д' = "D"
[char]'е' = "e"
[char]'Е' = "E"
[char]'ё' = "yo"
[char]'Ё' = "Yo"
[char]'ж' = "zh"
[char]'Ж' = "Zh"
[char]'з' = "z"
[char]'З' = "Z"
[char]'и' = "i"
[char]'И' = "I"
[char]'й' = "j"
[char]'Й' = "J"
[char]'к' = "k"
[char]'К' = "K"
[char]'л' = "l"
[char]'Л' = "L"
[char]'м' = "m"
[char]'М' = "M"
[char]'н' = "n"
[char]'Н' = "N"
[char]'о' = "o"
[char]'О' = "O"
[char]'п' = "p"
[char]'П' = "P"
[char]'р' = "r"
[char]'Р' = "R"
[char]'с' = "s"
[char]'С' = "S"
[char]'т' = "t"
[char]'Т' = "T"
[char]'у' = "u"
[char]'У' = "U"
[char]'ф' = "f"
[char]'Ф' = "F"
[char]'х' = "h"
[char]'Х' = "H"
[char]'ц' = "c"
[char]'Ц' = "C"
[char]'ч' = "ch"
[char]'Ч' = "Ch"
[char]'ш' = "sh"
[char]'Ш' = "Sh"
[char]'щ' = "sch"
[char]'Щ' = "Sch"
[char]'ъ' = ""
[char]'Ъ' = ""
[char]'ы' = "y"
[char]'Ы' = "Y"
[char]'ь' = ""
[char]'Ь' = ""
[char]'э' = "e"
[char]'Э' = "E"
[char]'ю' = "yu"
[char]'Ю' = "Yu"
[char]'я' = "ya"
[char]'Я' = "Ya"
}
$outCHR = "" # создать пустую переменную типа String (строка), не массив!
foreach ($CHR in $inCHR = $inString.ToCharArray()) # передать в цикл переменную и разбить на массив из букв
{
if ($Translit[$CHR] -cne $Null ) # если буква с учетом ригистра присутствует в массиве $Translit
{$outCHR += $Translit[$CHR]} # заменить на переменную из массива $Translit и добавить букву в переменную вывода
else
{$outCHR += $CHR} # если буква отсутствует в массиве $Translit, добавить минуя массив преобразования
}
$global:translit_out = $outCHR
}
$outputBox3 = New-Object System.Windows.Forms.TextBox
$outputBox3.Location = New-Object System.Drawing.Point(280,545)
$outputBox3.Size = New-Object System.Drawing.Size(220,30)
$outputBox3.Font = "Arial,14"
$outputBox3.MultiLine = $True
$main_form.Controls.Add($outputBox3)
$button_trans = New-Object System.Windows.Forms.Button
$button_trans.Text = " Транслит"
$button_trans.Image = $iconNP # наложить иконку
$button_trans.ImageAlign = "MiddleLeft" # расположение изображения слева
$button_trans.Font = "Arial,12"
$button_trans.Location = New-Object System.Drawing.Point(330,580)
$button_trans.Size = New-Object System.Drawing.Size(120,40)
$main_form.Controls.Add($button_trans)
$button_trans.add_Click({
$name = $outputBox3.text # зрабрать имя
translit $name # выполнить функцию с подстановкой параметра имени
$translit_name = $translit_out
$outputBox3.text = $translit_name # перезаписать текст формы ввода на вывод
})
#endregion
#region DGV-ping
$DataGridView = New-Object System.Windows.Forms.DataGridView
$DataGridView.Location = New-Object System.Drawing.Point(620,115)
$DataGridView.Size = New-Object System.Drawing.Size(400,200)
$DataGridView.AutoSizeColumnsMode = "Fill" # ширина столбцов подбирается таким образом, чтобы суммарная ширина всех столбцов в точности заполняла отображаемую область элемента управления, а прокрутка по горизонтали требовалась только для того, чтобы не допускать уменьшения ширины столбцов ниже значений свойства MinimumWidth. Относительная ширина столбцов определяется относительными значениями свойства FillWeight.
# AllCells # Ширина столбцов изменяется так, чтобы вместить содержимое всех ячеек столбцов, включая ячейки заголовков.
# AllCellsExceptHeader # Ширина столбцов изменяется так, чтобы вместить содержимое всех ячеек столбцов, исключая ячейки заголовков.
# ColumnHeader # Ширина столбцов изменяется так, чтобы вместить содержимое ячеек заголовков столбцов.
# DisplayedCells # Ширина столбцов изменяется так, чтобы вместить содержимое всех ячеек столбцов, которые находятся в строках, отображающихся на экране в настоящий момент, включая ячейки заголовков.
# DisplayedCellsExceptHeader # Ширина столбцов изменяется так, чтобы вместить содержимое всех ячеек столбцов, которые находятся в строках, отображающихся на экране в настоящий момент, исключая ячейки заголовков.
$DataGridView.AutoSize = $false
$DataGridView.MultiSelect = $true # разрешить выбор нескольких ячеек
$DataGridView.ReadOnly = $true # запретить редактирование
$DataGridView.TabIndex = 0
$main_form.Controls.Add($DataGridView)
#####
# DataGridView.ForeColor # цвет шрифта ячеек таблицы
# DataGridView.GridColor # цвет линий таблицы
# DataGridView.DefaultCellStyle # цвет и другие настройки вида ячеек таблицы. Настройки стилей строк, столбцов и ячеек переопределяют данное свойство.
# DataGridView.RowsDefaultCellStyle # цвет строк, переопределяет значения DataGridView.DefaultCellStyle.
# DataGridView.AlternatingRowsDefaultCellStyle # цвет нечетных строк таблицы. Переопределяет все стили, кроме DataGridViewRow.DefaultCellStyle и DataGridViewCell.Style
# DataGridViewColumn.DefaultCellStyle # цвет ячеек столбца. Переопределяется всеми стилями, кроме DataGridView.DefaultCellStyle.
# DataGridViewRow.DefaultCellStyle # цвет строки, хранит свои настройки независимо от родительского DataGridView. Переопределяет все стили, кроме DataGridViewCell.Style
# DataGridViewCell.Style # цвет ячейки, переопределяет все стили.
# DataGridView.ColumnHeadersDefaultCellStyle # цвет заголовков столбцов, при DataGridView.EnableHeadersVisualStyles = false.
# DataGridView.RowHeadersDefaultCellStyle # цвет заголовков строк, при DataGridView.EnableHeadersVisualStyles = false.
# AutoSizeMode - подгонка ширины столбца по его содержимому;
# ColumnType # определяет внешний вид ячеек столбца (какой объект для отображения информации находится в ячейках столбца);
# DataPropertyName # имя, отображающего в столбце поля;
# Frozen # фиксация столбца (столбец не передвигается при прокручивании таблицы);
# HeaderText # текст заголовка столбца;
# Width # ширина поля;
# MaxInputLength # максимально вводимая длина текста;
# MinimumWidth # минимальная ширина столбца;
# ReadOnly # блокировка столбца для редактирования данных;
# Resizable # разрешает менять ширину столбца;
# SortMode # сортировка данных в таблице по этому столбцу;
# ToolTipText # всплывающая подсказка для столбца;
# Visible # делает столбец невидимым.
# Сортировка:
# DataGridView.Sort(<Имя столбца>, <Порядок сортировки>) # где DataGridView - это имя объекта, <Имя столбца> - это имя столбца (свойство Name ) по которому происходит сортировка записей в таблице, параметр <Порядок сортировки> определяет порядок сортировки и может принимать два значения:
# System.ComponentModel.ListSortDirection.Ascending # сортировка по возрастанию;
# System.ComponentModel.ListSortDirection.Descending # сортировка по убыванию.
#####
$button_add = New-Object System.Windows.Forms.Button
$button_add.Text = "Ping"
$button_add.Location = New-Object System.Drawing.Point(620,80)
$main_form.Controls.Add($button_add)
$button_add.Add_Click({
$button_add.Enabled = $false
### DataGridViewCheckBoxColumn
$CheckBoxColumn = New-Object System.Windows.Forms.DataGridViewCheckBoxColumn
$CheckBoxColumn.Name = "CheckBox"
$DataGridView.ReadOnly = $false # разрешить редактирование, что бы можно было отмечать CheckBox
###
$DataGridView.DataSource = $null # очистить источник из кнопки 2
$DataGridView.ColumnCount = 2 # создать кол-во столбцов
$DataGridView.Columns[0].Name = "Name" # добавить 1-й столбец и дать ему имя
$DataGridView.Columns[1].Name = "Status" # 2-й
$DataGridView.Columns.Add($CheckBoxColumn) # добавить стобец с CheckBoxColumn
$list_srv = @("google.com","github.com","cloud.delprof.ru","pbx.delprof.ru","vks.delprof.ru")
$ping_out = foreach ($srv in $list_srv) {
$status_ping = ping -n 1 -w 50 $srv
if ($status_ping -match "ttl") {
$DataGridView.Rows.Add("$srv","Available") # заполнить строки (Rows) значениями через запятую в 1-й и 2-й столбец
} else {
$DataGridView.Rows.Add("$srv","Not available")
}
}
### Красим:
$DataGridView.Rows | ForEach-Object {
if ($_.Cells["Status"].Value -eq "Available") { # если в клетке столбца Status значение (Value) = Available
$_.Cells[1] | %{$_.Style.BackColor = "lightgreen"} # то покрасить 2-ю клетку
} elseif ($_.Cells["Status"].Value -eq "Not available") {
$_.Cells[1] | %{$_.Style.BackColor = "pink"}
}}
$button_add.Enabled = $true
})
#endregion
#region DGV-proc
$button_add_2 = New-Object System.Windows.Forms.Button
$button_add_2.Text = "Process"
$button_add_2.Location = New-Object System.Drawing.Point(700,80)
$main_form.Controls.Add($button_add_2)
$button_add_2.Add_Click({
$DataGridView.ColumnCount = $null # удалить стобцы из кнопки 1
$global:services = Get-Service | select name,status # создать массив
$list = New-Object System.collections.ArrayList # объект листа
$list.AddRange($services) # заполнить объект
$DataGridView.DataSource = $list # указать источник для таблицы
})
#endregion
#region Watermark
$watermark = "Server name"
$TextBox_Enter = {
if ($TextBox_W.Text -like $watermark) {
$TextBox_W.Text = ""
$TextBox_W.ForeColor = [System.Drawing.SystemColors]::WindowText
}}
$TextBox_Leave = {
if ($TextBox_W.Text -like "") {
$TextBox_W.Text = $watermark
$TextBox_W.ForeColor = [System.Drawing.Color]::LightGray
}}
$TextBox_W = New-Object System.Windows.Forms.TextBox
$TextBox_W.Location = New-Object System.Drawing.Point(780,80)
$TextBox_W.Size = New-Object System.Drawing.Size(200,30)
$TextBox_W.ForeColor = [System.Drawing.Color]::LightGray
$TextBox_W.add_Enter($TextBox_Enter)
$TextBox_W.add_Leave($TextBox_Leave)
$TextBox_W.Text = $watermark
$main_form.Controls.Add($TextBox_W)
#endregion
#region Search
$TextBox_W.Add_TextChanged({
$search_text = $TextBox_W.Text
$search_services = @($services | Where { # создать массив, т.к. если найдено 1 значение, то его тип данных PSCustomObject вместо Object[] Array - массив
$_.Name -match "$search_text" # для быстрой фильтрации (поиска), используется уже полученный массив
})
$list = New-Object System.collections.ArrayList
$list.AddRange($search_services)
$DataGridView.DataSource = $list
})
#endregion
#region MouseDoubleClick
$ListBox_left = New-Object System.Windows.Forms.ListBox
$ListBox_left.Location = New-Object System.Drawing.Point(620,330)
$ListBox_left.Size = New-Object System.Drawing.Size(190,200)
$main_form.Controls.add($ListBox_left)
$ListBox_right = New-Object System.Windows.Forms.ListBox
$ListBox_right.Location = New-Object System.Drawing.Point(830,330)
$ListBox_right.Size = New-Object System.Drawing.Size(190,200)
$main_form.Controls.add($ListBox_right)
$form_Load = {
$items = 1..10 | %{"Item $_"}
$ListBox_left.Items.AddRange($items)
}
$ListBox_left_MouseDoubleClick = [System.Windows.Forms.MouseEventHandler]{
$ListBox_right.Items.Add($ListBox_left.SelectedItem)
$ListBox_left.Items.Remove($ListBox_left.SelectedItem)
}
$ListBox_right_MouseDoubleClick = [System.Windows.Forms.MouseEventHandler]{
$ListBox_left.Items.Add($ListBox_right.SelectedItem)
$ListBox_right.Items.Remove($ListBox_right.SelectedItem)
}
$ListBox_left.add_MouseDoubleClick($ListBox_left_MouseDoubleClick)
$ListBox_right.add_MouseDoubleClick($ListBox_right_MouseDoubleClick)
$main_form.add_Load($form_Load)
#endregion
#region PropertyGrid
$propertygrid = New-Object System.Windows.Forms.PropertyGrid
$propertygrid.Location = New-Object System.Drawing.Point(620,540)
$propertygrid.Size = New-Object System.Drawing.Size(200,100)
$propertygrid.Name = "PropertyGrid"
$propertygrid.TabIndex = 6
$main_form.Controls.Add($propertygrid)
#endregion
#region Beep
$Button_Beep = New-Object System.Windows.Forms.Button
$Button_Beep.Location = New-Object System.Drawing.Point(830,540)
$Button_Beep.Text = "Beep"
$Button_Beep.AutoSize = $true
$main_form.Controls.Add($Button_Beep)
$Button_Beep.Add_Click({
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
})
#endregion
$main_form.ShowDialog()