Как удалить ячейку в таблице?

  • Автор темы Автор темы material
  • Дата начала Дата начала

material

Client
Регистрация
23.03.2021
Сообщения
382
Реакции
175
Баллы
43
Доброго дня.
Вопрос звучит крайне просто и даже местами смешно, но располагая огромным функционалом ZP, перечитав FAQ и форум, не смог найти решения.
Требуется просто удалить ячейку "Содержащую текст". Удалить можно строку и столбец "Содержащие текст", а вот ячейку почему-то нельзя, как бы это просто не звучало.

Если стандартными методами ZP реализовать такое не представляется возможным, может кто знает решение на C#?

P.S.
Костыли вида взять столбец, поместить в список, сделать нужные действия и вернуть список в столбец - не подходят, так как операция должна проходить быстро, а данный способ имеет задержку.

P.P.S.
Задача: есть таблица с данными, нужно удалить ячейку\ячейки содержащие текст "Like".
 
нет такого функционала в зенке.
если только искать сторонние dll
Не знаешь с чем связано отсутствие такого банального, но крайне полезного функционала? Просто я не представляю, как можно отказаться от списков, в пользу таблиц, где информация может храниться в компактной и удобной для восприятия форме, без удаления ячеек. Резать сразу столбцы и строки, это варварский метод, если у тебя в каждом столбце абсолютно разная информация, которая используется для работоспособности проекта.

Смотрел обучающие ролики, везде говорилось о схожести списков и таблиц, но по факту, таблицы крайне урезаны и возможности списков куда более обширные. Ситуация вынудила подключить таблицы, так как задача сгенерирует десятки списков, в которых можно запутаться, и если ранее в работе с таблицами был костыль на костыле, то теперь вот просто нельзя удалить ячейку и приехали, даже костыля нет и подорожничек не приложишь. =(

ZP умный софт и если чего-то простого здесь нет, значит причина имеется. В таблице, кроме столбцов, строк и ячеек более ничего нет и все три параметра обязаны быть равноправными по функционалу. Для чего это нужно? Вопрос не уместен, клиент сам разберется и найдет применение возможности.

Phoenix78 - часто вижу твои посты и мысли. Спасибо за них.
 
Не знаешь с чем связано отсутствие такого банального, но крайне полезного функционала? Просто я не представляю, как можно отказаться от списков, в пользу таблиц, где информация может храниться в компактной и удобной для восприятия форме, без удаления ячеек. Резать сразу столбцы и строки, это варварский метод, если у тебя в каждом столбце абсолютно разная информация, которая используется для работоспособности проекта.

Смотрел обучающие ролики, везде говорилось о схожести списков и таблиц, но по факту, таблицы крайне урезаны и возможности списков куда более обширные. Ситуация вынудила подключить таблицы, так как задача сгенерирует десятки списков, в которых можно запутаться, и если ранее в работе с таблицами был костыль на костыле, то теперь вот просто нельзя удалить ячейку и приехали, даже костыля нет и подорожничек не приложишь. =(

ZP умный софт и если чего-то простого здесь нет, значит причина имеется. В таблице, кроме столбцов, строк и ячеек более ничего нет и все три параметра обязаны быть равноправными по функционалу. Для чего это нужно? Вопрос не уместен, клиент сам разберется и найдет применение возможности.

Phoenix78 - часто вижу твои посты и мысли. Спасибо за них.
не знай, я же такой же пользователь как и все :)
вообще я постепенно перехожу на БД. начал с попроще, с SQLite , потом на сетевые перейду.
 
  • Оценить
Реакции: material
Доброго дня.
Вопрос звучит крайне просто и даже местами смешно, но располагая огромным функционалом ZP, перечитав FAQ и форум, не смог найти решения.
Требуется просто удалить ячейку "Содержащую текст". Удалить можно строку и столбец "Содержащие текст", а вот ячейку почему-то нельзя, как бы это просто не звучало.

Если стандартными методами ZP реализовать такое не представляется возможным, может кто знает решение на C#?

P.S.
Костыли вида взять столбец, поместить в список, сделать нужные действия и вернуть список в столбец - не подходят, так как операция должна проходить быстро, а данный способ имеет задержку.

P.P.S.
Задача: есть таблица с данными, нужно удалить ячейку\ячейки содержащие текст "Like".
Если без смещения нужно, то просто можно затереть ячейку :-)
Пример затирания:
Развернуть Свернуть Копировать
var table = project.Tables["Моя зенно таблица"];  // наша зенно таблица.
var searchText = "like";                          // текст по которому будем искать.

//Очистка таблицы перед работой.
table.Clear();

//Добавляю данные в пустую таблицу.
table.AddRow(new[]{"one","two","three","four"});
table.AddRow(new[]{"one","two","like","four"});
table.AddRow(new[]{"one","two","three","four","five"});

var countColumn = table.ColCount;  // подсчет столбцов в таблице.
var countRow = table.RowCount;     // подсчет строк в таблице.

project.SendInfoToLog($"Количество строк: {countRow}");         // лог в pm.
project.SendInfoToLog($"Количество столбцов: {countColumn}");   // лог в pm.

lock (SyncObjects.TableSyncer)
{
    for (int counterByRow = 0; counterByRow < countRow; counterByRow++)
    {
        for (int counterByColumn = 0; counterByColumn < countColumn; counterByColumn++)
        {
            if (table.GetCell(counterByColumn, counterByRow).Contains(searchText)) table.SetCell(counterByColumn, counterByRow, "");
        }
    }
}
 
  • Оценить
Реакции: material
Если без смещения нужно, то просто можно затереть ячейку :-)
Пример затирания:
Развернуть Свернуть Копировать
var table = project.Tables["Моя зенно таблица"];  // наша зенно таблица.
var searchText = "like";                          // текст по которому будем искать.

//Очистка таблицы перед работой.
table.Clear();

//Добавляю данные в пустую таблицу.
table.AddRow(new[]{"one","two","three","four"});
table.AddRow(new[]{"one","two","like","four"});
table.AddRow(new[]{"one","two","three","four","five"});

var countColumn = table.ColCount;  // подсчет столбцов в таблице.
var countRow = table.RowCount;     // подсчет строк в таблице.

project.SendInfoToLog($"Количество строк: {countRow}");         // лог в pm.
project.SendInfoToLog($"Количество столбцов: {countColumn}");   // лог в pm.

lock (SyncObjects.TableSyncer)
{
    for (int counterByRow = 0; counterByRow < countRow; counterByRow++)
    {
        for (int counterByColumn = 0; counterByColumn < countColumn; counterByColumn++)
        {
            if (table.GetCell(counterByColumn, counterByRow).Contains(searchText)) table.SetCell(counterByColumn, counterByRow, "");
        }
    }
}

Спасибо буду тестировать. Логичный вопрос в продолжение темы, возможно ли сделать тоже самое, но со смещением? Понимаю через C# возможно всё, наверное стоит тогда спросить насколько сложна реализация данной идеи?
 
Какой смысл заморачиваться со смещением ячейки ? Если надо сместить в одном столбце, то значит столбцы рядом никак не связаны с этими данными и возникает закономерный вопрос, а нафига пихать в один лист несвязанные данные ? Не проще работать с несколькими листами где все данные связанные и достаточно удалить строку ?
 
Какой смысл заморачиваться со смещением ячейки ? Если надо сместить в одном столбце, то значит столбцы рядом никак не связаны с этими данными и возникает закономерный вопрос, а нафига пихать в один лист несвязанные данные ? Не проще работать с несколькими листами где все данные связанные и достаточно удалить строку ?

Выше писал, что данные в столбцах естественно не связаны между собой, так как появилась идея заменить списки на таблицы, для компактности в определенных задачах. Если списков (листов) не несколько, а несколько десятков? Кто придумал правило, что в таблице столбцы должны быть как-то взаимосвязаны построчно? В таблице может находиться абсолютно любая информация, которая необходима под конкретную задачу, и с этой информацией ZP желательно бы научиться работать. Во всех остальных случаях с информацией можно творить, буквально, что угодно, а в таблицах, сразу костыли.

ZP без преувеличения гениальный софт, страшно представить какое кол-во трудов и времени ушло на него... и чтобы такой софт не мог полноценно работать с ячейками?
 
Таблицы в любом случае дают больше возможности работы с информацией, чем списки. Нет смысла ограничивать таблицы, чтобы клиенты работали со списками из-за "потому что", "а зачем", "можно иначе". Пусть клиент сам решит, в какому формате ему удобней работать с информацией.
 
'Костыль' - удалить ячейку, со сдвигом влево:
Развернуть Свернуть Копировать
var tb = project.Tables["tb"];

