Windows forms powershell checkbox

Клёвый код

Скриптописание и кодинг

Решаем задачи Абрамян на C. Matrix78

Matrix78. Дана матрица размера $$M \times N$$. Упорядочить ее строки так, чтобы их минимальные элементы образовывали убывающую последовательность.

Решаем задачи Абрамян на C. Matrix77

Matrix77. Дана матрица размера $$M \times N$$. Упорядочить ее столбцы так, чтобы их последние элементы образовывали убывающую последовательность.

Решаем задачи Абрамян на C. Matrix76

Matrix76. Дана матрица размера $$M \times N$$. Упорядочить ее строки так, чтобы их первые элементы образовывали возрастающую последовательность.

Решаем задачи Абрамян на C. Matrix75

Matrix75. Дана матрица размера $$M \times N$$. Элемент матрицы называется ее локальным максимумом, если он больше всех окружающих его элементов. Поменять знак всех локальных максимумов данной матрицы на противоположный. При решении допускается использовать вспомогательную матрицу.

Решаем задачи Абрамян на C. Matrix74

Matrix74. Дана матрица размера $$M \times N$$. Элемент матрицы называется ее локальным минимумом, если он меньше всех окружающих его элементов. Заменить все локальные минимумы данной матрицы на нули. При решении допускается использовать вспомогательную матрицу.

Решаем задачи Абрамян на C. Matrix73

Matrix73. Дана матрица размера $$M \times N$$. После последнего столбца, содержащего только отрицательные элементы, вставить столбец из нулей. Если требуемых столбцов нет, то вывести матрицу без изменений.

Решаем задачи Абрамян на C. Matrix72

Matrix72. Дана матрица размера $$M \times N$$. Перед первым столбцом, содержащим только положительные элементы, вставить столбец из единиц. Если требуемых столбцов нет, то вывести матрицу без изменений.

Решаем задачи Абрамян на C. Matrix71

Matrix71. Дана матрица размера $$M \times N$$. Продублировать столбец матрицы, содержащий ее минимальный элемент.

Решаем задачи Абрамян на C. Matrix70

Matrix70. Дана матрица размера $$M \times N$$. Продублировать строку матрицы, содержащую ее максимальный элемент.

Решаем задачи Абрамян на C. Matrix69

Matrix69. Дана матрица размера $$M \times N$$ и целое число $$K$$ $$(1 \le K \le $$N$$)$$. После столбца матрицы с номером $$K$$ вставить столбец из единиц.

Powershell Checkbox that selects other checkboxes

I have a basic form UI in powershell. I have a series of 3 individual checkboxes with the following code:

I would like to add a 4th checkbox below this that says «Select All» and have it be dynamic if possible. If I select it, it automatically selects checkboxes 1, 2, and 3. If I unselect checkbox 2 (or any other checkbox), it automatically unselects the «Select All» checkbox. Is this possible?

Читайте также:  Microsoft windows 10 pro rus 64bit dvd 1pk dsp oei комплект

2 Answers 2

Maybe this is a possible solution?

For your request of unchecking the ‘select all’ checkbox, you would need to do a .add_click for all of your first three checkboxes that would cause the ‘select all’ checkbox to become unchecked. I believe a better way to do this would be to write a function that you could reference when any of the first three checkboxes are clicked on, and have it uncheck the ‘select all’ checkbox (see below)

I have been playing around trying to achieve a more dynamic approach and came up with the following. Create a GroupBox («$grpbox» the name in my example) and add it to the form, add the checkboxes to the group box instead of the form:

Add Checkboxes to groupbox (not form)

call newly created function

add new function to find all checkboxes within the groupboxes and check them

And of course more logic could be added within the function.

Windows forms powershell checkbox

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Answered by:

Question

I created a script to create new accounts in active directory and have 3 checkboxes in the form. For some reason the checkbox act as if they are checked even if they are not.

$objTypeCheckbox = New-Object System.Windows.Forms.Checkbox
$objTypeCheckbox.Location = New-Object System.Drawing.Size(10,220)
$objTypeCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objTypeCheckbox.Text = «Text Here»
$objTypeCheckbox.TabIndex = 4
$objForm.Controls.Add($objTypeCheckbox)

If ($objTypeCheckbox.Checked = $true)
<
Perform the action
>

Any help would be appreciated.

Answers

You are using = instead of -eq to handle the comparisons at the end of your script.

We can take it one step further since the Checked property is a boolean value:

  • Edited by Boe Prox MVP Thursday, July 11, 2013 7:12 PM another example
  • Marked as answer by Jon Holliday Thursday, July 11, 2013 7:21 PM

