Как я нахожу положение курсора в текстовом поле? C#

Проблема связана с тем, что 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)
55
задан Matt Hamilton 8 February 2009 в 22:40
поделиться

5 ответов

Независимо от того, выбран ли какой-либо текст, , свойство SelectionStart представляет индекс в текст, где Вы каре сидите. Таким образом, можно использовать Строка. Вставьте для введения некоторого текста, как это:

myTextBox.Text = myTextBox.Text.Insert(myTextBox.SelectionStart, "Hello world");
81
ответ дан Community 7 November 2019 в 17:15
поделиться

Джеймс, довольно неэффективно, что вам нужно заменить всю строку, когда вы только хотите вставить текст в курсор position.

Лучшее решение было бы:

textBoxSt1.SelectedText = ComboBoxWildCard.SelectedItem.ToString();

Когда у вас ничего не выделено, будет вставлен новый текст в позицию курсора. Если у вас есть что-то выбранное, это заменит выбранный текст текстом, который вы хотите вставить.

Я нашел это решение на сайте eggheadcafe .

7
ответ дан 7 November 2019 в 07:15
поделиться

Вы хотите проверить SelectionStart свойство TextBox.

14
ответ дан akjoshi 7 November 2019 в 17:15
поделиться

На каком событии Вы предложили бы, чтобы я записал переменную? Отпуск?

В настоящее время я имею:

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());

Спасибо все.

Спасибо

2
ответ дан 7 November 2019 в 17:15
поделиться

Необходимо сохранить SelectionStart свойство в переменной, и затем когда Вы нажимаете кнопку, смещаете фокус назад в TextBox. Затем установите SelectionStart свойство к тому в переменной.

1
ответ дан Irshad 7 November 2019 в 17:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: