Проблема связана с тем, что Read-Host
возвращает строку, поэтому ваш литой $Input
является ArrayListEnumeratorSimple
try:
[int]$GeneratedNum = Get-Random -min 1 -max 101
Write-host $GeneratedNum
$isQuitting = $false
Do{
$Input = (Read-Host "Take a guess!") -as [int]
If($Input -lt $GeneratedNum){Write-Output "Too Low"}
If($Input -gt $GeneratedNum){Write-Output "Too High"}
If($Input -eq $GeneratedNum){Write-Output "Good Job!"; $isQuitting = $true}
} Until($isQuitting -eq $true)
Вы также должны использовать try{}catch{}
, чтобы поймать если вход не является int.
То, что вы должны понимать, заключается в том, что при использовании операторов сравнения PowerShell выбран тип левой части, так что эта часть должна быть введена в левый тип. Зная, что вы могли бы написать следующее, где я просто положил $GeneratedNum
, который является целым числом слева от сравнений:
[int]$GeneratedNum = Get-Random -min 1 -max 101
Write-host $GeneratedNum
$isQuitting = $false
Do{
$Input = (Read-Host "Take a guess!")
If($GeneratedNum -gt $Input){Write-Output "Too Low"}
If($GeneratedNum -lt $Input){Write-Output "Too High"}
If($GeneratedNum -eq $Input){Write-Output "Good Job!"; $isQuitting = $true}
} Until($isQuitting -eq $true)
Независимо от того, выбран ли какой-либо текст, , свойство SelectionStart представляет индекс в текст, где Вы каре сидите. Таким образом, можно использовать Строка. Вставьте для введения некоторого текста, как это:
myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");
Джеймс, довольно неэффективно, что вам нужно заменить всю строку, когда вы только хотите вставить текст в курсор position.
Лучшее решение было бы:
textBoxSt1.SelectedText = ComboBoxWildCard.SelectedItem.ToString();
Когда у вас ничего не выделено, будет вставлен новый текст в позицию курсора. Если у вас есть что-то выбранное, это заменит выбранный текст текстом, который вы хотите вставить.
Я нашел это решение на сайте eggheadcafe .
Вы хотите проверить SelectionStart
свойство TextBox
.
На каком событии Вы предложили бы, чтобы я записал переменную? Отпуск?
В настоящее время я имею:
private void comboBoxWildCard_SelectedIndexChanged(object sender, EventArgs e)
{
textBoxSt1.Focus();
textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());
}
private void textBoxSt1_Leave(object sender, EventArgs e)
{
intCursorPos = textBoxSt1.SelectionStart;
}
Запись на событии Leave работает, но текст не становится вставленным, я пропускаю что-то?
ОБНОВЛЕНИЕ: Мне был нужен textBoxSt1. Текст =
textBoxSt1.Text = textBoxSt1.Text.Insert(intCursorPos, comboBoxWildCard.SelectedItem.ToString());
Спасибо все.
Спасибо
Необходимо сохранить SelectionStart
свойство в переменной, и затем когда Вы нажимаете кнопку, смещаете фокус назад в TextBox. Затем установите SelectionStart
свойство к тому в переменной.