C# WinForm MDI父窗口子窗口控件互操作

在窗体中定义一个类 用于存放当前窗体的对象

public static MDIParent1 mdiwin = null;

然后 将他初始化

mdiwin = this;

然后 就可以通过

主窗体类名. mdiwin

在子窗体来操作主窗体对象了 例如

MDIParent1.mdiwin.Text = "Hello World!";

到这里 还没有全部完成 你会发现 只能操作窗体对象主体 无法操作控件
还需要将我们要将要操作的控件的 modifiers 属性 设为 public
或在Designer.cs中将访问符手动从 private 改为 public
如果需要使用变量的话 也可以在变量前加 public 解决 例如

public int i = 0;

设置之后 就可以正常操作控件了 例如

MDIParent1.mdiwin.label1.Text = "Hello!";

以上 父窗体操作子窗体同理

但这并不是最好的方法 因为在调用时 他将破坏封装 你可以把它封装成方法后再进行使用


拓展与参考资料:http://blog.csdn.net/max01/article/details/1869008

Bizideal Zigbee V24 SDK C#开发手记(3)

RFID与之前部分较为相似
依旧需要引用库
也需要命名控制 此处有些不同

BIControllerManager ControllerRfid = new BIControllerManager(new BIRFIDProtocol());//生成控制实例,并指定相关协议。BIRFIDProtocol射频RFID协议。

开始接收

this.ControllerRfid.PacketReceived += ctrlrfid_PacketReceived;this.ctrlrfid.OpenPort(this.cmbRfid.Text, 9600, Parity.Even, 8, StopBits.One);//射频(RFID)串口号,波特率是9600,偶校验,数据位8,停止位1this.ctrlrfid.StartReceiver();

处理接收到的数据