// Координаты ячейки
int row = 1; // Номер строки
int column = 3; // Столбец
List<string> tmp =  tb.GetRow(row).ToList();
tmp.RemoveAt(column);
tmp.Add("");

for (int i = 0; i < tmp.Count; i++){
    tb.SetCell(i,  row, tmp[i]);
}
 
  • Оценить
Реакции: material
Выше писал, что данные в столбцах естественно не связаны между собой, так как появилась идея заменить списки на таблицы, для компактности в определенных задачах. Если списков (листов) не несколько, а несколько десятков? Кто придумал правило, что в таблице столбцы должны быть как-то взаимосвязаны построчно? В таблице может находиться абсолютно любая информация, которая необходима под конкретную задачу, и с этой информацией ZP желательно бы научиться работать. Во всех остальных случаях с информацией можно творить, буквально, что угодно, а в таблицах, сразу костыли.

ZP без преувеличения гениальный софт, страшно представить какое кол-во трудов и времени ушло на него... и чтобы такой софт не мог полноценно работать с ячейками?
Дык никто не заставляет делать так или сяк. :ca:
Просто как это часто бывает, пользователь часто придумывает сложные вещи, которые решаются намного проще. В этом варианте, который предлагается к использованию, не будет доступен функционал сортировки, удаления строки , очистки, так как это затронет все данные. Тем более зенка это софт для автоматического оперирования данными, а операции с отдельной ячейкой (именно удаление и вставка) это больше к ручным операциям относится.
Может поэтому и не делают разрабы , так как не укладывается в концепцию единства данных в строке, которая идет как одна запись данных.
В данном случае, намного проще сделать каталог таблиц, и завести там несколько таблиц 1,2,3...N и при работе с таблицей просто перезакреплять одну и ту же таблицу в зенке к разным файлам.
Преимущества очевидны, простая система указателей, удаление "ячеек" в этой глобальной "таблице" очень простое и быстрое , сохраняется весь функционал работы с таблицами.
Даже появляется очевидный плюс, в одной таблице в одном столбце можно логически разместить аналог списков, а тут этот столбец расширяется аж до таблицы, в которой можно хранить множество связанных данных.
 
  • Оценить
Реакции: material
Спасибо буду тестировать. Логичный вопрос в продолжение темы, возможно ли сделать тоже самое, но со смещением? Понимаю через C# возможно всё, наверное стоит тогда спросить насколько сложна реализация данной идеи?
Нууу... Это так-то ресурсоёмкий процесс, если много данных. Но, раз тебе так хочется, Сотору, держи вариант:-)
Супер-костыльный вариант затирания ячеек со смещением данных по горизонтали:
Развернуть Свернуть Копировать
var table = project.Tables["Моя зенно таблица"];  // наша зенно таблица.
var searchText = "like";                          // текст по которому будем искать.

//Очистка таблицы перед работой.
table.Clear();

