如何解决带有附加参数的 C# 按钮单击
我想通过单击按钮来执行某些操作。但为此我需要一个额外的参数“string[] args”。
class Video extends Model
{
public function categories(): BelongsToMany
{
return $this->belongsToMany(Category::class,CategoryVideo::class,'video_id','category_id');
}
}
DB::beginTransaction();
$video = Video::find($id);
$video->update($data);
// update categorie count
$items = $video->categories()->get(['category_id','video_count']);
foreach ($items as $item){
$item->video_count = Category::where('category_id',$item->category_id)->count();
$item->save();
//$item->update(['video_count' => Category::where('category_id',$item->category_id)->count()]);
}
DB::commit();
如果我使用这个参数,我会收到一个错误,因为我必须在 EventHandler 中以某种方式指定它,但我不知道该怎么做?
private void button1_Click(object sender,EventArgs e,string[] args)
有人可以向我解释我必须如何在这里进行吗?
解决方法
在 form.designer.cs 中使用此代码
private void InitializeComponent()
{
string[] args = new string[] { "param1","param2" };
MyButton myButton = new MyButton(args);
this.SuspendLayout();
//
//myButton
//
myButton.Location = new System.Drawing.Point(230,121);
myButton.Name = "myButton";
myButton.Size = new System.Drawing.Size(175,31);
myButton.TabIndex = 0;
myButton.Text = "Test Click";
myButton.UseVisualStyleBackColor = true;
myButton.ButtonClick += MyButton_ButtonClick;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F,13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800,450);
this.Controls.Add(myButton);
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false);
}
private void MyButton_ButtonClick(object Sender,System.EventArgs e,string[] args)
{
//do works.......
MyButton btn = Sender as MyButton;
MessageBox.Show(args[0] + " -- " + args[1] + " -- " + btn.Name);
}
并添加这个类
public class MyButton : Button
{
public event ClickEventHandler ButtonClick;
public delegate void ClickEventHandler(object Sender,EventArgs e,string[] args);
private string[] _args;
public MyButton(string[] args)
{
_args = args;
}
protected override void OnClick(EventArgs e)
{
if (ButtonClick != null)
{
ButtonClick(this,e,_args);
}
}
}
此代码完美运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。