All replies

[void] [System.Reflection.Assembly]::LoadWithPartialName(«System.Drawing»)
[void] [System.Reflection.Assembly]::LoadWithPartialName(«System.Windows.Forms»)

#This creates the form and sets its size and position
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = «Create New AD Account»
$objForm.Size = New-Object System.Drawing.Size(300,615)
$objForm.StartPosition = «CenterScreen»

#This creates a label for the TextBox1
$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,20)
$objLabel1.Size = New-Object System.Drawing.Size(280,20)
$objLabel1.Text = «Enter the Employee ID:»
$objForm.Controls.Add($objLabel1)

#This creates the TextBox1
$objTextBox1 = New-Object System.Windows.Forms.TextBox
$objTextBox1.Location = New-Object System.Drawing.Size(10,40)
$objTextBox1.Size = New-Object System.Drawing.Size(260,20)
$objTextBox1.TabIndex = 0
$objForm.Controls.Add($objTextBox1)

#This creates a label for the TextBox2
$objLabel2 = New-Object System.Windows.Forms.Label
$objLabel2.Location = New-Object System.Drawing.Size(10,70)
$objLabel2.Size = New-Object System.Drawing.Size(280,20)
$objLabel2.Text = «Enter the Last Name:»
$objForm.Controls.Add($objLabel2)

#This creates the TextBox2
$objTextBox2 = New-Object System.Windows.Forms.TextBox
$objTextBox2.Location = New-Object System.Drawing.Size(10,90)
$objTextBox2.Size = New-Object System.Drawing.Size(260,20)
$objTextBox2.TabIndex = 1
$objForm.Controls.Add($objTextBox2)

#This creates a label for the TextBox3
$objLabel3 = New-Object System.Windows.Forms.Label
$objLabel3.Location = New-Object System.Drawing.Size(10,120)
$objLabel3.Size = New-Object System.Drawing.Size(280,20)
$objLabel3.Text = «Enter the First Name:»
$objForm.Controls.Add($objLabel3)

#This creates the TextBox3
$objTextBox3 = New-Object System.Windows.Forms.TextBox
$objTextBox3.Location = New-Object System.Drawing.Size(10,140)
$objTextBox3.Size = New-Object System.Drawing.Size(260,20)
$objTextBox3.TabIndex = 2
$objForm.Controls.Add($objTextBox3)

#This creates a label for the TextBox4
$objLabel4 = New-Object System.Windows.Forms.Label
$objLabel4.Location = New-Object System.Drawing.Size(10,170)
$objLabel4.Size = New-Object System.Drawing.Size(280,20)
$objLabel4.Text = «Enter the Primary SMTP Address:»
$objForm.Controls.Add($objLabel4)

#This creates the TextBox4
$objTextBox4 = New-Object System.Windows.Forms.TextBox
$objTextBox4.Location = New-Object System.Drawing.Size(10,190)
$objTextBox4.Size = New-Object System.Drawing.Size(260,20)
$objTextBox4.TabIndex = 3
$objForm.Controls.Add($objTextBox4)

Читайте также:  Windows 10 моргает рабочий стол после запуска

#This creates a checkbox called Employee
$objTypeCheckbox = New-Object System.Windows.Forms.Checkbox
$objTypeCheckbox.Location = New-Object System.Drawing.Size(10,220)
$objTypeCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objTypeCheckbox.Text = «Employee»
$objTypeCheckbox.TabIndex = 4
$objForm.Controls.Add($objTypeCheckbox)

#This creates a checkbox called Citrix User
$objCitrixUserCheckbox = New-Object System.Windows.Forms.Checkbox
$objCitrixUserCheckbox.Location = New-Object System.Drawing.Size(10,240)
$objCitrixUserCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objCitrixUserCheckbox.Text = «Citrix User»
$objCitrixUserCheckbox.TabIndex = 5
$objForm.Controls.Add($objCitrixUserCheckbox)

#This creates a checkbox called Non-Citrix User
$objNonCitrixUserCheckbox = New-Object System.Windows.Forms.Checkbox
$objNonCitrixUserCheckbox.Location = New-Object System.Drawing.Size(10,260)
$objNonCitrixUserCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objNonCitrixUserCheckbox.Text = «Non-Citrix User»
$objNonCitrixUserCheckbox.TabIndex = 6
$objForm.Controls.Add($objNonCitrixUserCheckbox)