void ctrlrfid_PacketReceived(object sender, BIPacketReceivedEventArgs e){ //添加一个线程 防止用户界面卡死 this.BeginInvoke(new Action(() => { //解析数据包 BIRfidUpgoingPacket Packet = BIRfidUpgoingPacket.ParseFromBinary(e.BinaryData); if (Packet != null) { byte channel = Packet.AntennaChannel; //如果读取成功 if (Packet.TagCardState == BizIdeal.Data.BIRFIDTagReadResult.Succeeded) { //如果包为标签 if (Packet.DataList[0].SensorType==BISensorType.RFID_15693_Tag) { this.lblId.Text = Packet.TagID; } //如果包为数据 if (Packet.DataList[0].SensorType == BISensorType.RFID_15693_Data) { this.txtData.Text = BitConverter.ToString(Packet.BlockData); } } //如果没有读到 else if (Packet.TagCardState == BIRFIDTagReadResult.NoCard) { this.lblId.Text = "NoCard"; this.txtData.Text = "00-00-00-00"; } else if (Packet.TagCardState == BIRFIDTagReadResult.Error) { this.lblId.Text = "Error"; this.txtData.Text = "00-00-00-00"; } } }), null);

读取标签

this.ctrlrfid.RFID.ReadTag(0xffff, 0, BIRfidReadMode.Manual15693);//第一位短地址 此处使用广播//第二位通道//第三位读取模式,手动 //BIRfidReadMode.Auto15693(自动模式)

读取数据

this.ctrlrfid.RFID.ReadDataBlock(0xffff, 0, 0, BIRfidReadMode.Manual15693);//第一位短地址//第二位通道//第三位数据块//第四位读取模式,手动

写入数据

this.ctrlrfid.RFID.WriteDataBlock(0xffff, 0, 0, data);//第一位短地址//第二位通道//第三位数据块//第四位数据内容

C# WinForm 界面相关(杂-1)

设置窗体整体透明度

this.Opacity = 0.1;

设置窗体Background为透明

this.BackColor = Color.White;this.TransparencyKey = Color.White;

隐藏窗体标题栏和边框

this.FormBorderStyle = FormBorderStyle.None;

一个例子

double i = 1.0;private void timer1_Tick(object sender, EventArgs e){i = i - 0.1;this.Opacity = i;}

C# WinForm MDI窗体基本使用

在父窗体中显示子窗体

Form1 f1 = new Form1();f1.MdiParent = this;f1.Show();

水平平铺各窗体

LayoutMdi(MdiLayout.TileHorizontal);

垂直平铺各窗体

LayoutMdi(MdiLayout.TileVertical);

层叠排列各窗口

LayoutMdi(MdiLayout.Cascade);

排列各窗口

LayoutMdi(MdiLayout.ArrangeIcons);

C#中操作MS SQL

先要对相关的类进行引用

using System.Data.Sql;using System.Data.SqlClient;using System.Data.SqlTypes;

命名连接

SqlConnection sqlCon;

打开连接

sqlCon.Open();

然后连接数据库

string sqlinfo = @"Data Source=(localdb)\v11.0;Initial Catalog=Demo1;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";sqlCon = new SqlConnection(sqlinfo);

查询数据库

SqlDataAdapter select = new SqlDataAdapter("select * from _Users", sqlcon);select.SelectCommand.ExecuteNonQuery();

执行语句

SqlDataAdapter update = new SqlDataAdapter("Update _Users set _='admin' where _Id = 1", sqlcon);update.SelectCommand.ExecuteNonQuery();

最后 操作完之后记得断开与数据库的连接 节省资源

sqlCon.Close()

MS SQL 基本操作语句-查增删改

查询所有

select * from 表名

条件查询

select * from 表名 where 条件

增加新行

insert into 表名 values('列一内容','列二内容','列三内容')

修改信息

update 表名 set 内容 where 条件

删除信息

delete from 表名 where 条件


例子:条件写法

delete from _Table where _Id = 1

需要注意

  • 语句中字符串需要使用英文单引号 ‘ ‘ 形如
  • 'Text'
  • 列名表名最好使用下划线 _ 作为开头 形如
  • _Users

Bizideal Zigbee V24 SDK C#开发手记(2)

当多块节点板连接同一个协调器的时候 可能会出现返回数值不正常的情况

这可能是由于烧写不当所导致的 可以通过接受数据时添加一个条件来解决

for (int i = 0; i < Packet.DataList.Count; i++){if (Packet.DataList[i].SensorType == BISensorType.OnBoardHumiditySensor_SHT10 && shortAddress == 38400){Single Humidity = Packet.DataList[i].GetFloatValue();}}

此外烧录时需要注意不能出现BoardID相同的情况

当多块节点板连接同一个协调器的时候 也有可能出现控制不灵的情况

这可能是获取到的短地址并非需要控制的节点板的短地址的原因

可以通过设定固定的短地址来解决

ushort shortAdsress = 38400;Controller.DCMotor.SetAction(shortAddress, BIDCMotorAction.Stop);

Bizideal Zigbee V24 SDK C#开发手记(1)

在开发时需要引用 BIControlManager.dll BIData.dll BIProtocols.dll三个库 并且在代码主体前引用。

using BizIdeal.Data; using BizIdeal.Protocols; using BizIdeal.Protocols.Packets; 

命名控制

BIControllerManager con = new BIControllerManager(new BI25sProtocol());

打开端口 订阅接收的包 开始接收

con.OpenPort(comboBox1.Text, 38400, Parity.Even, 8, StopBits.One);//打开端口("串口(注意大写)",波特率,校验位(为偶),链表,停止位)con.PacketReceived += con_PacketReceived;con.StartReceiver();

为了保证连接和传输的稳定性最好不要使用

DataReceived

改为使用

PacketReceived

可以使用for循环来比对数据包中的传感器类型 以便获取传感器的数据

for (int i = 0; i < Packet.DataList.Count; i++){}

可以在上述的for循环中通过if语句比较来判断并获取传感器类型和获取数据

if (Packet.DataList[i].SensorType == BISensorType.OnBoardHumiditySensor_SHT10){ Single Humidity = Packet.DataList[i].GetFloatValue();}

可以通过将Single设为公共变量 并且添加到Timer中 实现实时刷新

private void timer_Tick(object sender, EventArgs e){ Humidity_Lable.Text = Convert.ToString(Humidity);}

设计的递进——说下鼠标

这是我在人人爱设计的Mooc作业


最早的鼠标是由斯坦福研究院所发明的,叫做“用于显示器系统的X-Y轴位置指示器”(这名字格外诡异是不是),那么最早做出商业化产品鼠标的公司是什么呢?猜猜看咯。

是富士施乐。没错就是做打印机的富士施乐,是用在由富士施乐实验室开发的图形化操作系统计算机Alto上面。

然后再后面的剧情,看过《乔布斯传》的小伙伴大概已经知道了,某日老乔去参观富士施乐实验室,然后深深的被图形化操作系统所吸引,然后给自家开发的计算机也用上了图形化操作系统,至此苹果的电脑就有了鼠标。(啥,你说Windows?那是后面的事情了,感兴趣的话自己查咯。)

所以这里我就用苹果的历代鼠标来举例咯。

(以下图片是Apple Mice CSS的截图 感兴趣可以去这里看哦)

第一世代:与用户交互的方盒子

这是最早的Lisa机和Mac机上的鼠标

就是一个带有按钮的方盒子 很简单明了

用户通过这个方盒子与计算机与图形界面操作系统进行交互

但是这在计算机历史上的一个巨大的进步 用户不再需要输入复杂的代码就可以与计算机进行交互 所有普通人可以使用电脑了

可以说鼠标是一个伟大的发明嗯

第二世代:舒适 圆润起来

这个时候 已经开始考虑舒适和人体工学了

比如ADB一代的前端已经开始有了倾斜度 开始贴合手掌了

再比如ADB二代开始变得圆润并且符合人体工程学 基本已经和现代的鼠标的理念差不多

因为舒适是大家的需求

第三世代(现代):无线传输便利以及美观

我们可以发现 整体的形状基本上对于ADB2没有啥特别大的变化了

但是外观变得更加流畅更像是一个整体 更美 更充满科技感和未来感

同时无限传输也让我们更加方便 因为摆脱了线的束缚

(另外Magic Mouse是现售产品 已经出到第二代了)

不知道大家发现了没有,鼠标的发展路径是这个样子的:

从功能性(方便使用),到舒适性(人体工学),再到便利性与美观性(便捷,好看)。

我们似乎可以在很多东西上,都看到这样的一个发展过程,因为这是一个需求的的递增的过程。

设计,是用来满足人们的需求的。

设计,是用来改善这个世界的。

就酱。

阿里通讯亲卡使用体验

我在这里

https://detail.tmall.com/item.htm?id=43061286155&spm=a1z09.2.0.0.keEg3R&_u=q1mvq2n85452

购入的电信(CDMA2000)制式3G的 在电信定制机华为C8816上正常使用

只花了十五块呢


好了其他的过一段再说

包括资费 通话质量之类的