//Добавляю данные в пустую таблицу.
table.AddRow(new[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"});
table.AddRow(new[]{"0", "1", "2", "like", "3", "4", "like", "5", "6", "7", "8", "9"});
table.AddRow(new[]{"like", "0", "1", "like", "like", "2", "3", "4", "5", "like", "6", "like", "7", "8", "9", "like", "like"});
table.AddRow(new[]{"like1", "like2", "like3", "like4", "like5", "like6", "like7", "like8", "like9"});

var countRow = table.RowCount;     // подсчет строк в таблице.
var countColumn = table.ColCount;  // подсчет столбцов в таблице.

string cellValue;
bool textTrue;
int emptyPosition;

lock (SyncObjects.TableSyncer)
{
    for (int counterByRow = 0; counterByRow < countRow; counterByRow++)
    {
        emptyPosition = -1;
 
        for (int counterByColumn = 0; counterByColumn < countColumn; counterByColumn++)
        {
            cellValue = table.GetCell(counterByColumn, counterByRow);
            textTrue = cellValue.Contains(searchText);
     
            if (textTrue && emptyPosition == -1)
            {
                table.SetCell(counterByColumn, counterByRow, "");
                emptyPosition = counterByColumn;
            }
            else if (!textTrue && emptyPosition != -1)
            {
                table.SetCell(counterByColumn, counterByRow, "");
                table.SetCell(emptyPosition, counterByRow, cellValue);
                emptyPosition++;
            }
            else if (textTrue && emptyPosition != -1) table.SetCell(counterByColumn, counterByRow, "");
        }
    }
}

P.S. Есть нюанс: пустые строки и столбцы удалить не смог по неведомым причинам. Скорее всего баг, напишу в тех. поддержку по этому поводу. А так, можно брать столбец/строку, пройтись по всем элементам коллекции и, если они пустые, то удалить данный столбец/строку. У меня почему-то траблы возникли, то с входящим параметром (хотя, он верный был), то индекс выходит за границы коллекции (хотя, он по факту не выходит). А может и мой косяк был, хз:D

UPD: Не баг, по невнимательности, счетчик не тот воткнул *lol*
 
Последнее редактирование:
  • Оценить
Реакции: material
P.S. Есть нюанс: пустые строки и столбцы удалить не смог по неведомым причинам. Скорее всего баг, напишу в тех. поддержку по этому поводу. А так, можно брать столбец/строку, пройтись по всем элементам коллекции и, если они пустые, то удалить данный столбец/строку. У меня почему-то траблы возникли, то с входящим параметром (хотя, он верный был), то индекс выходит за границы коллекции (хотя, он по факту не выходит). А может и мой косяк был, хз:D
потому что надо удаление делать в цикле от максимума к минимуму, так как при удалении строки будут меняться позиция и общее количество строк. и к концу цикла выйдешь за пределы диапазона. да еще и удалишь не все.
 
Спасибо буду тестировать. Логичный вопрос в продолжение темы, возможно ли сделать тоже самое, но со смещением? Понимаю через C# возможно всё, наверное стоит тогда спросить насколько сложна реализация данной идеи?
Всё же мой косяк был, по невнимательности, не тот счетчик случайно воткнул при удалении пустых столбцов и строк:D
Супер-костыльный вариант затирания ячеек со смещением данных по горизонтали, удалением пустых столбцов и строк:
Развернуть Свернуть Копировать
var table = project.Tables["Моя зенно таблица"];  // наша зенно таблица.
var searchText = "like";                          // текст по которому будем искать.

//Очистка таблицы перед работой.
table.Clear();

//Добавляю данные в пустую таблицу.
table.AddRow(new[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"});
table.AddRow(new[]{"0", "1", "2", "like", "3", "4", "like", "5", "6", "7", "8", "9"});
table.AddRow(new[]{"like", "0", "1", "like", "like", "2", "3", "4", "5", "like", "6", "like", "7", "8", "9", "like", "like"});
table.AddRow(new[]{"like1", "like2", "like3", "like4", "like5", "like6", "like7", "like8", "like9"});
table.AddRow(new[]{"0", "1", "2", "like", "3", "4", "like", "5", "6", "7", "8", "9", "10"});
table.AddRow(new[]{"0", "1", "2", "like", "3", "4", "like", "5", "6", "7", "8", "9"});

var countRow = table.RowCount;     // подсчет строк в таблице.
var countColumn = table.ColCount;  // подсчет столбцов в таблице.

string cellValue;
bool textTrue;
int emptyPosition;

lock (SyncObjects.TableSyncer)
{
    for (int counterByRow = 0; counterByRow < countRow; counterByRow++)
    {
        emptyPosition = -1;

        for (int counterByColumn = 0; counterByColumn < countColumn; counterByColumn++)
        {
            cellValue = table.GetCell(counterByColumn, counterByRow);
            textTrue = cellValue.Contains(searchText);

            if (textTrue && emptyPosition == -1)
            {
                table.SetCell(counterByColumn, counterByRow, "");
                emptyPosition = counterByColumn;
            }
            else if (!textTrue && emptyPosition != -1)
            {
                table.SetCell(counterByColumn, counterByRow, "");
                table.SetCell(emptyPosition, counterByRow, cellValue);
                emptyPosition++;
            }
            else if (textTrue && emptyPosition != -1) table.SetCell(counterByColumn, counterByRow, "");
        }
    }

    for (int counter = 0; counter < table.RowCount;)
    {
        if (table.GetRow(counter).Any(x => !string.IsNullOrWhiteSpace(x)))
        {
            counter++;
            continue;
        }
        else table.DeleteRow(counter);
    }

    for (int counter = 0; counter < table.ColCount;)
    {
        if (table.GetColumn(counter).Any(x => !string.IsNullOrWhiteSpace(x)))
        {
            counter++;
            continue;
        }
        else table.DeleteColumn(counter);
    }
}
75711
 
Последнее редактирование:
Тоже интересно стало накинуть кода на вентилятор )))

C#:
Развернуть Свернуть Копировать
var tab = project.Tables["t"];  //таблица
string delete = "value4";         //Ячейки с каким текстом удаляем
string[] rownew = new string[] {};

for(int i=0; i<tab.RowCount; i++)
{
  
    string[] rowold = tab.GetRow(i).ToArray();//взяли строку в массив

    //создали новый массив, удалив из него элементы которые соотв. удаляемому значению
    for(int j=0; j<rowold.Length; j++)
    {
        if(rowold[j].Equals(delete)) continue;
        rownew = rownew.Concat(new string[] {rowold[j]}).ToArray();
    }
  
    //перезаписали в строку таблицы новый массив
    for(int j=0; j<rownew.Length; j++)
    {
        tab.SetCell(j, i, rownew[j]);
    }
  
    //Если в строке таблицы количество ячеек больше чем в новом массиве,
    //удалили все что за пределами нового массива
    string[] rowcheck = tab.GetRow(i).ToArray();
    if(rownew.Length < rowcheck.Length)
    {
        for(int j=rownew.Length; j<rowcheck.Length; j++)     
        {
            tab.SetCell(j, i, "");
        }
    }
  
    //очистили новый массив для след. строки
    rownew = new string[] {};
  
}
 
  • Оценить
Реакции: material и Alexmd
Тоже интересно стало накинуть кода на вентилятор )))
Аналогично)
C#:
Развернуть Свернуть Копировать
string delete = "text";
lock (SyncObjects.TableSyncer){
    var table = project.Tables["table"];
    for(int i = 0; i < table.RowCount; i++){
        var row = new List<string>(table.GetRow(0).Where(x=>!x.Contains(delete))).Where(x=>!string.IsNullOrEmpty(x)).ToList();
        table.DeleteRow(0);
        if(row.Count > 0)
            table.AddRow(row);
    }
}
 
  • Оценить
