8,737
社区成员
发帖
与我相关
我的任务
分享
<StackPanel Name="spWorkSheet" Margin="5"></StackPanel>
public class MyButton
{
public string btnText {get;set; }
public string btnName {get; set;}
public string btnCommand{get;set;}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
List<MyButton> btns = new List<MyButton>();
MyButton btn1 = new MyButton() { btnText = "Button1", btnName = "Button1", btnCommand = "Button1_Click" };
MyButton btn2 = new MyButton() { btnText = "Button2", btnName = "Button2", btnCommand = "Button2_Click" };
MyButton btn3 = new MyButton() { btnText = "Button3", btnName = "Button3", btnCommand = "Button3_Click" };
btns.Add(btn1);
btns.Add(btn2);
btns.Add(btn3);
foreach (MyButton item in btns)
{
Button btn = new Button()
{ Content = item.btnText, Name = item.btnName, Height = 30, Margin = new Thickness(30, 5, 30, 0) };
btn.Click += new RoutedEventHandler(item.btnCommand); // 这个地方不知道怎么用
spWorkSheet.Children.Add(btn);
}
}
private void Button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button1 is clicked.");
}
private void Button2_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button2 is clicked.");
}
private void Button3_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button3 is clicked.");
}
Button button = new Button();
button.Background = Brushes.Aqua;
button.Content = "+1";
button.Width = 50;
button.Height = 20;
button.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;
button.VerticalAlignment = System.Windows.VerticalAlignment.Bottom;
button.Margin = new Thickness(0,0,50,50);
button.Click += button_Click;//button_Click是一个符合Button点击委托类型的方法,给了就行了,下边写这个方法
private void button_Click(object sender, RoutedEventArgs e)
{
//do something...
}
<StackPanel>
<TextBox Height="25" TextAlignment="Right" Text="{Binding Path=Value, Mode=TwoWay}" />
<WrapPanel x:Name="ButtonsPanel" Background="Azure" ItemWidth="50" ItemHeight="50" />
</StackPanel>
private string _value;
public string Value
{
get { return _value; }
set
{
_value = value;
OnPropertyChanged("Value");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public Window1()
{
Value = "";
this.DataContext = this;
InitializeComponent();
InitializeButtons();
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private void InitializeButtons()
{
// 动态生成9个按钮
for (int i = 1; i < 10; i++)
{
var newButton = new Button()
{
Content = i,
Width = 40,
Height = 40,
Tag = i, // 用于区分按钮
};
// 动态添加事件处理
newButton.Click += Button_Click;
ButtonsPanel.Children.Add(newButton);
}
}
// 该处理执行按钮的单击事件
private void Button_Click(object sender, RoutedEventArgs e)
{
// 取得按钮的Tag
var number = (int)((Button)sender).Tag;
Value += number.ToString();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
var btn = sender as Button;
var btnName = btn.Name;
var msg = String.Format("{0} is clicked.", btnName);
MessageBox.Show(msg );
}