Попробуйте это
async method() {
const userInfo = await this.nrcService.getUserInfo();
if (!!userInfo) {
this.userInfo = userInfo;
}
if (!!this.userInfo) {
report = {
ReportType: reportType,
ReportID: id,
ReportFormat: format,
ReportName: `${reportType}_${id}`,
Filters: shouldNotParseFilters ? filterContent : [],
ViewFields: columns || [],
OrgName: this.userInfo[0].orgname,
FullName: this.userInfo[0].fullname
} as SavedReport;
if (!shouldNotParseFilters) {
this.reportFilterService.mapReportFilters(<ReportFilterContext>filterContent, report);
}
report.Filters.push({ 'maxitems': [-1] });
this.nrcService.downloadReport(report, fileName).subscribe({ error: err => this.nrcService.handleError(err) });
} else {
// ...
}
}
если (e. Управление & & e. Сдвиг & & e. KeyCode == Ключи. A) {
}
Со страницы MSDN на KeyEventArgs :
if (e.KeyCode == Keys.F1 && (e.Alt || e.Control || e.Shift))
{
//Do stuff...
}
Вы можете проверить модификаторы KeyEventArgs следующим образом:
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Up && e.Modifiers == Keys.Control)
{
//do stuff
}
}
В KeyEventArgs
есть свойства Ctrl , Alt и Shift , который показывает, нажаты ли эти кнопки.
вы должны запомнить нажатые клавиши (т.е. в массиве bool). и установите позицию на 1, когда она нажата (клавиша вниз) и на 0.
таким образом вы можете отслеживать более одной клавиши. Я предлагаю создать массив только для специальных ключей
, чтобы вы могли сделать:
if (e.KeyCode == Keys.Control)
{
keys[0] = true;
}
// could do the same with alt/shift/... - or just rename keys[0] to ctrlPressed
if (keys[0] == true && e.KeyCode == Keys.Up)
doyourstuff
Вы можете использовать свойство ModifierKeys:
if (e.KeyCode == Keys.Up && (ModifierKeys & Keys.Control) == Keys.Control)
{
// CTRL + UP was pressed
}
Обратите внимание, что значение ModifierKeys может быть комбинацией значений, поэтому, если вы хотите обнаружить, что CTRL был нажат независимо от состояния клавиш SHIFT или ALT , вам нужно будет выполнить побитовое сравнение, как в моем примере выше. Если вы хотите убедиться, что никакие другие модификаторы не использовались, вы должны вместо этого проверить равенство:
if (e.KeyCode == Keys.Up && ModifierKeys == Keys.Control)
{
// CTRL + UP was pressed
}