第六章:按钮点击(3)

简介:

匿名事件处理程序
与任何事件处理程序一样,您可以将Clicked处理程序定义为匿名lambda函数。 这是一个名为ButtonLambdas的程序,它有一个显示数字和两个按钮的标签。 一个按钮使数字加倍,另一个减半。 通常,数字和标签变量将被保存为字段。 但是因为在定义了这些变量之后,匿名事件处理程序在构造函数中被正确定义,所以事件处理程序可以访问这些局部变量:

public class ButtonLambdasPage : ContentPage
{
    public ButtonLambdasPage()
    {
        // Number to manipulate.
        double number = 1;
        // Create the Label for display.
        Label label = new Label
        {
            Text = number.ToString(),
            FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label)),
            HorizontalOptions = LayoutOptions.Center,
            VerticalOptions = LayoutOptions.CenterAndExpand
        };
        // Create the first Button and attach Clicked handler.
        Button timesButton = new Button
        {
            Text = "Double",
            FontSize = Device.GetNamedSize(NamedSize.Large,  typeof(Button)),
            HorizontalOptions = LayoutOptions.CenterAndExpand
        };
        timesButton.Clicked += (sender, args) =>
        {
            number *= 2;
            label.Text = number.ToString();
        };
        // Create the second Button and attach Clicked handler.
        Button divideButton = new Button
        {
            Text = "Half",
            FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Button)),
            HorizontalOptions = LayoutOptions.CenterAndExpand
        };
        divideButton.Clicked += (sender, args) =>
        {
            number /= 2;
            label.Text = number.ToString();
        };
        // Assemble the page.
        this.Content = new StackLayout
        {
            Children =
            {
                label,
                new StackLayout
                {
                    Orientation = StackOrientation.Horizontal,
                    VerticalOptions = LayoutOptions.CenterAndExpand,
                    Children =
                    {
                        timesButton,
                        divideButton
                     }
                 }
             }
         };
     }
}

注意使用Device.GetNamedSize为Label和Button获取大文本。 当与Label一起使用时,GetNamedSize的第二个参数应该指示一个标签,并且当与Button一起使用时,它应该指示一个Button。 这两个元素的大小可能不同。
像以前的程序一样,这两个按钮共享一个水平的StackLayout:
201806172201590339
将事件处理程序定义为匿名lambda函数的缺点是它们不能在多个视图中共享。 (其实他们可以,但涉及一些混乱的反射代码。)

目录
相关文章
|
6月前
|
前端开发 JavaScript
鼠标点击展开详情
鼠标点击展开详情
|
6月前
|
Java Android开发
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
Android Studio入门之按钮触控的解析及实战(附源码 超详细必看)(包括按钮控件、点击和长按事件、禁用与恢复按钮)
700 0
|
6月前
|
Shell 开发工具 git
聊天功能演示系统发布后出现有些页面滚动与鼠标点击问题解决
聊天功能演示系统发布后出现有些页面滚动与鼠标点击问题解决
43 0
|
程序员 Windows
【windows编程之对话框】对话框原理,对话框的创建
【windows编程之对话框】对话框原理,对话框的创建
|
Android开发
微信公众号点击菜单出现白屏问题探究
1. 小米魅族等安卓手机白屏,苹果手机正常 2. 首次进入白屏,再次进入正常 3. 点击链接正常,点击菜单白屏
451 0
微信公众号点击菜单出现白屏问题探究
|
前端开发
前端工作小结78-点击按钮报错
前端工作小结78-点击按钮报错
60 0
前端工作小结78-点击按钮报错
|
前端开发
前端工作小结92-点击按钮报错
前端工作小结92-点击按钮报错
71 0
前端工作小结92-点击按钮报错