C# 关于自定义按钮
我想制作一个按钮(C#winform): usercontrol中的代码:C# 关于自定义按钮,c#,button,user-controls,C#,Button,User Controls,我想制作一个按钮(C#winform): usercontrol中的代码: public partial class UserControl1 : Button { string sqlstr; [Description("SQL STRING")] [DefaultValue(typeof(string), "")] public string SqlStr { get { return sqlstr; } set {
public partial class UserControl1 : Button
{
string sqlstr;
[Description("SQL STRING")]
[DefaultValue(typeof(string), "")]
public string SqlStr
{
get { return sqlstr; }
set { sqlstr = value; }
}
private void button1_Click(object sender, EventArgs e)
//如果我将其改为overideonclick(EventArgs e),问题仍然存在
//存在
主框架中的代码:
this.btn_del = new mybutton.UserControl1();
this.btn_del.Click += new System.EventHandler(this.btn_del_Click);
......
private void btn_del_Click(object sender, EventArgs e)
{
string txtid =txt_id.Text;// a label called txt_id in my frame
string strsql = "delete from myTable where id='" + txtid + "'";
btn_del.SqlStr = strsql;
}
当大型机有多个按钮时,为什么自定义按钮不起作用?
(只有一个按钮接收SqlStr,其他按钮不接收任何内容)
如果框架中有另一个按钮
私有无效btn\u插入\u单击(对象发送者,事件参数e)
{
string txtid=txt\u id.Text;//我的框架中名为txt\u id的标签
字符串strsql=“insert into mytable(…)value(…)”;btn_insert.SqlStr=strsql;
}
用户控件无法接收SqlStr,我不清楚您在这里要实现什么。但我会尽力解释发生了什么
public class UserControl1 : Button {
string sqlstr;
[Description("SQL STRING")]
[DefaultValue(typeof (string), "")]
public string SqlStr {
get { return sqlstr; }
set { sqlstr = value; }
}
protected override void OnClick(System.EventArgs e) {
base.OnClick(e);
MessageBox.Show(sqlstr);
}
}
我简化了代码,只证明UserControl收到了正确的sql语句。创建类并生成项目后,应该能够将UserControl1从工具箱拖到窗体上,将其命名为btn_del
,然后双击它以创建事件处理程序:
void btn_del_Click(object sender, EventArgs e) {
string txtid = txt_id.Text;
string strsql = "delete from myTable where id='" + txtid + "'";
btn_del.SqlStr = strsql;
}
现在,当单击按钮时,执行将从覆盖的OnClick开始。它的第一行是
base.OnClick(e);
基本的OnClick方法的一部分是执行附加到其Click
事件的任何事件处理程序。因此,它将执行btn\u del\u Click
方法。此方法将设置控件的SqlStr
属性。当btn\u del\u Click
完成时,将继续执行重写的OnClick
方法。它将显示保存在SqlStr
属性中的sql语句
我用两个按钮和两个事件处理程序尝试过。单击Delete按钮时,将显示Delete语句。单击Insert按钮时,将显示Insert语句
我不确定这是否是你所期望的。如果不是,请解释你预期会发生什么。如果是,但你看到了其他事情发生,请告诉我们发生了什么。我不清楚你在这里想要实现什么。但我会尽力解释发生了什么
public class UserControl1 : Button {
string sqlstr;
[Description("SQL STRING")]
[DefaultValue(typeof (string), "")]
public string SqlStr {
get { return sqlstr; }
set { sqlstr = value; }
}
protected override void OnClick(System.EventArgs e) {
base.OnClick(e);
MessageBox.Show(sqlstr);
}
}
我简化了代码,只证明UserControl收到了正确的sql语句。创建类并生成项目后,应该能够将UserControl1从工具箱拖到窗体上,将其命名为btn_del
,然后双击它以创建事件处理程序:
void btn_del_Click(object sender, EventArgs e) {
string txtid = txt_id.Text;
string strsql = "delete from myTable where id='" + txtid + "'";
btn_del.SqlStr = strsql;
}
现在,当单击按钮时,执行将从覆盖的OnClick开始。它的第一行是
base.OnClick(e);
基本的OnClick方法的一部分是执行附加到其Click
事件的任何事件处理程序。因此,它将执行btn\u del\u Click
方法。此方法将设置控件的SqlStr
属性。当btn\u del\u Click
完成时,将继续执行重写的OnClick
方法。它将显示保存在SqlStr
属性中的sql语句
我用两个按钮和两个事件处理程序尝试过。单击Delete按钮时,将显示Delete语句。单击Insert按钮时,将显示Insert语句
我不确定这是否是你所期望的。如果不是,请解释你预期会发生什么。如果是,但您看到其他事情发生,请告诉我们发生了什么。Metro?WinForms?WPF?银灯?ASP.Net?MonoTouch?您有SQL注入漏洞。键入
3'或1=1--代码>进入你的txt_id文本框会导致不好的事情发生。当一个框架中有多个按钮时,它具体是如何不起作用的?它是否报告错误?它是否执行了错误的SQL?您希望button1\u Click事件处理程序如何运行还不清楚。您必须替代OnClick。Metro?WinForms?WPF?银灯?ASP.Net?MonoTouch?您有SQL注入漏洞。键入3'或1=1--代码>进入你的txt_id文本框会导致不好的事情发生。当一个框架中有多个按钮时,它具体是如何不起作用的?它是否报告错误?它是否执行了错误的SQL?您希望button1\u Click事件处理程序如何运行还不清楚。您必须替代OnClick。
public class UserControl1 : Button {
string sqlstr;
[Description("SQL STRING")]
[DefaultValue(typeof (string), "")]
public string SqlStr {
get { return sqlstr; }
set { sqlstr = value; }
}
protected override void OnClick(System.EventArgs e) {
base.OnClick(e);
MessageBox.Show(sqlstr);
}
}