怎么在项目中应用委托

委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的指针。

简单案例:文本框中只能输入数字,否则提示错误

在项目中添加Web窗体和Web用户控件。

Web用户控件前台样式:

后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace 委托的简单应用
{
    public partial class WebUserControl1 : System.Web.UI.UserControl
    {
        public Number num;
        protected void Page_Load(object sender, EventArgs e)
        {


        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            int result;

            if (int.TryParse(TextBox1.Text,out result)==false)
            {
                if (num!=null)
                {
                    this.Label1.Text = num();
                }
            }
        }
        //定义的委托
        public delegate string Number();

    }
}

然后在Web船体中引用Web用户控件,在设计页面拖进Web用户控件

Web船体的后台代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;


namespace 委托的简单应用
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {


            #region 写在if当中是不正确的,只会加载页面的时候执行一次
            /* if (!IsPostBack)
            {
                WebUserControl11.num = Error3;
            }*/
            #endregion



            //利用委托实现效果
            WebUserControl11.num = Error3;

        }


        //下面三个定义的是方法(函数及提示的错误信息)

       // P.S:三个函数方法可以直接写在Web用户控件里边
        private static string Error1()
        {
            return "输入不正确";
        }
        private static string Error2()
        {
            return "请输入数字";
        }
        private static string Error3()
        {
            return "输入的字符不是数字";
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的QT视图模型委托项目案例: 假设有一个表格,其一列显示了用户的年龄,我们想要让年龄小于18岁的行以红色显示,而年龄大于等于18岁的行以绿色显示。我们可以通过使用QT的视图模型委托来实现此目的。 首先,我们需要定义一个自定义的委托类,该类继承自QStyledItemDelegate类。在该类,我们将实现一个paint()函数,该函数将会在每次需要绘制表格项时被调用。 ```cpp class AgeDelegate : public QStyledItemDelegate { public: void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override { // 获取年龄值 int age = index.data(Qt::DisplayRole).toInt(); // 设置画笔颜色 if (age < 18) { painter->setPen(QColor("red")); } else { painter->setPen(QColor("green")); } // 调用基类的paint()函数进行绘制 QStyledItemDelegate::paint(painter, option, index); } }; ``` 接下来,我们需要在主窗口创建一个表格,并为其设置一个QStandardItemModel模型。然后,我们将会为该模型的第二列(即年龄列)设置我们刚刚定义的委托类。 ```cpp // 创建表格和模型 QTableView *tableView = new QTableView(this); QStandardItemModel *model = new QStandardItemModel(4, 2, this); // 设置表头 model->setHeaderData(0, Qt::Horizontal, tr("Name")); model->setHeaderData(1, Qt::Horizontal, tr("Age")); // 设置模型数据 model->setData(model->index(0, 0), "John Doe"); model->setData(model->index(0, 1), 25); model->setData(model->index(1, 0), "Jane Smith"); model->setData(model->index(1, 1), 17); model->setData(model->index(2, 0), "Bob Johnson"); model->setData(model->index(2, 1), 30); model->setData(model->index(3, 0), "Mary Williams"); model->setData(model->index(3, 1), 16); // 为模型的第二列设置委托 tableView->setItemDelegateForColumn(1, new AgeDelegate(this)); // 将模型设置给表格 tableView->setModel(model); ``` 现在,我们运行程序,就可以看到表格年龄小于18岁的行以红色显示,而年龄大于等于18岁的行以绿色显示。这就是通过QT的视图模型委托实现的。 注意:本示例并不完整,只是为了演示视图模型委托的基本用法。在实际应用,您可能需要对上述代码进行进一步的修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值