c# - 如何制作自己的事件处理程序?

标签 c# .net event-handling

我正在用 C# 制作一个 Windows 窗体项目,我在其中制作了一个继承 System.Windows.Forms.Label 的类 LabelX,然后添加了一个属性 浮点型质量

现在,我的问题是,当 Mass 的值发生变化时,我该如何处理。

例如:
当用户输入值小于零
我想发出一条消息,即“质量不能为零或负数”

最佳答案

如果我的解释是正确的,那么它有两个部分。首先,您需要检测无效值并抛出异常。其次,您需要在属性更改时引发事件。这可以通过以下方式实现。

private float mass;
public float Mass
{
    get
    {
        return this.mass;
    }

    set
    {
        if (value <= 0.0F)
        {
            throw new ArgumentOutOfRangeException("Mass cannot be zero or negative.");
        }

        if (this.mass != value)
        {
            this.mass = value;
            OnMassChanged(EventArgs.Empty);
        }
    }
}

public event EventHandler MassChanged;

protected virtual void OnMassChanged(EventArgs args)
{
    var handler = this.MassChanged;
    if (handler != null)
    {
        handler(this, args);
    }
}

要在输入无效时显示一条消息,您应该在调用 set Mass 和捕获 ArgumentOutOfRangeException

关于c# - 如何制作自己的事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4187238/

相关文章:

c# - 将 AddRange 用于新的 List<string>

javascript - jQuery : Passing a method directly to the on event handler isn't working

c# - .NET Core 和 .NET Framework 交互

c# - ConfigurationManager.OpenExeConfiguration - 是否可以打开和编辑app.config?

c# - #pragma 警告禁用和恢复

javascript - 为什么不先卸载火力?

delphi - Application.OnIdle 继续执行

c# - 为什么 try/finally 而不是 "using"语句有助于避免竞争条件?

java - 使用 AD 凭据输入表单字段而不是浏览器集成身份验证窗口的不良做法?

c# - 是否必须根据 HTTP 请求处理 Windows.Web.Http.HttpClient?