xamarin studio 中SpinButton ComBox Splid 鼠标放上去就会自动接收焦点,然后进行数值变化
公司做跨平台项目,用XamarinStudio 开发mac版本,语法还是C#,但是,尼玛XamarinStudio的控件就是坑爹啊。
其他的暂时不累赘,笔者画界面,一堆控件放到一个界面上,当超出屏幕时候,会出现竖直滚动条,当你鼠标想中键滚动时,悲剧来了,尼玛,鼠标放在一个SpinButton时候,它的值自动开始滚动,我屮艸芔茻
来来来,重写。
[System.ComponentModel.ToolboxItem(true)]
public class SpinButtonEx : Gtk.SpinButton
{
bool isPress = false;
public SpinButtonEx(double min = int.MinValue, double max = int.MaxValue, double step = )
: base(min, max, step)
{
this.Numeric = false;
} protected override void OnFocusGrabbed()
{
if (isPress) this.CanFocus = true;
else this.CanFocus = false;
base.OnFocusGrabbed();
} protected override bool OnScrollEvent(Gdk.EventScroll evnt)
{
if (!this.IsFocus) return false;
return base.OnScrollEvent(evnt);
} protected override bool OnButtonPressEvent(Gdk.EventButton evnt)
{
if (evnt.Button == ) isPress = true;
return base.OnButtonPressEvent(evnt);
} protected override bool OnFocusOutEvent(Gdk.EventFocus evnt)
{
isPress = false;
return base.OnFocusOutEvent(evnt);
}
基本思路是这样的,当这个控件获得焦点后,才会改变数值,没有获得焦点,弃之。
OnFocusGrabbed()是一个很蛋疼的函数,它会自动捕捉鼠标焦点,然后出发Scroll滚动,而且Gdk里传的是handle,这个handle甚至你没有办法去new一个,连改写都很难,更烦躁的是这个事件属于触发式,接收根本不会出发ValueChanged事件,那我只有屏蔽了,加上一个临时变量isPress来进行暂存,判断是否是鼠标点击后获得焦点,如果没有鼠标点击,抱歉,我会置之不理。
xamarin studio 中SpinButton ComBox Splid 鼠标放上去就会自动接收焦点,然后进行数值变化的更多相关文章
- Xamarin XAML语言教程Visual Studio中实现XAML预览
Xamarin XAML语言教程Visual Studio中实现XAML预览 每次通过编译运行的方式查看XAML文件效果,需要花费大量的时间.如果开发者使用XAML对UI进行布局和设计,可以通过预览的 ...
- Xamarin Studio Android 配置
原文:Xamarin Studio Android 配置 C#依托于mono平台可以实现Unix平台服务器端开发已经不是什么新鲜事了,而Xarmain公司(初始成员大多来自原Mono.MonoTouc ...
- Xamarin XAML语言教程使用Xamarin Studio创建XAML(二)
Xamarin XAML语言教程使用Xamarin Studio创建XAML(二) 使用Xamarin Studio创建XAML Xamarin Studio和Visual Studio创建XAML文 ...
- Visual Studio中创建混合移动应用程序解决方案Xamarin Portable Razor
在Visual Studio中创建混合移动应用程序的一个解决方案是使用Xamarin Portable Razor工具,这是ASP.NET MVC API针对移动设备的一个轻量级实现.Xamarin编 ...
- zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法
转载自:http://blog.csdn.net/wide288/article/details/21622183 zend studio中ctrl+鼠标左键无法转到类或函数定义文件的解决方法: ze ...
- [Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考、NuGet组件参考
[Xamarin.iOS] Visual Studio中Xamarin.iOS项目,无法加入PCL项目参考.NuGet组件参考 解决方案 目前Visual Studio中最新版本的Xamarin.iO ...
- 使用Xamarin在Visual Studio中开发Android应用
原文:使用Xamarin在Visual Studio中开发Android应用 本文使用的环境是Windows 8 Visual Studio 2012.2 1.下载Xamarin http://xam ...
- 点击图片或者鼠标放上hover .图片变大. 1)可以使用css中的transition, transform 2) 预先设置一个 弹出div. 3)弹出层 alert ; 4) 浏览器的宽度document.documentElement.clientWidth || document.body.clientWidth
变大: 方法一: 利用css属性. 鼠标放上 hover放大几倍. .kecheng_02_cell_content img { /*width: 100px; height: 133px;*/ wi ...
- ASP.Net MVC 5 in Xamarin Studio 5.2
Xamarin Studio 是一个Mono的跨平台 IDE(Integrated Development Environment),支持Wiindow和Mac,最新发布的5.2 版本支持ASP.NE ...
随机推荐
- luogu4173 残缺的字符串
there #include <algorithm> #include <iostream> #include <cstring> #include <cst ...
- (转)React 入门实例教程
作者: 阮一峰 现在最热门的前端框架,毫无疑问是 React . 上周,基于 React 的 React Native 发布,结果一天之内,就获得了 5000 颗星,受瞩目程度可见一斑. React ...
- 基于JQuery的WEB套打设计器jatoolsPrinter1.0
开发web套打应用时,如快递单打印,一般要经过以下步骤:1. 扫描快递单据,保存成一个图片文件2. 将底图作成<img>3. 在<img>上放置打印项,试着打印到打印机,观察有 ...
- Selenium WebDriver-下拉框断言
#encoding=utf-8 import unittest import time import chardet from selenium import webdriver class Visi ...
- tornado中文教程
http://docs.pythontab.com/tornado/introduction-to-tornado/ch2.html#ch2-1 python的各种库的中文教程 http://docs ...
- EOJ Monthly 2018.3
985月赛我只喜欢ECNU.jpg A. 打工时不可能打工的 Time limit per test: 2.0 seconds Memory limit: 256 megabytes 我 Ayano ...
- SpringMVC对于跨域访问的支持
原文地址:http://docs.spring.io/spring/docs/5.0.0.RC2/spring-framework-reference/web.html#mvc-introductio ...
- 筒子们,使用Protobuf优化你的协议
Protocol buffers是google提供的一种将结构化数据进行序列化和反序列化的方法,其优点是语言中立,平台中立,可扩展性好,目前在google内部大量用于数据存储,通讯协议等方面.PB在功 ...
- HDU-1529 Cashier Employment
据网上说这是到差分约束四星题... 可我觉得难吗? 比推DP方程容易... 两种约束方式,当然实现到程序就变成六种了... #include <cstdio> #include <c ...
- bzoj1076【SCOI2008】奖励关
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=1076 有n种物品等概率落下,求期望最优收益 sol: 一眼看上去就是状压dp吧QAQ数据范围 ...