You will have to instantiate each object.
However, you can then implement a 'clicked' method for a set of buttons, something like:
List<BTool> theTools = new List<BTool>();
BTool mapTool1 = new MapTool1(); //assumes that MapTool1 inherits from BTool
BTool mapTool2 = new MapTool2();
//and so on
If you're using WPF or WinForms, the exact code will be slightly different. Assuming you're using WPF, you'll do something like this in the xaml:
<StackPanel Name="ToolButtons" /> //make sure to orient your tools how you like, vertical or horizontal
and then in the constructor of the WPF form:
foreach (BTool b in theTools){
Button button = new Button();
button.Title = b.Name; //or .ToString, whatever
button.Clicked += b.ClickedEvent; //where ClickedEvent is a method in BTool that implements the interface for the Clicked event
ToolButtons.Children.Add(button);
}