Реакции: material и semafor
Нууу... Это так-то ресурсоёмкий процесс, если много данных. Но, раз тебе так хочется, Сотору, держи вариант:-)
Супер-костыльный вариант затирания ячеек со смещением данных по горизонтали:
Развернуть Свернуть Копировать
var table = project.Tables["Моя зенно таблица"];  // наша зенно таблица.
var searchText = "like";                          // текст по которому будем искать.

//Очистка таблицы перед работой.
table.Clear();

//Добавляю данные в пустую таблицу.
table.AddRow(new[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"});
table.AddRow(new[]{"0", "1", "2", "like", "3", "4", "like", "5", "6", "7", "8", "9"});
table.AddRow(new[]{"like", "0", "1", "like", "like", "2", "3", "4", "5", "like", "6", "like", "7", "8", "9", "like", "like"});
table.AddRow(new[]{"like1", "like2", "like3", "like4", "like5", "like6", "like7", "like8", "like9"});

var countRow = table.RowCount;     // подсчет строк в таблице.
var countColumn = table.ColCount;  // подсчет столбцов в таблице.

string cellValue;
bool textTrue;
int emptyPosition;

lock (SyncObjects.TableSyncer)
{
    for (int counterByRow = 0; counterByRow < countRow; counterByRow++)
    {
        emptyPosition = -1;

        for (int counterByColumn = 0; counterByColumn < countColumn; counterByColumn++)
        {
            cellValue = table.GetCell(counterByColumn, counterByRow);
            textTrue = cellValue.Contains(searchText);
    
            if (textTrue && emptyPosition == -1)
            {
                table.SetCell(counterByColumn, counterByRow, "");
                emptyPosition = counterByColumn;
            }
            else if (!textTrue && emptyPosition != -1)
            {
                table.SetCell(counterByColumn, counterByRow, "");
                table.SetCell(emptyPosition, counterByRow, cellValue);
                emptyPosition++;
            }
            else if (textTrue && emptyPosition != -1) table.SetCell(counterByColumn, counterByRow, "");
        }
    }
}

P.S. Есть нюанс: пустые строки и столбцы удалить не смог по неведомым причинам. Скорее всего баг, напишу в тех. поддержку по этому поводу. А так, можно брать столбец/строку, пройтись по всем элементам коллекции и, если они пустые, то удалить данный столбец/строку. У меня почему-то траблы возникли, то с входящим параметром (хотя, он верный был), то индекс выходит за границы коллекции (хотя, он по факту не выходит). А может и мой косяк был, хз:D

UPD: Не баг, по невнимательности, счетчик не тот воткнул *lol*

Спасибо брат Сатору, встретились вот на форуме :D
 
  • Оценить
Реакции: SHILY
Ребята всем огромное спасибо за то, что решили "накинуть кода на вентилятор" :D Буду всё тестировать, а то чтобы решить данную задачу пришлось столько костылей наделать, что рук не хватает все удерживать.

P.S.
Всё равно было бы интересно услышать мнение разработчиков по данному поводу. Лишней информация не будет, для общего понимания дела.
 
Последнее редактирование:
Помогите разобраться где ошибка:
"Компиляция кода Ошибка в действии "CS0029" "Cannot implicitly convert type 'string' to 'int'". [Строка: 2; Cтолбец: 11]"

Мне надо очищать ячейку по координатам. Понимаю, что проблема в типах, но синтаксис не знаю сишарпа. Беру переменную со счетчика - по логике вещей, она должна быть инт...
Вот код:

C#:
Развернуть Свернуть Копировать
var tb = project.Tables["tb"]; // Выбрать таблицу
int row = project.Variables["count"].Value; // Номер строки (получаем значение со счётчика)
int column = 0; // Столбец

tb.SetCell(column, row, ""); // Очистить ячейку
 
C#:
Развернуть Свернуть Копировать
var tb = project.Tables["tb"];
int row = int.Parse(project.Variables["count"].Value);
int column = 0;

tb.SetCell(column, row, "");
 
  • Оценить
Реакции: Stereotip
@SHILY спасибо за помощь в предыдущий раз!
Извините за наглость, но может подскажите как здесь привести к нужному типу?)

1. проверяю переменную на пустоту
2. создаю список с текста переменной
3. по циклу вставляю в поле на сайте (по пути обрезаю пробелы)

Ошибка - "Argument 1: cannot convert from 'string' to 'char'"


C#:
Развернуть Свернуть Копировать
if (project.Variables["tegs"].Value != "")
{
    // создать список с тегами
    string[] tegsList = project.Variables["tegs"].Value.Split(",");
    
    foreach(var c in tegsList)
    {
        // ставим курсор
        instance.ActiveTab.FindElementByXPath("//input[@label='Add keywords']", 0).Click();

        // записываем теги
        instance.ActiveTab.FindElementByXPath("//input[@label='Add keywords']", 0).Focus();
        instance.SendText(c.Trim(), 0);
        System.Windows.Forms.SendKeys.SendWait("{ENTER}");
    }
    
}
 
@SHILY спасибо за помощь в предыдущий раз!
Извините за наглость, но может подскажите как здесь привести к нужному типу?)

