2017-08-31 80 views
0

如何创建一个动态的键盘按钮,我找到了一些代码,但他们对于内联按钮? 我想从数据库中获取数据,各行中创建一个按钮,键盘按键C#创建动态键盘电报机器人C#中的键盘按键没有内嵌按钮

var keyboard = new ReplyKeyboardMarkup(
    new[] { 
     new[]{ 
      new KeyboardButton("a"), 
     }, 
     new[]{ 
      new KeyboardButton("b"), 
     }, 
    }); 
+0

欢迎SO。如果您有任何具体问题,请了解该技术的基本知识以及回来。 –

回答

0

第一部分(即增加从数据库的按钮)是你写相同的代码确定。

第二部分(即改变按钮布局)恐怕是不可能的,因为据我所知。因为布局是由客户端设备中的Telegram应用程序完成的,并且基于很多事情,包括设备屏幕大小,并可能在不同的应用程序版本中更改。

0

使用InlineKeyboardMarkupInlineKeyboardButton代替它,你可以参考this example

请你的库文件下一次抬头。

0
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 
};