1

所以,当用户点击“StyledStringElement”时,我试图打开一个电子邮件界面——为此,我一直在调用点击事件,但我得到了错误——

“错误 CS1502:‘MonoTouch.Dialog.Section.Add(MonoTouch.Dialog.Element)’的最佳重载方法匹配有一些无效参数 (CS1502)”

“错误 CS1503:参数#1' cannot convert无效”表达式键入 `MonoTouch.Dialog.Element' (CS1503)"

我正在使用的代码是 -

        section.Add(new StyledStringElement("Contact Email",item.Email) {
            BackgroundColor=UIColor.FromRGB(71,165,209),
            TextColor=UIColor.White,
            DetailColor=UIColor.White,
        }.Tapped += delegate {
            MFMailComposeViewController email = new MFMailComposeViewController();
            this.NavigationController.PresentViewController(email,true,null);
    });

是什么导致了这个错误,我该如何解决?

4

2 回答 2

2

您需要单独初始化“StyledStringElement”

例如:

var style = new StyledStringElement("Contact Email",item.Email) {
            BackgroundColor=UIColor.FromRGB(71,165,209),
            TextColor=UIColor.White,
            DetailColor=UIColor.White,
        };

style.Tapped += delegate {
            MFMailComposeViewController email = new MFMailComposeViewController();
            this.NavigationController.PresentViewController(email,true,null);
    };

section.Add(style);
于 2013-05-02T12:54:09.193 回答
0

的返回值为new X().SomeEvent += Handlervoid因此您不能在您的部分中添加它。

不幸的是,C# 官方** 不支持在对象初始化程序中分配事件(在对象初始化程序中分配事件),因此您也不能这样做:

new X() {
    SomeEvent += Handler,
};

如果你还想同时实例化和附加,你能来的最接近的是

StyleStringElement style;
section.Add(style = new StyledStringElement("Contact Email",item.Email) {
        BackgroundColor=UIColor.FromRGB(71,165,209),
        TextColor=UIColor.White,
        DetailColor=UIColor.White,
    });

style.Tapped += delegate {
        MFMailComposeViewController email = new MFMailComposeViewController();
        this.NavigationController.PresentViewController(email,true,null);
};

** 当我正式说时,是因为我记得有些人让它在 mono c# 编译器的某些分支中工作。

于 2013-05-02T13:30:36.723 回答