Я создал пустое приложение WPF с рамкой и смог перехватить событие нажатия клавиши. Как только приложение запускается, я фокусирую кадр. Вы можете сделать то же самое, когда ваша страница загружается или ваш рабочий процесс начинается заново.
<Frame Loaded="FrameworkElement_OnLoaded" KeyUp="UIElement_OnKeyUp">
<Frame.Content>
<Page>
<Label Content="Hello"></Label>
</Page>
</Frame.Content>
</Frame>
private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e)
{
((Frame)sender).Focus();
}
private void UIElement_OnKeyUp(object sender, KeyEventArgs e)
{
MessageBox.Show("Key pressed");
}
Ваш varchar(max)
? Я думаю, что им не разрешают использоваться в индексе.
Иначе отправьте Ваш CREATE TABLE
оператор, обычно нет никакой проблемы, добавляющей a varchar
к индексу.
Я предполагаю, что Ваш - VARCHAR (МАКС) столбец, который, как ошибка говорит, является invalida типом данных для индекса. Предложение: создайте вычисляемый столбец, который является значением хэш-функции VARCHAR (МАКС), столбец (например, использование функции HashBytes) затем создает индекс на вычисляемом столбце только. Затем в условии поиска (например, Оператор Where) Вашего DML SQL Вы использовали бы обоих VARCHAR (МАКС), поиск ценит себя плюс хеш Вашего VARCHAR (МАКС) поисковое значение на соответствующих столбцах в Вашей таблице. Это может быть хорошая идея инкапсулировать хеширование поисковых значений в хранимой процедуре 'помощника'.
Нет, идентификатор + varchar столбец не работал бы. Это работало бы отлично для запросов, где Вы делаете поиск на идентификаторе и только выбираете идентификатор или/и varchar столбец - затем у Вас был бы закрывающий индекс, и все могло быть получено только путем рассмотрения индекса.
Я предполагаю, что у Вас есть кластерный индекс на Вашем столбце ID, поскольку это - первичный ключ. Затем необходимо было бы создать некластеризованный индекс на varchar столбце - который должен быть возможным. Некластеризованный индекс будет автоматически включать идентификатор также.
Также помните, что индекс только будет хорош для запросов как ГДЕ VarcharColumn = 'xyz' и ГДЕ VarcharColumn КАК 'xyz %'.
Это не поможет для ПОДОБНОГО '%xyz %' и запросам '%xyz'.
При установке столбца, поскольку первичный ключ на значение по умолчанию создает кластерный индекс, таким образом, Вы не должны создавать другой индекс INT+VARCHAR.
То, что Вы ищете, является индексом на Вашем один VARCHAR - без +INT, так как Ваш первичный ключ неявно включен - после того, как весь SQL Server должен смочь определить местоположение фактической строки при выполнении индексных поисков. Существует ограничение, хотя, я полагаю, что полный размер столбцов индекса должен быть <900 байтов (по крайней мере, это было с SQL Server 2000). Какой длины Ваш VARCHAR?
Вы не должны включать varchar поле в первичный ключ для него, чтобы быть индексированными. Для создания индекса просто изменяют таблицу в Studio управления, нажимают на кнопку Manage Indexes и Keys и нажимают Add для добавления нового индекса. Затем выберите поле VARCHAR. Не должно быть никакой проблемы.