windows开发总结

磕磕绊绊学了那么久了,一直懒得写文章,遇到技术问题,总是在别人的博客上找到答案。现在才体会到写博客的好处,既是对个人经验的总结,也使对别人的启示与帮助,同时也利于自己今后方便的查阅。

现在打算总结一些,以后会不断补充,以后遇到问题,也可以查自己的博文了,呵呵


1、获取当前程序目录

        private string GetApplicationDirectory()
        {
            return System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);
        }


2、windows 绘制字符串

   当窗体上放置picturebox等容器控件时,在窗体上重写OnPaint ( PaintEventArgs e )事件,绘制的图形将被picturebox覆盖,此时应直接在容器控件上绘制,具体代码如下:

   //注册事件

    this.pictureBox1.Paint+=new PaintEventHandler(pictureBox1_Paint);

  //绘制“Hello World!”字符串
  private void pictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
        {
     //不使用样式,在当前窗体上绘制文字      
            Graphics g = e.Graphics;
            Brush brush = new SolidBrush(Color.LawnGreen);
            Font font = new Font("楷体GB-2312", 15, FontStyle.Bold);
            g.DrawString("Hello World!", font, brush, 20, 20);
            brush.Dispose();
            font.Dispose();

       }


3、IIS权限

使用web服务时,程序直接运行正常,但部署在IIS上后,报错“客户端f发现响应类型为text/html,实际应为text/xml”,出现这种情况通常是由于IIS权限问题导致。

解决办法:

1、允许匿名访问,并设置匿名访问用户具有访问该站点的权限(通常该用户为IUSER),根据需要赋予读写权限;

2、设置IIS临时文件夹权限改为“读写”(该文件夹位于C:\Windows\Microsoft.NET\Framework\v2.0.50727下);


4、xml文件处理

1)使用 XmlTextReader 和 XmlTextWriter 代替 XmlDocument(因为它占用的内存较多)。 
2)指定 XmlReaderSettings 和 XmlWriterSettings 的设置以改善性能。如果可以使用,IgnoreWhitespace 和 IgnoreComments 两个属性值将显著提高性能。 
3)使用 UTF-8、ASCII 和 UTF-16 字符编码,它们比 ANSI 和 Windows 代码页编码更快。 
4)避免使用用于分析的架构,因为这种架构需要更多的验证工作。 
5)在从 XML 源填充 DataSet 时,应将列映射为属性并使用类型化 DataSet。
       填充 DataSet 时,应避免填充以下各项:
        架构推理;
       嵌套表。;
        多个 DateTime 列。为了获得更好的性能,请改用 Ticks 属性值。

使用 XML 反序列化时,遵循以下准则可改善性能:
使元素和属性名尽量保持简短,因为每个字符都必须经过验证。 
基于属性数据的 XML 比基于元素数据的 XML 要快。 
如果适用,使用 XmlNodeReader..::.Skip 方法。
如果性能很重要,应考虑二进制序列化。

为 XML 序列化的每一种类型分别使用一个 XmlSerializer 实例,以减少用于搜索元数据的时间。 
由于序列化大量 XML 可能会耗尽内存,应考虑通过使用 BinaryReader 和 BinaryWriter 生成自定义二进制序列化机制。


5、xml解析及生成例子

using System.XML;

using System.IO;

//读取XML

 private void LoadXMLContent()
        {
            string mStr = testConstantStr.TestXMLValue;
            StringReader s = new StringReader(mStr);
            
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Fragment;
            settings.IgnoreWhitespace = true;                //忽略空白
            settings.IgnoreComments = true;                  //忽略注释
            XmlReader reader = XmlReader.Create(s, settings);

            while (reader.Read())
            {

                 if(reader.IsStartElement())

{

                switch (reader.Name)
                {
                    case "PATNAME":
                           label1.Text = string.Format("姓名:{0}", reader.ReadString());
                            break;
                    case "cbxEducateDegree":
                         label3.Text = string.Format("教育程度:{0}", reader.ReadString());
                        break;
                    default:
                        break;
               }

}

            }
            reader.Close();
        }

//生成XML

        public string CreateXMLContent()
        {           

           //StringBuilder output = new StringBuilder();  //使用stringBuilder无法指定xml编码格式
            MemoryStream output = new MemoryStream();
            XmlWriterSettings setting = new XmlWriterSettings();
            Encoding mEncoding=Encoding.GetEncoding("GB2312");
            setting.Encoding = mEncoding;
            setting.Indent = false;
            setting.OmitXmlDeclaration = false;
            XmlWriter writer = XmlWriter.Create(output, setting);
            writer.WriteStartDocument();
            writer.WriteProcessingInstruction("xml-stylesheet"," href=\"xml文件格式.xsl\" type=\"text/xsl\"");           
            writer.WriteStartElement("Students");
            writer.WriteComment("学生类,描述学生整体性信息");
            writer.WriteStartElement("Student");
            writer.WriteComment("描述学生个体信息");
            writer.WriteElementString("id", "001");
            writer.WriteElementString("name", "tom");
            writer.WriteEndElement();
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Flush();
            writer.Close();
            byte[] b=output.ToArray();
            string str = System.Text.Encoding.Default.GetString(b,0,b.Length);
            return str;
        }

生成结果为:

<?xml version="1.0" encoding="utf-16"?>

<?xml-stylesheet  href="xml文件格式.xsl" type="text/xsl"?>

<Students><!--学生类,描述学生整体性信息-->

<Student><!--描述学生个体信息-->

<id>001</id>

<name>tom</name>

</Student>

</Students>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ding544935

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值