C#仿QQ皮肤

source:http://www.cnblogs.com/sufei/archive/2010/04/16/1713562.html

       C#仿QQ皮肤-实现原理系列文章导航
                                                             
http://www.cnblogs.com/sufei/archive/2010/03/10/1682847.html    

 

                                                       C#仿QQ皮肤-皮肤使用须知    

 

              皮肤发布有一段时间了,多多少有一些朋友使用皮肤,也多多少少的也出现了不少问题,在这里我给大家表示歉意了,这些问题我会尽快解决的,因为我个人能力有现,还希望大家能都参与进来,我在这里给大家写点使用方法上,和技巧上的东西,希望能给大家以帮助,我以问答的方法来解决问题吗?

1.皮肤的控件为什么不全?

   因为咱们的皮肤还是测试版本,现在只能使用一些常用的控件,其它控件我会尽快的更新上去,希望大家能理解。

2.皮肤的为什么在Windows2003和Visit下有边框,很难看?

   这个问题我正在解决,目前已有几个解决的方法,只是不太理想,大家请等待一下我会尽快解决这个问题,也希望大家尽量先在Xp系统下使用。因为Windows有透明效果所以不太方便处理;

3.皮肤的Combox控件怎么不能同时绑定Value和Text呢?

   大家肯定是也像平时一样这样写代码了吧

  // _dt_two是您自己加载过来的数据源
            comboBox1.DataSource  =  _dt_two;
            comboBox1.ValueMember 
=   " id " ;
            comboBox1.DisplayMember 
=   " name " ;

 

如果是正常的控件这样是没有问题的,但是我这个控件把里面的数据绘制了一下,加上了一个光标根随的效果,也应用上了皮肤,这样的话就不能使用这样的语句呢?

目前只能绑定Value值而不能绑定Text值,绑定的text值是不会正常显示的,这样问题我会想办法解决,也希望大家多出建议,我暂时给大家一个可行的方案

  我们可以使用Linq来解决

  大家还像平时写查询方法一样只查出id和name这样一个表

然后在帮助的时间这样绑定

代码
  // _dt_two是您自己加载过来的数据源
  for  ( int  i  =   0 ; i  <  _dt_two.Rows.Count; i ++ )
                {
                    comboBox1.Items.Add(_dt_two.Rows[i][
" uLogin " ].ToString().Trim());
                }

                
// 设置当前项
                 if  (comboBox1.Items.Count  !=   0 )
                {
                    comboBox1.SelectedIndex 
=   0 ;
                }

 

大家在想这样写不用只能用Text属性了吗?其实不是的,我提供一个类,大家可以使用他来取得相应的Value值 而不用去查询数据库

代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Text;
using  System.Data;

namespace  BaseFunction
{
    
///   <summary>
    
///  处理一些控件的方法
    
///   </summary>
     public   class  UI_Misc_Helper
    {
        
///   <summary>
        
///  返回选中的Comobox中Text对应的value值或者是value对应的Text值
        
///   </summary>
        
///   <param name="combobox"> combobox对象 </param>
        
///   <param name="dt_tables"> 要查询的表 </param>
        
///   <param name="Text"> 要查询的字段 </param>
        
///   <param name="Value"> 要返回的字段 </param>
        
///   <returns> int </returns>
         public   static   string  GetComboBoxValueOrText(CRD.WinUI.Misc.ComboBox combobox, DataTable dt_tables,  string  Text,  string  Value)
        {
            
// 从dt_tables中查询出来Text对应是Value值
            var result  =  dt_tables.AsEnumerable().Where(fi  =>  fi[Text.ToString().Trim()].ToString().Trim() 
                
==  combobox.Text.ToString().Trim()).FirstOrDefault();
            
// 把Value值返回
             return  result[Value.ToString().Trim()].ToString().Trim();
        }

    }
}

 

  使用方法也很简单

 

string  value = UI_Misc_Helper.GetComboBoxValueOrText(comboBox3, _dt_two,  " uLogin " " uId " );

 

  这中间自然 是会有一些问题比如说有同名的就不好办了,如果真是那样的话就不建议大家使用这个了,不好意思 目前只能先到这里,也希望大家帮助我修改一下,并把解决方法告诉我,先谢谢

4.为什么我又加了一些控件会就都 不管用了?

  呵,在这里我是不建议大家修改的,因为现在还是测试,有很多东西不完整,所以大家不要自己重写和改动,谢谢大家配合;

       注:希望大家有什么好的建议和意见,提供给我,很是感谢,可以给我留言或是QQ联系我;如果大家在使用过程中还有其实问题的话可以直接在这里反应;

 

 5.窗体不能居中怎么办?

  这个暂时给大家一段代码吧, 我们在下次版本更新到窗体里

 

代码
  this .Location  =   new  Point((System.Windows.Forms.Screen.GetWorkingArea( this ).Size.Width  -   this .Width)  /   2 ,
                    (System.Windows.Forms.Screen.GetWorkingArea(
this ).Size.Height  -   this .Height)  /   2 );
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值