Вывести динамическую Inline клавиатуру в столбец в телеграм боте
помогите сделать Inline клавиатуру в телеграмм боте, что бы все кнопки были в столбец. Я сделал, но вывод идёт в строку.
private static InlineKeyboardButton[][] CategoryKeyboard(string[] stringArray)
{
var keyboardInline = new InlineKeyboardButton[1][];
var keyboardButtons = new InlineKeyboardButton[stringArray.Length];
for (var i = 0; i < stringArray.Length; i++)
{
keyboardButtons[i] = new InlineKeyboardButton
{
Text = stringArray[i]
};
}
keyboardInline[0] = keyboardButtons;
return keyboardInline;
}
Ответы (1 шт):
Автор решения: A K
→ Ссылка
Как-то так делаю:
private static InlineKeyboardButton[][] CategoryKeyboard(string[] stringArray)
{
var rows = new List<InlineKeyboardButton[]>();
for (var i = 0; i < stringArray.Length; i++)
{
rows.Add(
new[]
{
InlineKeyboardButton.WithCallbackData("buttonTile", $"Command={stringArray[i]}"),
},
);
}
return rows.ToArray();
}
PS По памяти, могут быть небольшие ошибки - нет под рукой студии.
Update
Вообще, в этой разметке нет ничего сакрального. Вы можете потренироваться на обычном int[][] чтобы убедиться что всё делаете правильно - это проще, чем запускать отладку бота.
Вот:
void Main()
{
var arr = CategoryKeyboard(new[] {1,2,3,4});
arr.Dump();
}
// Define other methods and classes here
private static int[][] CategoryKeyboard(int[] nums)
{
var rows = new List<int[]>();
for (int i = 0; i < nums.Length; i++)
{
rows.Add(new int[] {nums[i]});
}
return rows.ToArray();
}
