添加项目文件。
parent
31de771504
commit
d3520976e9
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@ -0,0 +1,117 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,84 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
|
||||
namespace HuizhongLibrary.Data
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据传送
|
||||
/// </summary>
|
||||
/// <typeparam name="T">泛型</typeparam>
|
||||
public class DataEventArgs<T>:EventArgs
|
||||
{
|
||||
private int m_ID;
|
||||
public int ID
|
||||
{
|
||||
get { return m_ID; }
|
||||
set { m_ID = value; }
|
||||
}
|
||||
private string m_DeviceNo;
|
||||
public string DeviceNo
|
||||
{
|
||||
get { return m_DeviceNo; }
|
||||
set { m_DeviceNo = value; }
|
||||
}
|
||||
private string m_Name;
|
||||
public string Name
|
||||
{
|
||||
get { return m_Name; }
|
||||
set { m_Name = value; }
|
||||
}
|
||||
private T m_Data;
|
||||
/// <summary>
|
||||
/// 返回数据
|
||||
/// </summary>
|
||||
public T Data
|
||||
{
|
||||
get { return m_Data; }
|
||||
set { m_Data = value; }
|
||||
|
||||
}
|
||||
|
||||
private string m_TypeName;
|
||||
/// <summary>
|
||||
/// 出错地点
|
||||
/// </summary>
|
||||
public string TypeName
|
||||
{
|
||||
get { return m_TypeName; }
|
||||
set { m_TypeName = value; }
|
||||
}
|
||||
private string m_StackTrace;
|
||||
/// <summary>
|
||||
/// 出错对象信息
|
||||
/// </summary>
|
||||
public string StackTrace
|
||||
{
|
||||
get { return m_StackTrace; }
|
||||
set { m_StackTrace = value; }
|
||||
}
|
||||
private string m_ErrorMsg;
|
||||
/// <summary>
|
||||
/// 出错信息
|
||||
/// </summary>
|
||||
public string ErrorMsg
|
||||
{
|
||||
get { return m_ErrorMsg; }
|
||||
set { m_ErrorMsg = value; }
|
||||
}
|
||||
private bool m_IsError = false;
|
||||
/// <summary>
|
||||
/// 是否发生错误
|
||||
/// </summary>
|
||||
public bool IsError
|
||||
{
|
||||
get { return m_IsError; }
|
||||
set { m_IsError = value; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@ -0,0 +1,124 @@
|
||||
using System;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
|
||||
|
||||
namespace HuizhongLibrary.Control
|
||||
{
|
||||
|
||||
[DefaultProperty("Value"),
|
||||
ToolboxData("<{0}:DataGridRadioButton runat=server></{0}:DataGridRadioButton>"),ParseChildren(true),
|
||||
PersistChildren(false)]
|
||||
public class DataGridRadioButton : RadioButton,INamingContainer,IPostBackDataHandler
|
||||
{
|
||||
public DataGridRadioButton() : base()
|
||||
{
|
||||
this.PreRender +=new EventHandler(DataGridRadioButton_PreRender);
|
||||
}
|
||||
|
||||
private void DataGridRadioButton_PreRender(object sender, EventArgs e)
|
||||
{
|
||||
// Page.RegisterHiddenField("RadioButton_Checked", this.Checked.ToString());
|
||||
// Page.RegisterStartupScript("jsSetRadioButton_Checked", "<script type=\"text/javascript\">document.getElementById("+this.ClientID+").Checked=" + this.Checked.ToString() + ";</script>");
|
||||
// this.Attributes.Add("onclick","document.getElementById('RadioButton_Checked').value = this.Checked;");
|
||||
// 将控件注册为要求在页回发至服务器时进行回发处理的控件
|
||||
if (Page != null) Page.RegisterRequiresPostBack(this);
|
||||
}
|
||||
|
||||
#region Properties
|
||||
|
||||
private string Value
|
||||
{
|
||||
get
|
||||
{
|
||||
string val = Attributes["value"];
|
||||
if(val == null)
|
||||
val = UniqueID;
|
||||
else
|
||||
val = UniqueID + "_" + val;
|
||||
return val;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Rendering
|
||||
|
||||
protected override void Render(HtmlTextWriter output)
|
||||
{
|
||||
RenderInputTag(output);
|
||||
|
||||
}
|
||||
|
||||
private void RenderInputTag(HtmlTextWriter htw)
|
||||
{
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Id, ClientID);
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Type, "radio");
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Name, GroupName);
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Value, Value);
|
||||
if(Checked)
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Checked, "checked");
|
||||
if(!Enabled)
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Disabled, "disabled");
|
||||
|
||||
string onClick = Attributes["onclick"];
|
||||
if(AutoPostBack)
|
||||
{
|
||||
if(onClick != null)
|
||||
onClick = String.Empty;
|
||||
onClick += Page.GetPostBackClientEvent(this, String.Empty);
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Onclick, onClick);
|
||||
htw.AddAttribute("language", "javascript");
|
||||
}
|
||||
else
|
||||
{
|
||||
if(onClick != null)
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Onclick, onClick);
|
||||
}
|
||||
|
||||
if(AccessKey.Length > 0)
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Accesskey, AccessKey);
|
||||
if(TabIndex != 0)
|
||||
htw.AddAttribute(HtmlTextWriterAttribute.Tabindex,
|
||||
TabIndex.ToString(NumberFormatInfo.InvariantInfo));
|
||||
htw.RenderBeginTag(HtmlTextWriterTag.Input);
|
||||
htw.RenderEndTag();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IPostBackDataHandler Members
|
||||
|
||||
void IPostBackDataHandler.RaisePostDataChangedEvent()
|
||||
{
|
||||
OnCheckedChanged(EventArgs.Empty);
|
||||
}
|
||||
|
||||
bool IPostBackDataHandler.LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
|
||||
{
|
||||
bool result = false;
|
||||
string value = postCollection[GroupName];
|
||||
if((value != null) && (value == Value))
|
||||
{
|
||||
if(!Checked)
|
||||
{
|
||||
Checked = true;
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(Checked)
|
||||
Checked = false;
|
||||
}
|
||||
// if (postCollection["RadioButton_Checked"]!=null)this.Checked=Convert.ToBoolean(postCollection["RadioButton_Checked"]);
|
||||
return result;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using HuizhongLibrary.Common.Configuration;
|
||||
|
||||
namespace HuizhongLibrary.Data
|
||||
{
|
||||
public static class DatabaseFactory
|
||||
{
|
||||
public static Database CreateDatabase()
|
||||
{
|
||||
return CreateDatabase("ConnectionString");
|
||||
}
|
||||
|
||||
|
||||
public static Database CreateDatabasel()
|
||||
{
|
||||
return CreateDatabase("BaseConnectionString");
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static Database CreateDatabase(string name)
|
||||
{
|
||||
Database db = null;
|
||||
if (DataCache.ConfigCache.ContainsKey(name) == false)
|
||||
{
|
||||
ConfigurationSourceSection.GetConnection(name);
|
||||
}
|
||||
if (DataCache.ConfigCache.ContainsKey(name) == false) return null;
|
||||
string Namespace = DataCache.ConfigCache[name].Namespace;
|
||||
string ConnectionString = DataCache.ConfigCache[name].Value;
|
||||
if (string.IsNullOrEmpty(ConnectionString) == true) return null;
|
||||
if (Namespace == "System.Data.Oledb")
|
||||
{
|
||||
ConnectionString = CustomIO.AccessReplacePath(ConnectionString);
|
||||
}
|
||||
db = new Database(Namespace, ConnectionString);
|
||||
return db;
|
||||
}
|
||||
|
||||
public static Database CreateDatabase2(string name)
|
||||
{
|
||||
Database db = null;
|
||||
if (DataCache.ConfigCache.ContainsKey(name) == false)
|
||||
{
|
||||
ConfigurationSourceSection.GetConnection2(name);
|
||||
}
|
||||
if (DataCache.ConfigCache.ContainsKey(name) == false) return null;
|
||||
string Namespace = DataCache.ConfigCache[name].Namespace;
|
||||
string ConnectionString = DataCache.ConfigCache[name].Value;
|
||||
if (string.IsNullOrEmpty(ConnectionString) == true) return null;
|
||||
if (Namespace == "System.Data.Oledb")
|
||||
{
|
||||
ConnectionString = CustomIO.AccessReplacePath(ConnectionString);
|
||||
}
|
||||
db = new Database(Namespace, ConnectionString);
|
||||
return db;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,389 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using HuizhongLibrary.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace HuizhongLibrary.Log
|
||||
{
|
||||
public class ErrorFollow
|
||||
{
|
||||
public static bool IsDebug = true;
|
||||
#region 输出错误信息
|
||||
/// <summary>
|
||||
/// 输出错误信息
|
||||
/// </summary>
|
||||
public static void TraceWrite(string TypeName, string StackTrace, string ErrorMsg)
|
||||
{
|
||||
if (ErrorFollow.IsDebug == false) return;
|
||||
if (string.IsNullOrEmpty(ErrorMsg) == true) ErrorMsg = "消息为空字符串";
|
||||
try
|
||||
{
|
||||
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
|
||||
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
|
||||
string filePath = DirectoryName + "/" + DateTime.Today.ToString("yyyy-MM-dd") + "EventLog.log";
|
||||
bool append = true;
|
||||
if (File.Exists(filePath) == false) File.Create(filePath).Close();
|
||||
FileInfo f = new FileInfo(filePath);
|
||||
if (f.Length / 1024 / 1024 > 1)
|
||||
{
|
||||
append = false;
|
||||
string newFile = DirectoryName + "/" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "EventLog.log";
|
||||
f.CopyTo(newFile, true);
|
||||
}
|
||||
f = null;
|
||||
using (StreamWriter sw = new StreamWriter(filePath, append, System.Text.Encoding.Default))
|
||||
{
|
||||
sw.WriteLine("------------");
|
||||
sw.WriteLine(TypeName);
|
||||
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
if (string.IsNullOrEmpty(StackTrace) == false) sw.WriteLine(StackTrace);
|
||||
sw.WriteLine(ErrorMsg);
|
||||
sw.Close();
|
||||
}
|
||||
if (ErrorMsg.Contains("OutOfMemoryException") == true)
|
||||
{
|
||||
string file2 = AppDomain.CurrentDomain.BaseDirectory + "自动启动服务脚本/hz.bat";
|
||||
CustomIO.ReStartService(file2);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
#endregion
|
||||
#region 输出错误信息
|
||||
/// <summary>
|
||||
/// 输出错误信息
|
||||
/// </summary>
|
||||
public static void TraceWrite2(string FileName,string TypeName, string StackTrace, string ErrorMsg)
|
||||
{
|
||||
if (ErrorFollow.IsDebug == false) return;
|
||||
if (string.IsNullOrEmpty(ErrorMsg) == true) ErrorMsg = "消息为空字符串";
|
||||
try
|
||||
{
|
||||
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
|
||||
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
|
||||
string filePath = DirectoryName + "/" + FileName + DateTime.Today.ToString("yyyy-MM-dd") + "EventLog.log";
|
||||
bool append = true;
|
||||
if (File.Exists(filePath) == false) File.Create(filePath).Close();
|
||||
FileInfo f = new FileInfo(filePath);
|
||||
if (f.Length / 1024 / 1024 > 1)
|
||||
{
|
||||
append = false;
|
||||
string newFile = DirectoryName + "/" + FileName + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "EventLog.log";
|
||||
f.CopyTo(newFile, true);
|
||||
}
|
||||
f = null;
|
||||
using (StreamWriter sw = new StreamWriter(filePath, append, System.Text.Encoding.Default))
|
||||
{
|
||||
sw.WriteLine("------------");
|
||||
sw.WriteLine(TypeName);
|
||||
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
if (string.IsNullOrEmpty(StackTrace) == false) sw.WriteLine(StackTrace);
|
||||
sw.WriteLine(ErrorMsg);
|
||||
sw.Close();
|
||||
}
|
||||
if (ErrorMsg.Contains("OutOfMemoryException") == true)
|
||||
{
|
||||
string file2 = AppDomain.CurrentDomain.BaseDirectory + "自动启动服务脚本/hz.bat";
|
||||
CustomIO.ReStartService(file2);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
#endregion
|
||||
#region 输出错误信息_并且保存到数据库
|
||||
/// <summary>
|
||||
/// 输出错误信息_并且保存到数据库
|
||||
/// </summary>
|
||||
public static void TraceWriteError(string TypeName, Exception ex, string DataMsg)
|
||||
{
|
||||
if (string.IsNullOrEmpty(DataMsg) == true && ex == null) DataMsg = "消息为空字符串";
|
||||
try
|
||||
{
|
||||
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
|
||||
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
|
||||
string filePath = DirectoryName + "/" + DateTime.Today.ToString("yyyy-MM-dd") + "EventLog.log";
|
||||
bool append = true;
|
||||
if (File.Exists(filePath) == false) File.Create(filePath).Close();
|
||||
FileInfo f = new FileInfo(filePath);
|
||||
if (f.Length / 1024 / 1024 > 1)
|
||||
{
|
||||
append = false;
|
||||
string newFile = DirectoryName + "/" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "EventLog.log";
|
||||
f.CopyTo(newFile, true);
|
||||
}
|
||||
f = null;
|
||||
using (StreamWriter sw = new StreamWriter(filePath, append, System.Text.Encoding.Default))
|
||||
{
|
||||
sw.WriteLine("------------");
|
||||
sw.WriteLine(TypeName);
|
||||
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
if (ex != null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(ex.StackTrace) == false) sw.WriteLine(ex.StackTrace);
|
||||
sw.WriteLine(ex.Message);
|
||||
}
|
||||
if (string.IsNullOrEmpty(DataMsg) == false) sw.WriteLine(DataMsg);
|
||||
sw.Close();
|
||||
}
|
||||
string tsql = @"
|
||||
if (select count(0) from PD_ErrorLog where TypeName=@TypeName and ErrorMsg=@ErrorMsg and DATEDIFF(s,InDate,getdate())<300)=0
|
||||
begin
|
||||
INSERT INTO [PD_ErrorLog]([TypeName],[StackTrace],[ErrorMsg],[DataMsg],[InDate])values(@TypeName,@StackTrace,@ErrorMsg,@DataMsg,getdate())
|
||||
end
|
||||
";
|
||||
Database db = DatabaseFactory.CreateDatabase();
|
||||
DbCommand cmd = db.GetSqlStringCommand(tsql);
|
||||
db.AddInParameter(cmd, "@TypeName", DbType.String, TypeName);
|
||||
string StackTrace = "";
|
||||
string ErrorMsg = "";
|
||||
if (ex != null)
|
||||
{
|
||||
StackTrace = ex.StackTrace;
|
||||
ErrorMsg = ex.Message;
|
||||
}
|
||||
if (ErrorMsg == "") ErrorMsg = DataMsg;
|
||||
db.AddInParameter(cmd, "@StackTrace", DbType.String, StackTrace);
|
||||
db.AddInParameter(cmd, "@ErrorMsg", DbType.String, ErrorMsg);
|
||||
db.AddInParameter(cmd, "@DataMsg", DbType.String, DataMsg);
|
||||
try
|
||||
{
|
||||
db.ExecuteNonQuery(cmd);
|
||||
}
|
||||
catch
|
||||
{ }
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
#endregion
|
||||
#region 输出10.4挂号收费信息
|
||||
/// <summary>
|
||||
/// 输出错误信息
|
||||
/// </summary>
|
||||
public static void TraceWrite_GH(string TypeName, string StackTrace, string ErrorMsg)
|
||||
{
|
||||
if (ErrorFollow.IsDebug == false) return;
|
||||
if (string.IsNullOrEmpty(ErrorMsg) == true) ErrorMsg = "消息为空字符串";
|
||||
try
|
||||
{
|
||||
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
|
||||
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
|
||||
string filePath = DirectoryName + "/" + DateTime.Today.ToString("yyyy-MM-dd") + "挂号收费日志.log";
|
||||
bool append = true;
|
||||
if (File.Exists(filePath) == false) File.Create(filePath).Close();
|
||||
FileInfo f = new FileInfo(filePath);
|
||||
if (f.Length / 1024 / 1024 > 1)
|
||||
{
|
||||
append = false;
|
||||
string newFile = DirectoryName + "/" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "EventLog.log";
|
||||
f.CopyTo(newFile, true);
|
||||
}
|
||||
f = null;
|
||||
using (StreamWriter sw = new StreamWriter(filePath, append, System.Text.Encoding.Default))
|
||||
{
|
||||
sw.WriteLine("------------");
|
||||
sw.WriteLine(TypeName);
|
||||
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
if (string.IsNullOrEmpty(StackTrace) == false) sw.WriteLine(StackTrace);
|
||||
sw.WriteLine(ErrorMsg);
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 输出错误信息
|
||||
/// <summary>
|
||||
/// 输出错误信息
|
||||
/// </summary>
|
||||
public static void TraceWrite(string filePath, string TypeName, string StackTrace, string ErrorMsg)
|
||||
{
|
||||
if (ErrorFollow.IsDebug == false) return;
|
||||
if (string.IsNullOrEmpty(ErrorMsg) == true) ErrorMsg = "未知错误";
|
||||
try
|
||||
{
|
||||
bool append = true;
|
||||
if (File.Exists(filePath) == false) File.Create(filePath).Close();
|
||||
FileInfo f = new FileInfo(filePath);
|
||||
if (f.Length / 1024 / 32 > 10) append = false;
|
||||
f = null;
|
||||
using (StreamWriter sw = new StreamWriter(filePath, append, System.Text.Encoding.Default))
|
||||
{
|
||||
sw.WriteLine("------------");
|
||||
sw.WriteLine(TypeName);
|
||||
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
sw.WriteLine(StackTrace);
|
||||
sw.WriteLine(ErrorMsg);
|
||||
sw.Close();
|
||||
}
|
||||
if (ErrorMsg.Contains("OutOfMemoryException") == true)
|
||||
{
|
||||
string file2 = AppDomain.CurrentDomain.BaseDirectory + "自动启动服务脚本/hz.bat";
|
||||
CustomIO.ReStartService(file2);
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 清理错误日志
|
||||
public static void DeleteLog(int Day)
|
||||
{
|
||||
Action<int> act = new Action<int>(DeleteTempFile);
|
||||
act.BeginInvoke(Day, null, null);
|
||||
}
|
||||
public static void DeleteTempFile(int Day)
|
||||
{
|
||||
try
|
||||
{
|
||||
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies/";
|
||||
if (Directory.Exists(DirectoryName) == false) return;
|
||||
//string[] files = Directory.GetFiles(DirectoryName, "*.*");
|
||||
//foreach (string filePath in files)
|
||||
//{
|
||||
// DateTime dt = File.GetCreationTime(filePath);
|
||||
// if (dt.AddDays(Day) > DateTime.Now) continue;
|
||||
// File.Delete(filePath);
|
||||
//}
|
||||
DeleteFile(DirectoryName, Day);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
ErrorFollow.TraceWrite(ex.TargetSite.Name, ex.StackTrace, ex.Message);
|
||||
}
|
||||
}
|
||||
#region 删除文件夹及下面所有文件
|
||||
public static void DeleteFile(string Directory,int Day)
|
||||
{
|
||||
ErrorFollow obj = new ErrorFollow();
|
||||
obj.DeleteFileTree(Directory, true, 0, Day);
|
||||
foreach (string s in obj.files)
|
||||
{
|
||||
System.IO.Directory.Delete(s);
|
||||
TraceWrite("删除临时日志文件", "", s);
|
||||
}
|
||||
}
|
||||
|
||||
List<string> files = new List<string>();
|
||||
void DeleteFileTree(string dir, bool showFiles, int level, int Day)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (showFiles == true)
|
||||
{
|
||||
foreach (string fname in Directory.GetFiles(dir))
|
||||
{
|
||||
DateTime dt = File.GetLastWriteTime(fname);
|
||||
if (dt.AddDays(Day) > DateTime.Now) continue;
|
||||
System.IO.File.Delete(fname);
|
||||
TraceWrite("删除临时日志文件", "", fname);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (string subdir in Directory.GetDirectories(dir))
|
||||
{
|
||||
DeleteFileTree(subdir, showFiles, level + 1,Day);
|
||||
string[] files2 = Directory.GetFiles(subdir, "*.*");
|
||||
if (files2.Length==0) files.Add(subdir);
|
||||
}
|
||||
|
||||
}
|
||||
catch
|
||||
{}
|
||||
}
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region 输出接口信息
|
||||
/// <summary>
|
||||
/// 输出接口信息
|
||||
/// </summary>
|
||||
public static void TraceInfoWrite(string TypeName, string StackTrace, string ErrorMsg)
|
||||
{
|
||||
if (ErrorFollow.IsDebug == false) return;
|
||||
if (string.IsNullOrEmpty(ErrorMsg) == true) ErrorMsg = "消息为空字符串";
|
||||
try
|
||||
{
|
||||
string DirectoryName = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
|
||||
if (Directory.Exists(DirectoryName) == false) Directory.CreateDirectory(DirectoryName);
|
||||
string filePath = DirectoryName + "/" + DateTime.Today.ToString("yyyy-MM-dd") + "EventInfoLog.log";
|
||||
bool append = true;
|
||||
if (File.Exists(filePath) == false) File.Create(filePath).Close();
|
||||
FileInfo f = new FileInfo(filePath);
|
||||
if (f.Length / 1024 / 1024 > 1)
|
||||
{
|
||||
append = false;
|
||||
string newFile = DirectoryName + "/" + DateTime.Now.ToString("yyyyMMdd_HHmmss") + "EventInfoLog.log";
|
||||
f.CopyTo(newFile, true);
|
||||
}
|
||||
f = null;
|
||||
using (StreamWriter sw = new StreamWriter(filePath, append, System.Text.Encoding.Default))
|
||||
{
|
||||
sw.WriteLine("------------");
|
||||
sw.WriteLine(TypeName);
|
||||
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
|
||||
if (string.IsNullOrEmpty(StackTrace) == false) sw.WriteLine(StackTrace);
|
||||
sw.WriteLine(ErrorMsg);
|
||||
sw.Close();
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
#endregion
|
||||
#region 日志文件保存数据库
|
||||
public static void SaveEventLog(string DeviceNo, DateTime InDate)
|
||||
{
|
||||
string InDate2 = InDate.ToString("yyyy-MM-dd");
|
||||
string dir = AppDomain.CurrentDomain.BaseDirectory + "ServerCookies";
|
||||
string[] files = Directory.GetFiles(dir, "*.log");
|
||||
foreach (string filePath in files)
|
||||
{
|
||||
DateTime dt = File.GetCreationTime(filePath);
|
||||
string dt2 = dt.ToString("yyyy-MM-dd");
|
||||
if (dt2 != InDate2) continue;
|
||||
byte[] bytes = CustomIO.GetOffice(filePath);
|
||||
SaveEventLogData(DeviceNo, dt, bytes);
|
||||
}
|
||||
}
|
||||
public static void SaveEventLogData(string DeviceNo,DateTime CreateTime,byte[] bytes)
|
||||
{
|
||||
string tsql = @"
|
||||
select id from PD_EventLog where DeviceNo=@DeviceNo and InDate=@InDate
|
||||
";
|
||||
Database db = DatabaseFactory.CreateDatabase();
|
||||
DbCommand cmd = db.GetSqlStringCommand(tsql);
|
||||
db.AddInParameter(cmd, "@DeviceNo", DbType.String, DeviceNo);
|
||||
db.AddInParameter(cmd, "@InDate", DbType.DateTime, CreateTime);
|
||||
string a =Convert.ToString(db.ExecuteScalar(cmd));
|
||||
if (string.IsNullOrEmpty(a) == true)
|
||||
{
|
||||
tsql = @"
|
||||
insert PD_EventLog(DeviceNo,Filelog,InDate)values(@DeviceNo,@Filelog,@InDate)
|
||||
";
|
||||
cmd = db.GetSqlStringCommand(tsql);
|
||||
db.AddInParameter(cmd, "@DeviceNo", DbType.String, DeviceNo);
|
||||
db.AddInParameter(cmd, "@InDate", DbType.DateTime, CreateTime);
|
||||
db.AddInParameter(cmd, "@Filelog", DbType.Binary, bytes);
|
||||
db.ExecuteNonQuery(cmd);
|
||||
}
|
||||
else
|
||||
{
|
||||
tsql = @"
|
||||
update PD_EventLog set Filelog=@Filelog where id=@id
|
||||
";
|
||||
cmd = db.GetSqlStringCommand(tsql);
|
||||
db.AddInParameter(cmd, "@id", DbType.Int32, a);
|
||||
db.AddInParameter(cmd, "@Filelog", DbType.Binary, bytes);
|
||||
db.ExecuteNonQuery(cmd);
|
||||
}
|
||||
|
||||
}
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="$this.FormFactorShadowProperty" xml:space="preserve">
|
||||
<value>WEBPAD</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,241 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace HuizhongLibrary.ReportPrint
|
||||
{
|
||||
public partial class PrintSetup : Form
|
||||
{
|
||||
private PrintReport m_PrintReport = null;
|
||||
public PrintReport PrintReport
|
||||
{
|
||||
get { return this.m_PrintReport; }
|
||||
set { this.m_PrintReport = value; }
|
||||
}
|
||||
|
||||
private PrintMuchReport muchReport;
|
||||
private MyReport report;
|
||||
|
||||
public PrintSetup(PrintReport print)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.PrintReport = print;
|
||||
this.report = print.Report;
|
||||
BindPinterName();
|
||||
BindPagerKinds();
|
||||
checkIsFillBlank.Checked = report.IsFillBlank;
|
||||
txtCopies.Value = print.Copies;
|
||||
if (string.IsNullOrEmpty(PrintReport.Document.PrinterSettings.PrinterName) == false) listPinterName.SelectedItem = PrintReport.Document.PrinterSettings.PrinterName;
|
||||
}
|
||||
public PrintSetup(PrintMuchReport print)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.muchReport = print;
|
||||
this.report = print.Report[0];
|
||||
BindPinterName();
|
||||
BindPagerKinds();
|
||||
checkIsFillBlank.Visible = false;
|
||||
txtCopies.Value = print.Copies;
|
||||
if (string.IsNullOrEmpty(muchReport.Document.PrinterSettings.PrinterName) == false) listPinterName.SelectedItem = muchReport.Document.PrinterSettings.PrinterName;
|
||||
}
|
||||
#region 获取打印机列表
|
||||
public void BindPinterName()
|
||||
{
|
||||
int a = 0, b = 0;
|
||||
if (PrintReport != null)
|
||||
{
|
||||
foreach (string sc in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
|
||||
{
|
||||
listPinterName.Items.Add(sc);
|
||||
if (sc == PrintReport.Document.PrinterSettings.PrinterName) b = a;
|
||||
a++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (string sc in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
|
||||
{
|
||||
listPinterName.Items.Add(sc);
|
||||
if (sc == muchReport.Document.PrinterSettings.PrinterName) b = a;
|
||||
a++;
|
||||
}
|
||||
}
|
||||
listPinterName.SelectedIndex = b;
|
||||
}
|
||||
#endregion
|
||||
#region 可使用纸张列表
|
||||
public void BindPagerKinds()
|
||||
{
|
||||
foreach (Kind kd in report.PagerKind)
|
||||
{
|
||||
listPagerKinds.Items.Add(kd.Name);
|
||||
}
|
||||
if (report.PagerKind[0].Landscape == false)
|
||||
{
|
||||
radioButton1.Checked = true;
|
||||
txtWidth.Value = Convert.ToDecimal(report.PagerKind[0].Width);
|
||||
txtHeight.Value = Convert.ToDecimal(report.PagerKind[0].Height);
|
||||
}
|
||||
else
|
||||
{
|
||||
radioButton2.Checked = true;
|
||||
txtWidth.Value = Convert.ToDecimal(report.PagerKind[0].Height);
|
||||
txtHeight.Value = Convert.ToDecimal(report.PagerKind[0].Width);
|
||||
}
|
||||
listPagerKinds.SelectedIndex = 0;
|
||||
CheckPagerNumber.Checked = report.ShowPagerNumber;
|
||||
}
|
||||
#endregion
|
||||
|
||||
private void listPagerKinds_SelectedIndexChanged(object sender, System.EventArgs e)
|
||||
{
|
||||
if (report.PagerKind[listPagerKinds.SelectedIndex].Landscape == false)
|
||||
{
|
||||
radioButton1.Checked = true;
|
||||
txtWidth.Value = Convert.ToDecimal(report.PagerKind[listPagerKinds.SelectedIndex].Width);
|
||||
txtHeight.Value = Convert.ToDecimal(report.PagerKind[listPagerKinds.SelectedIndex].Height);
|
||||
}
|
||||
else
|
||||
{
|
||||
radioButton2.Checked = true;
|
||||
txtWidth.Value = Convert.ToDecimal(report.PagerKind[listPagerKinds.SelectedIndex].Height);
|
||||
txtHeight.Value = Convert.ToDecimal(report.PagerKind[listPagerKinds.SelectedIndex].Width);
|
||||
}
|
||||
report.Width = Convert.ToSingle(txtWidth.Value);
|
||||
report.Height = Convert.ToSingle(txtHeight.Value);
|
||||
if (PrintReport != null)
|
||||
{
|
||||
this.PrintReport.SetPageRecordNumber(Convert.ToInt32(txtWidth.Value), Convert.ToInt32(txtHeight.Value));
|
||||
this.PrintReport.MathPageCount();
|
||||
int PagerCount = this.PrintReport.GetPagerCount();
|
||||
txtStart.Value = 1; txtStop.Maximum = PagerCount; txtStop.Value = PagerCount;
|
||||
}
|
||||
else
|
||||
{
|
||||
int PagerCount = muchReport.GetPagerCount();
|
||||
txtStart.Value = 1; txtStop.Maximum = PagerCount; txtStop.Value = PagerCount;
|
||||
}
|
||||
}
|
||||
|
||||
private void txtWidth_ValueChanged(object sender, System.EventArgs e)
|
||||
{
|
||||
//if (report.Width > Convert.ToSingle(txtWidth.Value)) { MessageBox.Show(this, "打印纸张宽度不能小于" + report.Width.ToString() + "毫米"); return; }
|
||||
|
||||
}
|
||||
|
||||
private void txtHeight_ValueChanged(object sender, System.EventArgs e)
|
||||
{
|
||||
//float h = report.Header.Height + report.Footer.Height;
|
||||
//if (h >= Convert.ToSingle(txtHeight.Value)) { MessageBox.Show(this, "打印纸张高度不能小于" + h.ToString() + "毫米"); return; }
|
||||
}
|
||||
|
||||
private void cmdPrint_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (PrintReport != null)
|
||||
{
|
||||
this.PrintReport.Document.PrinterSettings.PrinterName = listPinterName.Text;
|
||||
|
||||
|
||||
report.ShowPagerNumber = CheckPagerNumber.Checked;
|
||||
this.PrintReport.IsFixHeaderFooter = CheckPagerHeader.Checked;
|
||||
this.PrintReport.Copies = Convert.ToInt16(txtCopies.Value);
|
||||
this.PrintReport.Collate = CheckCollate.Checked;
|
||||
this.PrintReport.StartPageNumber = Convert.ToInt32(txtStart.Value) - 1;
|
||||
this.PrintReport.StopPageNumber = Convert.ToInt32(txtStop.Value);
|
||||
this.PrintReport.Kind = report.PagerKind[listPagerKinds.SelectedIndex];
|
||||
this.PrintReport.ColumnWidthRectify = Convert.ToSingle(txtColumnWidthRectify.Value);
|
||||
this.PrintReport.IsFillBlank = checkIsFillBlank.Checked;
|
||||
this.PrintReport.Print();
|
||||
}
|
||||
else
|
||||
{
|
||||
muchReport.Document.PrinterSettings.PrinterName = listPinterName.Text;
|
||||
report.ShowPagerNumber = CheckPagerNumber.Checked;
|
||||
//muchReport.IsFixHeaderFooter = CheckPagerHeader.Checked;
|
||||
muchReport.Copies = Convert.ToInt16(txtCopies.Value);
|
||||
muchReport.Collate = CheckCollate.Checked;
|
||||
//muchReport.StartPageNumber = Convert.ToInt32(txtStart.Value) - 1;
|
||||
//muchReport.StopPageNumber = Convert.ToInt32(txtStop.Value);
|
||||
muchReport.Kind = report.PagerKind[listPagerKinds.SelectedIndex];
|
||||
//muchReport.ColumnWidthRectify = Convert.ToSingle(txtColumnWidthRectify.Value);
|
||||
//muchReport.IsFillBlank = checkIsFillBlank.Checked;
|
||||
muchReport.Print();
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void cmdPrintView_Click(object sender, System.EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (PrintReport != null)
|
||||
{
|
||||
this.PrintReport.Document.PrinterSettings.PrinterName = listPinterName.Text;
|
||||
report.ShowPagerNumber = CheckPagerNumber.Checked;
|
||||
this.PrintReport.IsFixHeaderFooter = CheckPagerHeader.Checked;
|
||||
this.PrintReport.Copies = Convert.ToInt16(txtCopies.Value);
|
||||
this.PrintReport.Collate = CheckCollate.Checked;
|
||||
this.PrintReport.StartPageNumber = Convert.ToInt32(txtStart.Value) - 1;
|
||||
this.PrintReport.StopPageNumber = Convert.ToInt32(txtStop.Value);
|
||||
this.PrintReport.Kind = report.PagerKind[listPagerKinds.SelectedIndex];
|
||||
this.PrintReport.ColumnWidthRectify = Convert.ToSingle(txtColumnWidthRectify.Value);
|
||||
this.PrintReport.IsFillBlank = checkIsFillBlank.Checked;
|
||||
this.Hide();
|
||||
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
|
||||
printPreviewDialog1.Document = this.m_PrintReport.Document;
|
||||
printPreviewDialog1.SetDesktopLocation(0, 0);
|
||||
printPreviewDialog1.SetDesktopBounds(0, 0, SystemInformation.PrimaryMonitorMaximizedWindowSize.Width, SystemInformation.PrimaryMonitorMaximizedWindowSize.Height);
|
||||
printPreviewDialog1.PrintPreviewControl.Zoom = 0.9;
|
||||
printPreviewDialog1.ShowDialog();
|
||||
}
|
||||
else
|
||||
{
|
||||
muchReport.Document.PrinterSettings.PrinterName = listPinterName.Text;
|
||||
report.ShowPagerNumber = CheckPagerNumber.Checked;
|
||||
//muchReport.IsFixHeaderFooter = CheckPagerHeader.Checked;
|
||||
muchReport.Copies = Convert.ToInt16(txtCopies.Value);
|
||||
muchReport.Collate = CheckCollate.Checked;
|
||||
//muchReport.StartPageNumber = Convert.ToInt32(txtStart.Value) - 1;
|
||||
//muchReport.StopPageNumber = Convert.ToInt32(txtStop.Value);
|
||||
muchReport.Kind = report.PagerKind[listPagerKinds.SelectedIndex];
|
||||
//muchReport.ColumnWidthRectify = Convert.ToSingle(txtColumnWidthRectify.Value);
|
||||
//muchReport.IsFillBlank = checkIsFillBlank.Checked;
|
||||
this.Hide();
|
||||
PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog();
|
||||
printPreviewDialog1.Document = muchReport.Document;
|
||||
printPreviewDialog1.SetDesktopLocation(0, 0);
|
||||
printPreviewDialog1.SetDesktopBounds(0, 0, SystemInformation.PrimaryMonitorMaximizedWindowSize.Width, SystemInformation.PrimaryMonitorMaximizedWindowSize.Height);
|
||||
printPreviewDialog1.PrintPreviewControl.Zoom = 0.9;
|
||||
printPreviewDialog1.ShowDialog();
|
||||
}
|
||||
this.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void txtStart_ValueChanged(object sender, System.EventArgs e)
|
||||
{
|
||||
if (txtStart.Value > txtStop.Value) txtStart.Value = txtStop.Value;
|
||||
}
|
||||
|
||||
private void txtStop_ValueChanged(object sender, System.EventArgs e)
|
||||
{
|
||||
if (txtStart.Value > txtStop.Value) txtStop.Value = txtStart.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue