C#创建动态键盘电报机器人C#中的键盘按键没有内嵌按钮
问题描述:
如何创建一个动态的键盘按钮,我找到了一些代码,但他们对于内联按钮? 我想从数据库中获取数据,各行中创建一个按钮,键盘按键C#创建动态键盘电报机器人C#中的键盘按键没有内嵌按钮
var keyboard = new ReplyKeyboardMarkup(
new[] {
new[]{
new KeyboardButton("a"),
},
new[]{
new KeyboardButton("b"),
},
});
答
第一部分(即增加从数据库的按钮)是你写相同的代码确定。
第二部分(即改变按钮布局)恐怕是不可能的,因为据我所知。因为布局是由客户端设备中的Telegram应用程序完成的,并且基于很多事情,包括设备屏幕大小,并可能在不同的应用程序版本中更改。
答
private static ReplyKeyboardMarkup calendarMenu;
SqlDataAdapter sc3 = new SqlDataAdapter("select KeyboardName from dbo.Keyboards", SqlConnection);
DataTable dt3 = new DataTable();
sc3.Fill(dt3);
int keyboardRows = 0;
if (dt3.Rows.Count % 2 == 0)
{
keyboardRows = dt3.Rows.Count/2;
}
else
{
keyboardRows = (dt3.Rows.Count/2) + 1;
}
KeyboardButton[][] kbc = new KeyboardButton[(keyboardRows + 1)][];
KeyboardButton[] keys = new KeyboardButton[dt3.Rows.Count];
var i = 0;
foreach (DataRow cn3 in dt3.Rows)
{
keys[i] = new KeyboardButton(cn3["KeyboardName"].ToString());
i++;
}
for (int r = 0, s = 0; r < keyboardRows; r++, s++)
{
if (dt3.Rows.Count % 2 == 0)
{
kbc[r] = new KeyboardButton[] {keys[r + s], keys[r + s + 1]};
}
else
{
if ((r + s) != keys.Length)
{
kbc[r] = new KeyboardButton[] { keys[r + s], keys[r + s + 1] };
}
else
{
kbc[r] = new KeyboardButton[] { keys[r + s] };
}
}
}
kbc[keyboardRows] = new KeyboardButton[] { new KeyboardButton("Return to Main Menu"), };
calendarMenu = new ReplyKeyboardMarkup
{
Keyboard = kbc
};
欢迎SO。如果您有任何具体问题,请了解该技术的基本知识以及回来。 –