#This creates a label for the Department List Box
$objLabel4 = New-Object System.Windows.Forms.Label
$objLabel4.Location = New-Object System.Drawing.Size(10,290)
$objLabel4.Size = New-Object System.Drawing.Size(280,20)
$objLabel4.Text = «Select the Department:»
$objForm.Controls.Add($objLabel4)

#This creates the list box for Department and populates it
$objDepartmentListbox = New-Object System.Windows.Forms.Listbox
$objDepartmentListbox.Location = New-Object System.Drawing.Size(10,310)
$objDepartmentListbox.Size = New-Object System.Drawing.Size(260,100)
$objDepartmentListbox.TabIndex = 7
$objForm.Controls.Add($objDepartmentListbox)

$jobTitles = Import-Csv C:\Users\UserID\Desktop\ActiveDirectory\Title\job_title.csv

Foreach ($jobTitle in $jobTitles)
<
[void] $objDepartmentListbox.Items.Add($jobTitle.Name)
>

#This creates a label for the Office List Box
$objLabel5 = New-Object System.Windows.Forms.Label
$objLabel5.Location = New-Object System.Drawing.Size(10,410)
$objLabel5.Size = New-Object System.Drawing.Size(280,20)
$objLabel5.Text = «Select the Office:»
$objForm.Controls.Add($objLabel5)

#This creates the list box for Department and populates it
$objOfficeListbox = New-Object System.Windows.Forms.Listbox
$objOfficeListbox.Location = New-Object System.Drawing.Size(10,430)
$objOfficeListbox.Size = New-Object System.Drawing.Size(260,100)
$objOfficeListbox.TabIndex = 8
$objForm.Controls.Add($objOfficeListbox)
$objForm.Topmost = $True

$branches = Import-Csv C:\Users\UserID\Desktop\ActiveDirectory\Branch\branch.csv

Foreach ($branch in $branches)
<
[void] $objOfficeListbox.Items.Add($branch.Name)
>

#This creates the Ok button and sets the event
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(120,540)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = «OK»
$OKButton.Add_Click( <$empID=$objTextBox1.Text;$sn=$objTextBox2.Text;$gn=$objTextBox3.Text;$email=$objTextBox4.Text;$title=$objDepartmentListbox.SelectedItem;
$office=$objOfficeListbox.SelectedItem;$objForm.Close()>)
$OKButton.TabIndex = 9
$objForm.Controls.Add($OKButton)

#This creates the Cancel button and sets the event
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(195,540)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = «Cancel»
$CancelButton.Add_Click(<$objForm.Close()>)
$CancelButton.TabIndex = 10
$objForm.Controls.Add($CancelButton)

#Combine last name with first name to create the Display Name
$dn = «$sn, $gn»

#Set the password
$pwd = ConvertTo-SecureString password -AsPlainText -Force

#Create the account in AD and assign it to the correct OU

If ($objCitrixUserCheckbox.Checked = $true)
<
New-ADUser -SamAccountName $empID -Name $dn -DisplayName $dn -Surname $sn -GivenName $gn -Description $empID -EmailAddress $email -Office $office -Country «US» -UserPrincipalName $email -Path «OU=$office,OU=Citrix Branch,OU=Users,OU=Accounts,DC=contoso,DC=com» -AccountPassword $pwd -Enabled $true -ChangePasswordAtLogon $false
>

If ($objNonCitrixUserCheckbox.Checked = $true)

<
New-ADUser -SamAccountName $empID -Name $dn -DisplayName $dn -Surname $sn -GivenName $gn -Description $empID -EmailAddress $email -Office $office -Country «US» -UserPrincipalName $email -Path «OU=$office,OU=Branch,OU=Users,OU=Accounts,DC=contoso,DC=com» -AccountPassword $pwd -Enabled $true -ChangePasswordAtLogon $false
>

Windows forms powershell checkbox

This forum has migrated to Microsoft Q&A. Visit Microsoft Q&A to post new questions.

Answered by:

Question

I created a script to create new accounts in active directory and have 3 checkboxes in the form. For some reason the checkbox act as if they are checked even if they are not.

$objTypeCheckbox = New-Object System.Windows.Forms.Checkbox
$objTypeCheckbox.Location = New-Object System.Drawing.Size(10,220)
$objTypeCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objTypeCheckbox.Text = «Text Here»
$objTypeCheckbox.TabIndex = 4
$objForm.Controls.Add($objTypeCheckbox)

If ($objTypeCheckbox.Checked = $true)
<
Perform the action
>

Any help would be appreciated.

Answers

You are using = instead of -eq to handle the comparisons at the end of your script.

We can take it one step further since the Checked property is a boolean value:

  • Edited by Boe Prox MVP Thursday, July 11, 2013 7:12 PM another example
  • Marked as answer by Jon Holliday Thursday, July 11, 2013 7:21 PM

All replies

[void] [System.Reflection.Assembly]::LoadWithPartialName(«System.Drawing»)
[void] [System.Reflection.Assembly]::LoadWithPartialName(«System.Windows.Forms»)

#This creates the form and sets its size and position
$objForm = New-Object System.Windows.Forms.Form
$objForm.Text = «Create New AD Account»
$objForm.Size = New-Object System.Drawing.Size(300,615)
$objForm.StartPosition = «CenterScreen»

Читайте также:  Пропал драйвер принтера линукс

#This creates a label for the TextBox1
$objLabel1 = New-Object System.Windows.Forms.Label
$objLabel1.Location = New-Object System.Drawing.Size(10,20)
$objLabel1.Size = New-Object System.Drawing.Size(280,20)
$objLabel1.Text = «Enter the Employee ID:»
$objForm.Controls.Add($objLabel1)

#This creates the TextBox1
$objTextBox1 = New-Object System.Windows.Forms.TextBox
$objTextBox1.Location = New-Object System.Drawing.Size(10,40)
$objTextBox1.Size = New-Object System.Drawing.Size(260,20)
$objTextBox1.TabIndex = 0
$objForm.Controls.Add($objTextBox1)

#This creates a label for the TextBox2
$objLabel2 = New-Object System.Windows.Forms.Label
$objLabel2.Location = New-Object System.Drawing.Size(10,70)
$objLabel2.Size = New-Object System.Drawing.Size(280,20)
$objLabel2.Text = «Enter the Last Name:»
$objForm.Controls.Add($objLabel2)

#This creates the TextBox2
$objTextBox2 = New-Object System.Windows.Forms.TextBox
$objTextBox2.Location = New-Object System.Drawing.Size(10,90)
$objTextBox2.Size = New-Object System.Drawing.Size(260,20)
$objTextBox2.TabIndex = 1
$objForm.Controls.Add($objTextBox2)

#This creates a label for the TextBox3
$objLabel3 = New-Object System.Windows.Forms.Label
$objLabel3.Location = New-Object System.Drawing.Size(10,120)
$objLabel3.Size = New-Object System.Drawing.Size(280,20)
$objLabel3.Text = «Enter the First Name:»
$objForm.Controls.Add($objLabel3)

#This creates the TextBox3
$objTextBox3 = New-Object System.Windows.Forms.TextBox
$objTextBox3.Location = New-Object System.Drawing.Size(10,140)
$objTextBox3.Size = New-Object System.Drawing.Size(260,20)
$objTextBox3.TabIndex = 2
$objForm.Controls.Add($objTextBox3)

#This creates a label for the TextBox4
$objLabel4 = New-Object System.Windows.Forms.Label
$objLabel4.Location = New-Object System.Drawing.Size(10,170)
$objLabel4.Size = New-Object System.Drawing.Size(280,20)
$objLabel4.Text = «Enter the Primary SMTP Address:»
$objForm.Controls.Add($objLabel4)

#This creates the TextBox4
$objTextBox4 = New-Object System.Windows.Forms.TextBox
$objTextBox4.Location = New-Object System.Drawing.Size(10,190)
$objTextBox4.Size = New-Object System.Drawing.Size(260,20)
$objTextBox4.TabIndex = 3
$objForm.Controls.Add($objTextBox4)

#This creates a checkbox called Employee
$objTypeCheckbox = New-Object System.Windows.Forms.Checkbox
$objTypeCheckbox.Location = New-Object System.Drawing.Size(10,220)
$objTypeCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objTypeCheckbox.Text = «Employee»
$objTypeCheckbox.TabIndex = 4
$objForm.Controls.Add($objTypeCheckbox)

#This creates a checkbox called Citrix User
$objCitrixUserCheckbox = New-Object System.Windows.Forms.Checkbox
$objCitrixUserCheckbox.Location = New-Object System.Drawing.Size(10,240)
$objCitrixUserCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objCitrixUserCheckbox.Text = «Citrix User»
$objCitrixUserCheckbox.TabIndex = 5
$objForm.Controls.Add($objCitrixUserCheckbox)

#This creates a checkbox called Non-Citrix User
$objNonCitrixUserCheckbox = New-Object System.Windows.Forms.Checkbox
$objNonCitrixUserCheckbox.Location = New-Object System.Drawing.Size(10,260)
$objNonCitrixUserCheckbox.Size = New-Object System.Drawing.Size(500,20)
$objNonCitrixUserCheckbox.Text = «Non-Citrix User»
$objNonCitrixUserCheckbox.TabIndex = 6
$objForm.Controls.Add($objNonCitrixUserCheckbox)

#This creates a label for the Department List Box
$objLabel4 = New-Object System.Windows.Forms.Label
$objLabel4.Location = New-Object System.Drawing.Size(10,290)
$objLabel4.Size = New-Object System.Drawing.Size(280,20)
$objLabel4.Text = «Select the Department:»
$objForm.Controls.Add($objLabel4)

#This creates the list box for Department and populates it
$objDepartmentListbox = New-Object System.Windows.Forms.Listbox
$objDepartmentListbox.Location = New-Object System.Drawing.Size(10,310)
$objDepartmentListbox.Size = New-Object System.Drawing.Size(260,100)
$objDepartmentListbox.TabIndex = 7
$objForm.Controls.Add($objDepartmentListbox)

$jobTitles = Import-Csv C:\Users\UserID\Desktop\ActiveDirectory\Title\job_title.csv

Foreach ($jobTitle in $jobTitles)
<
[void] $objDepartmentListbox.Items.Add($jobTitle.Name)
>

#This creates a label for the Office List Box
$objLabel5 = New-Object System.Windows.Forms.Label
$objLabel5.Location = New-Object System.Drawing.Size(10,410)
$objLabel5.Size = New-Object System.Drawing.Size(280,20)
$objLabel5.Text = «Select the Office:»
$objForm.Controls.Add($objLabel5)

#This creates the list box for Department and populates it
$objOfficeListbox = New-Object System.Windows.Forms.Listbox
$objOfficeListbox.Location = New-Object System.Drawing.Size(10,430)
$objOfficeListbox.Size = New-Object System.Drawing.Size(260,100)
$objOfficeListbox.TabIndex = 8
$objForm.Controls.Add($objOfficeListbox)
$objForm.Topmost = $True

$branches = Import-Csv C:\Users\UserID\Desktop\ActiveDirectory\Branch\branch.csv

Foreach ($branch in $branches)
<
[void] $objOfficeListbox.Items.Add($branch.Name)
>

#This creates the Ok button and sets the event
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Size(120,540)
$OKButton.Size = New-Object System.Drawing.Size(75,23)
$OKButton.Text = «OK»
$OKButton.Add_Click( <$empID=$objTextBox1.Text;$sn=$objTextBox2.Text;$gn=$objTextBox3.Text;$email=$objTextBox4.Text;$title=$objDepartmentListbox.SelectedItem;
$office=$objOfficeListbox.SelectedItem;$objForm.Close()>)
$OKButton.TabIndex = 9
$objForm.Controls.Add($OKButton)

#This creates the Cancel button and sets the event
$CancelButton = New-Object System.Windows.Forms.Button
$CancelButton.Location = New-Object System.Drawing.Size(195,540)
$CancelButton.Size = New-Object System.Drawing.Size(75,23)
$CancelButton.Text = «Cancel»
$CancelButton.Add_Click(<$objForm.Close()>)
$CancelButton.TabIndex = 10
$objForm.Controls.Add($CancelButton)

#Combine last name with first name to create the Display Name
$dn = «$sn, $gn»

#Set the password
$pwd = ConvertTo-SecureString password -AsPlainText -Force

#Create the account in AD and assign it to the correct OU

If ($objCitrixUserCheckbox.Checked = $true)
<
New-ADUser -SamAccountName $empID -Name $dn -DisplayName $dn -Surname $sn -GivenName $gn -Description $empID -EmailAddress $email -Office $office -Country «US» -UserPrincipalName $email -Path «OU=$office,OU=Citrix Branch,OU=Users,OU=Accounts,DC=contoso,DC=com» -AccountPassword $pwd -Enabled $true -ChangePasswordAtLogon $false
>

If ($objNonCitrixUserCheckbox.Checked = $true)

<
New-ADUser -SamAccountName $empID -Name $dn -DisplayName $dn -Surname $sn -GivenName $gn -Description $empID -EmailAddress $email -Office $office -Country «US» -UserPrincipalName $email -Path «OU=$office,OU=Branch,OU=Users,OU=Accounts,DC=contoso,DC=com» -AccountPassword $pwd -Enabled $true -ChangePasswordAtLogon $false
>

Оцените статью