1. проверяю переменную на пустоту
2. создаю список с текста переменной
3. по циклу вставляю в поле на сайте (по пути обрезаю пробелы)

Ошибка - "Argument 1: cannot convert from 'string' to 'char'"


C#:
Развернуть Свернуть Копировать
if (project.Variables["tegs"].Value != "")
{
    // создать список с тегами
    string[] tegsList = project.Variables["tegs"].Value.Split(",");
   
    foreach(var c in tegsList)
    {
        // ставим курсор
        instance.ActiveTab.FindElementByXPath("//input[@label='Add keywords']", 0).Click();

        // записываем теги
        instance.ActiveTab.FindElementByXPath("//input[@label='Add keywords']", 0).Focus();
        instance.SendText(c.Trim(), 0);
        System.Windows.Forms.SendKeys.SendWait("{ENTER}");
    }
   
}

System.Windows.Forms.SendKeys.SendWait("{ENTER}"); вроде бы у нас принимает char, а {enter} - макрос, который может не поддерживаться в сниппете шарпа.
 
System.Windows.Forms.SendKeys.SendWait("{ENTER}"); вроде бы у нас принимает char, а {enter} - макрос, который может не поддерживаться в сниппете шарпа.

Изменил на
instance.ActiveTab.KeyEvent("Enter", "press", "");
ошибка та же
 

Там у вас в коде, в 4 строке, вообще создание списка и нет аргументов. Возможно, это ошибка, которую вызывает какой-то другой сниппет в проекте? Либо строка не 4...
 
Только что проверил, работает. Можно просто записать в ячейку Пустоту. В ПМ будет ругаться, что поле не должно быть пустым, но на деле все работает.
114377
 
  • Оценить
Реакции: Enikson

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)