commit 59677e1a85eb17a4a1faca5a425399e18d34d8ee Author: 如果当时 <1017848709@qq.com> Date: Sat Nov 28 16:15:13 2020 +0800 初始备份。 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..758c1ca --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +Publish/ +Res/ +**/obj +*.pdb +**/dcu +*.dcu \ No newline at end of file diff --git a/Bin/Debug/SuperDesign/.vs/SupperDesign/v16/.suo b/Bin/Debug/SuperDesign/.vs/SupperDesign/v16/.suo new file mode 100644 index 0000000..5bb23ff Binary files /dev/null and b/Bin/Debug/SuperDesign/.vs/SupperDesign/v16/.suo differ diff --git a/Bin/Debug/SuperDesign/HtmlAgilityPack.dll b/Bin/Debug/SuperDesign/HtmlAgilityPack.dll new file mode 100644 index 0000000..76647cb Binary files /dev/null and b/Bin/Debug/SuperDesign/HtmlAgilityPack.dll differ diff --git a/Bin/Debug/SuperDesign/HtmlAgilityPack.xml b/Bin/Debug/SuperDesign/HtmlAgilityPack.xml new file mode 100644 index 0000000..641e254 --- /dev/null +++ b/Bin/Debug/SuperDesign/HtmlAgilityPack.xml @@ -0,0 +1,2578 @@ + + + + HtmlAgilityPack + + + + + Represents a combined list and collection of HTML nodes. + + + + + Gets a given attribute from the list using its name. + + + + + Gets the number of elements actually contained in the list. + + + + + Gets readonly status of colelction + + + + + Gets the attribute at the specified index. + + + + + Adds supplied item to collection + + + + + + Explicit clear + + + + + Retreives existence of supplied item + + + + + + + Copies collection to array + + + + + + + Get Explicit enumerator + + + + + + Explicit non-generic enumerator + + + + + + Retrieves the index for the supplied item, -1 if not found + + + + + + + Inserts given item into collection at supplied index + + + + + + + Explicit collection remove + + + + + + + Removes the attribute at the specified index. + + The index of the attribute to remove. + + + + Adds a new attribute to the collection with the given values + + + + + + + Inserts the specified attribute as the last attribute in the collection. + + The attribute to insert. May not be null. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The appended attribute. + + + + Creates and inserts a new attribute as the last attribute in the collection. + + The name of the attribute to insert. + The value of the attribute to insert. + The appended attribute. + + + + Checks for existance of attribute with given name + + + + + + + Inserts the specified attribute as the first node in the collection. + + The attribute to insert. May not be null. + The prepended attribute. + + + + Removes a given attribute from the list. + + The attribute to remove. May not be null. + + + + Removes an attribute from the list, using its name. If there are more than one attributes with this name, they will all be removed. + + The attribute's name. May not be null. + + + + Remove all attributes in the list. + + + + + Returns all attributes with specified name. Handles case insentivity + + Name of the attribute + + + + + Removes all attributes from the collection + + + + + Clears the attribute collection + + + + + Represents an HTML comment. + + + + + Gets or Sets the comment text of the node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Represents a complete HTML document. + + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. + + + + Detects the encoding of an HTML document from a file first, and then loads the file. + + The complete file path to be read. May not be null. + true to detect encoding, false otherwise. + + + + Detects the encoding of an HTML file. + + Path for the file containing the HTML document to detect. May not be null. + The detected encoding. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads an HTML document from a file. + + The complete file path to be read. May not be null. + The character encoding to use. May not be null. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. May not be null. + The character encoding to use. May not be null. + + + + Creates a new XPathNavigator object for navigating this HTML document. + + An XPathNavigator object. The XPathNavigator is positioned on the root of the document. + + + + Defines the max level we would go deep into the html document + + + + + Adds Debugging attributes to node. Default is false. + + + + + Defines if closing for non closed nodes must be done at the end or directly in the document. + Setting this to true can actually change how browsers render the page. Default is false. + + + + + Defines if non closed nodes will be checked at the end of parsing. Default is true. + + + + + Defines if a checksum must be computed for the document while parsing. Default is false. + + + + + Defines if SelectNodes method will return null or empty collection when no node matched the XPath expression. + Setting this to true will return empty collection and false will return null. Default is false. + + + + + Defines the default stream encoding to use. Default is System.Text.Encoding.Default. + + + + + Defines if source text must be extracted while parsing errors. + If the document has a lot of errors, or cascading errors, parsing performance can be dramatically affected if set to true. + Default is false. + + + + + Defines the maximum length of source text or parse errors. Default is 100. + + + + + Defines if LI, TR, TH, TD tags must be partially fixed when nesting errors are detected. Default is false. + + + + + Defines if output must conform to XML, instead of HTML. + + + + + Defines if attribute value output must be optimized (not bound with double quotes if it is possible). Default is false. + + + + + Defines if name must be output with it's original case. Useful for asp.net tags and attributes + + + + + Defines if name must be output in uppercase. Default is false. + + + + + Defines if declared encoding must be read from the document. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + Default is true. + + + + + Defines the name of a node that will throw the StopperNodeException when found as an end node. Default is null. + + + + + Defines if the 'id' attribute must be specifically used. Default is true. + + + + + Defines if empty nodes must be written as closed during output. Default is false. + + + + + Creates an instance of an HTML document. + + + + + Defines the max level we would go deep into the html document. If this depth level is exceeded, and exception is + thrown. + + + + + Gets the document CRC32 checksum if OptionComputeChecksum was set to true before parsing, 0 otherwise. + + + + + Gets the document's declared encoding. + Declared encoding is determined using the meta http-equiv="content-type" content="text/html;charset=XXXXX" html node. + + + + + Gets the root node of the document. + + + + + Gets the document's output encoding. + + + + + Gets a list of parse errors found in the document. + + + + + Gets the remaining text. + Will always be null if OptionStopperNodeName is null. + + + + + Gets the offset of Remainder in the original Html text. + If OptionStopperNodeName is null, this will return the length of the original Html text. + + + + + Gets the document's stream encoding. + + + + + Gets a valid XML name. + + Any text. + A string that is a valid XML name. + + + + Applies HTML encoding to a specified string. + + The input string to encode. May not be null. + The encoded string. + + + + Determines if the specified character is considered as a whitespace character. + + The character to check. + true if if the specified character is considered as a whitespace character. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The new HTML attribute. + + + + Creates an HTML attribute with the specified name. + + The name of the attribute. May not be null. + The value of the attribute. + The new HTML attribute. + + + + Creates an HTML comment node. + + The new HTML comment node. + + + + Creates an HTML comment node with the specified comment text. + + The comment text. May not be null. + The new HTML comment node. + + + + Creates an HTML element node with the specified name. + + The qualified name of the element. May not be null. + The new HTML node. + + + + Creates an HTML text node. + + The new HTML text node. + + + + Creates an HTML text node with the specified text. + + The text of the node. May not be null. + The new HTML text node. + + + + Detects the encoding of an HTML stream. + + The input stream. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text provided on a TextReader. + + The TextReader used to feed the HTML. May not be null. + The detected encoding. + + + + Detects the encoding of an HTML text. + + The input html text. May not be null. + The detected encoding. + + + + Gets the HTML node with the specified 'id' attribute value. + + The attribute id to match. May not be null. + The HTML node with the matching id or null if not found. + + + + Loads an HTML document from a stream. + + The input stream. + + + + Loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Loads the HTML document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. May not be null. + + + + Loads the HTML document from the specified string. + + String containing the HTML document to load. May not be null. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. + + + + Saves the HTML document to the specified stream. + + The stream to which you want to save. May not be null. + The character encoding to use. May not be null. + + + + Saves the HTML document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the HTML document to the specified TextWriter. + + The TextWriter to which you want to save. May not be null. + + + + Saves the HTML document to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Flags that describe the behavior of an Element node. + + + + + The node is a CDATA node. + + + + + The node is empty. META or IMG are example of such nodes. + + + + + The node will automatically be closed during parsing. + + + + + The node can overlap. + + + + + Represents an HTML node. + + + + + Creates a new XPathNavigator object for navigating this HTML node. + + An XPathNavigator object. The XPathNavigator is positioned on the node from which the method was called. It is not positioned on the root of the document. + + + + Creates an XPathNavigator using the root of this document. + + + + + + Selects a list of nodes matching the expression. + + The XPath expression. + An containing a collection of nodes matching the query, or null if no node matched the XPath expression. + + + + Selects the first XmlNode that matches the XPath expression. + + The XPath expression. May not be null. + The first that matches the XPath query or a null reference if no matching node was found. + + + + Gets the name of a comment node. It is actually defined as '#comment'. + + + + + Gets the name of the document node. It is actually defined as '#document'. + + + + + Gets the name of a text node. It is actually defined as '#text'. + + + + + Gets a collection of flags that define specific behaviors for specific element nodes. + The table contains a DictionaryEntry list with the lowercase tag name as the Key, and a combination of HtmlElementFlags as the Value. + + + + + Initialize HtmlNode. Builds a list of all tags that have special allowances + + + + + Initializes HtmlNode, providing type, owner and where it exists in a collection + + + + + + + + Gets the collection of HTML attributes for this node. May not be null. + + + + + Gets all the children of the node. + + + + + Gets a value indicating if this node has been closed or not. + + + + + Gets the collection of HTML attributes for the closing tag. May not be null. + + + + + Gets the first child of the node. + + + + + Gets a value indicating whether the current node has any attributes. + + + + + Gets a value indicating whether this node has any child nodes. + + + + + Gets a value indicating whether the current node has any attributes on the closing tag. + + + + + Gets or sets the value of the 'id' HTML attribute. The document must have been parsed using the OptionUseIdAttribute set to true. + + + + + Gets or Sets the HTML between the start and end tags of the object. + + + + + Gets or Sets the text between the start and end tags of the object. + + + + + Gets the last child of the node. + + + + + Gets the line number of this node in the document. + + + + + Gets the column number of this node in the document. + + + + + Gets or sets this node's name. + + + + + Gets the HTML node immediately following this element. + + + + + Gets the type of this node. + + + + + The original unaltered name of the tag + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets the to which this node belongs. + + + + + Gets the parent of this node (for nodes that can have parents). + + + + + Gets the node immediately preceding this node. + + + + + Gets the stream position of this node in the document, relative to the start of the document. + + + + + Gets a valid XPath string that points to this node + + + + + Determines if an element node can be kept overlapped. + + The name of the element node to check. May not be null. + true if the name is the name of an element node that can be kept overlapped, false otherwise. + + + + Creates an HTML node from a string representing literal HTML. + + The HTML text. + The newly created node instance. + + + + Determines if an element node is a CDATA element node. + + The name of the element node to check. May not be null. + true if the name is the name of a CDATA element node, false otherwise. + + + + Determines if an element node is closed. + + The name of the element node to check. May not be null. + true if the name is the name of a closed element node, false otherwise. + + + + Determines if an element node is defined as empty. + + The name of the element node to check. May not be null. + true if the name is the name of an empty element node, false otherwise. + + + + Determines if a text corresponds to the closing tag of an node that can be kept overlapped. + + The text to check. May not be null. + true or false. + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Get Ancestors with matching name + + + + + + + Returns a collection of all ancestor nodes of this element. + + + + + + Gets all anscestor nodes and the current node + + + + + + + Adds the specified node to the end of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node to the end of the list of children of this node. + + The node list to add. May not be null. + + + + Gets all Attributes with name + + + + + + + Creates a duplicate of the node + + + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + The cloned node. + + + + Creates a duplicate of the node and changes its name at the same time. + + The new name of the cloned node. May not be null. + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node. + + true to recursively clone the subtree under the specified node; false to clone only the node itself. + The cloned node. + + + + Creates a duplicate of the node and the subtree under it. + + The node to duplicate. May not be null. + + + + Creates a duplicate of the node. + + The node to duplicate. May not be null. + true to recursively clone the subtree under the specified node, false to clone only the node itself. + + + + Gets all Descendant nodes for this node and each of child nodes + + The depth level of the node to parse in the html tree + the current element as an HtmlNode + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Gets all Descendant nodes in enumerated list + + + + + + Get all descendant nodes with matching name + + + + + + + Returns a collection of all descendant nodes of this element, in document order + + + + + + Gets all descendant nodes including this node + + + + + + + Gets first generation child node matching name + + + + + + + Gets matching first generation child nodes matching name + + + + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Helper method to get the value of an attribute of this node. If the attribute is not found, the default value will be returned. + + The name of the attribute to get. May not be null. + The default value to return if not found. + The value of the attribute if found, the default value if not found. + + + + Inserts the specified node immediately after the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newNode is placed after the refNode. + The node being inserted. + + + + Inserts the specified node immediately before the specified reference node. + + The node to insert. May not be null. + The node that is the reference node. The newChild is placed before this node. + The node being inserted. + + + + Adds the specified node to the beginning of the list of children of this node. + + The node to add. May not be null. + The node added. + + + + Adds the specified node list to the beginning of the list of children of this node. + + The node list to add. May not be null. + + + + Removes node from parent collection + + + + + Removes all the children and/or attributes of the current node. + + + + + Removes all the children of the current node. + + + + + Removes the specified child node. + + The node being removed. May not be null. + The node removed. + + + + Removes the specified child node. + + The node being removed. May not be null. + true to keep grand children of the node, false otherwise. + The node removed. + + + + Replaces the child node oldChild with newChild node. + + The new node to put in the child list. + The node being replaced in the list. + The node replaced. + + + + Helper method to set the value of an attribute of this node. If the attribute is not found, it will be created automatically. + + The name of the attribute to set. May not be null. + The value for the attribute. + The corresponding attribute instance. + + + + Saves all the children of the node to the specified TextWriter. + + The TextWriter to which you want to save. + Identifies the level we are in starting at root with 0 + + + + Saves all the children of the node to a string. + + The saved string. + + + + Saves the current node to the specified TextWriter. + + The TextWriter to which you want to save. + identifies the level we are in starting at root with 0 + + + + Saves the current node to the specified XmlWriter. + + The XmlWriter to which you want to save. + + + + Saves the current node to a string. + + The saved string. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + + + + Adds one or more classes to this node. + + The node list to add. May not be null. + true to throw Error if class name exists, false otherwise. + + + + Removes the class attribute from the node. + + + + + Removes the class attribute from the node. + + true to throw Error if class name doesn't exist, false otherwise. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + + + + Removes the specified class from the node. + + The class being removed. May not be null. + true to throw Error if class name doesn't exist, false otherwise. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + + + + Replaces the class name oldClass with newClass name. + + The new class name. + The class being replaced. + true to throw Error if class name doesn't exist, false otherwise. + + + + Represents a combined list and collection of HTML nodes. + + + + + Initialize the HtmlNodeCollection with the base parent node + + The base node of the collection + + + + Gets a given node from the list. + + + + + Get node with tag name + + + + + + + Gets the number of elements actually contained in the list. + + + + + Is collection read only + + + + + Gets the node at the specified index. + + + + + Add node to the collection + + + + + + Clears out the collection of HtmlNodes. Removes each nodes reference to parentnode, nextnode and prevnode + + + + + Gets existence of node in collection + + + + + + + Copy collection to array + + + + + + + Get Enumerator + + + + + + Get Explicit Enumerator + + + + + + Get index of node + + + + + + + Insert node at index + + + + + + + Remove node + + + + + + + Remove at index + + + + + + Get first instance of node in supplied collection + + + + + + + + Add node to the end of the collection + + + + + + Get first instance of node with name + + + + + + + Get index of node + + + + + + + Add node to the beginning of the collection + + + + + + Remove node at index + + + + + + + Replace node at index + + + + + + + Get all node descended from this collection + + + + + + Get all node descended from this collection with matching name + + + + + + Gets all first generation elements in collection + + + + + + Gets all first generation elements matching name + + + + + + + All first generation nodes in collection + + + + + + Represents the type of a node. + + + + + The root of a document. + + + + + An HTML element. + + + + + An HTML comment. + + + + + A text node is always the child of an element or a document node. + + + + + Represents a parsing error found during document parsing. + + + + + Gets the type of error. + + + + + Gets the line number of this error in the document. + + + + + Gets the column number of this error in the document. + + + + + Gets a description for the error. + + + + + Gets the the full text of the line containing the error. + + + + + Gets the absolute stream position of this error in the document, relative to the start of the document. + + + + + Represents the type of parsing error. + + + + + A tag was not closed. + + + + + A tag was not opened. + + + + + There is a charset mismatch between stream and declared (META) encoding. + + + + + An end tag was not required. + + + + + An end tag is invalid at this position. + + + + + Represents an HTML text node. + + + + + Gets or Sets the HTML between the start and end tags of the object. In the case of a text node, it is equals to OuterHtml. + + + + + Gets or Sets the object and its content in HTML. + + + + + Gets or Sets the text of the node. + + + + + A utility class to get HTML document from HTTP. + + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + An newly created instance. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An containing the namespace-qualified arguments used as input to the transform. + The requested type. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + An newly created instance. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter, after an XSLT transformation. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". May not be null. + The URL that specifies the XSLT stylesheet to load. + An XsltArgumentList containing the namespace-qualified arguments used as input to the transform. + The XmlTextWriter to which you want to save. + A file path where the temporary XML before transformation will be saved. Mostly used for debugging purposes. + + + + Represents the method that will handle the PostResponse event. + + + + + Represents the method that will handle the PreHandleDocument event. + + + + + Represents the method that will handle the PreRequest event. + + + + + Occurs after an HTTP request has been executed. + + + + + Occurs before an HTML document is handled. + + + + + Occurs before an HTTP request is executed. + + + + + Gets or Sets a value indicating if document encoding must be automatically detected. + + + + + Gets or sets the Encoding used to override the response stream from any web request + + + + + Gets or Sets a value indicating whether to get document only from the cache. + If this is set to true and document is not found in the cache, nothing will be loaded. + + + + + Gets or Sets the cache path. If null, no caching mechanism will be used. + + + + + Gets a value indicating if the last document was retrieved from the cache. + + + + + Gets the last request duration in milliseconds. + + + + + Gets the URI of the Internet resource that actually responded to the request. + + + + + Gets the last request status. + + + + + Gets or Sets the size of the buffer used for memory operations. + + + + + Gets or Sets a value indicating if cookies will be stored. + + + + + Gets or Sets the User Agent HTTP 1.1 header sent on any webrequest + + + + + Gets or Sets a value indicating whether the caching mechanisms should be used or not. + + + + + Gets the MIME content type for a given path extension. + + The input path extension. + The default content type to return if any error occurs. + The path extension's MIME content type. + + + + Gets the path extension for a given MIME content type. + + The input MIME content type. + The default path extension to return if any error occurs. + The MIME content type's path extension. + + + + Creates an instance of the given type from the specified Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The requested type. + An newly created instance. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. - Proxy aware + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + + + + + Gets an HTML document from an Internet resource and saves it to the specified file. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + Gets an HTML document from an Internet resource and saves it to the specified file. Understands Proxies + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The location of the file where you want to save the document. + + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + + + + + Gets the cache file path for a specified url. + + The url fo which to retrieve the cache path. May not be null. + The cache file path. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + A new HTML document. + + + + Gets an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + Host to use for Proxy + Port the Proxy is on + User Id for Authentication + Password for Authentication + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + A new HTML document. + + + + Loads an HTML document from an Internet resource. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The HTTP method used to open the connection, such as GET, POST, PUT, or PROPFIND. + Proxy to use with this request + Credentials to use when authenticating + A new HTML document. + + + + Loads an HTML document from an Internet resource and saves it to the specified XmlTextWriter. + + The requested URL, such as "http://Myserver/Mypath/Myfile.asp". + The XmlTextWriter to which you want to save to. + + + Gets or sets the web browser timeout. + + + + Gets or sets the web browser delay. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + Loads HTML using a WebBrowser and Application.DoEvents. + Thrown when an exception error condition occurs. + The requested URL, such as "http://html-agility-pack.net/". + (Optional) Check if the browser script has all been run and completed. + A new HTML document. + + + + Represents an exception thrown by the HtmlWeb utility class. + + + + + Creates an instance of the HtmlWebException. + + The exception's message. + + + + Represents a fragment of code in a mixed code document. + + + + + Gets the fragment code text. + + + + + Represents a base class for fragments in a mixed code document. + + + + + Gets the fragement text. + + + + + Gets the type of fragment. + + + + + Gets the line number of the fragment. + + + + + Gets the line position (column) of the fragment. + + + + + Gets the fragment position in the document's stream. + + + + + Represents a list of mixed code fragments. + + + + + Gets the Document + + + + + Gets the number of fragments contained in the list. + + + + + Gets a fragment from the list using its index. + + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Appends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Gets an enumerator that can iterate through the fragment list. + + + + + Prepends a fragment to the list of fragments. + + The fragment to append. May not be null. + + + + Remove a fragment from the list of fragments. If this fragment was not in the list, an exception will be raised. + + The fragment to remove. May not be null. + + + + Remove all fragments from the list. + + + + + Remove a fragment from the list of fragments, using its index in the list. + + The index of the fragment to remove. + + + + Represents a fragment enumerator. + + + + + Gets the current element in the collection. + + + + + Gets the current element in the collection. + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + Represents the type of fragment in a mixed code document. + + + + + The fragment contains code. + + + + + The fragment contains text. + + + + + Represents a fragment of text in a mixed code document. + + + + + Gets the fragment text. + + + + + A utility class to compute CRC32. + + + + + Compute a checksum for a given array of bytes. + + The array of bytes to compute the checksum for. + The computed checksum. + + + + Compute a checksum for a given string. + + The string to compute the checksum for. + The computed checksum. + + + + Represents an HTML attribute. + + + + + Gets the line number of this attribute in the document. + + + + + Gets the column number of this attribute in the document. + + + + + Gets the qualified name of the attribute. + + + + + Name of attribute with original case + + + + + Gets the HTML document to which this attribute belongs. + + + + + Gets the HTML node to which this attribute belongs. + + + + + Specifies what type of quote the data should be wrapped in + + + + + Gets the stream position of this attribute in the document, relative to the start of the document. + + + + + Gets or sets the value of the attribute. + + + + + Gets the DeEntitized value of the attribute. + + + + + Gets a valid XPath string that points to this Attribute + + + + + Compares the current instance with another attribute. Comparison is based on attributes' name. + + An attribute to compare with this instance. + A 32-bit signed integer that indicates the relative order of the names comparison. + + + + Creates a duplicate of this attribute. + + The cloned attribute. + + + + Removes this attribute from it's parents collection + + + + + An Enum representing different types of Quotes used for surrounding attribute values + + + + + A single quote mark ' + + + + + A double quote mark " + + + + + A utility class to replace special characters by entities and vice-versa. + Follows HTML 4.0 specification found at http://www.w3.org/TR/html4/sgml/entities.html + + + + + A collection of entities indexed by name. + + + + + A collection of entities indexed by value. + + + + + Replace known entities by characters. + + The source text. + The result text. + + + + Clone and entitize an HtmlNode. This will affect attribute values and nodes' text. It will also entitize all child nodes. + + The node to entitize. + An entitized cloned node. + + + + Replace characters above 127 by entities. + + The source text. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + The result text. + + + + Replace characters above 127 by entities. + + The source text. + If set to false, the function will not use known entities name. Default is true. + If set to true, the [quote], [ampersand], [lower than] and [greather than] characters will be entitized. + The result text + + + + Represents an HTML navigator on an HTML document seen as a data store. + + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the stream. + The minimum buffer size. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Initializes a new instance of the HtmlNavigator and loads an HTML document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Gets the base URI for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the current HTML document. + + + + + Gets the current HTML node. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node has child nodes. + + + + + Gets a value indicating whether the current node is an empty element. + + + + + Gets the name of the current HTML node without the namespace prefix. + + + + + Gets the qualified name of the current node. + + + + + Gets the namespace URI (as defined in the W3C Namespace Specification) of the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the associated with this implementation. + + + + + Gets the type of the current node. + + + + + Gets the prefix associated with the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Gets the text value of the current node. + + + + + Gets the xml:lang scope for the current node. + Always returns string.Empty in the case of HtmlNavigator implementation. + + + + + Creates a new HtmlNavigator positioned at the same node as this HtmlNavigator. + + A new HtmlNavigator object positioned at the same node as the original HtmlNavigator. + + + + Gets the value of the HTML attribute with the specified LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + The value of the specified HTML attribute. String.Empty or null if a matching attribute is not found or if the navigator is not positioned on an element node. + + + + Returns the value of the namespace node corresponding to the specified local name. + Always returns string.Empty for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns string.Empty for the HtmlNavigator implementation. + + + + Determines whether the current HtmlNavigator is at the same position as the specified HtmlNavigator. + + The HtmlNavigator that you want to compare against. + true if the two navigators have the same position, otherwise, false. + + + + Moves to the same position as the specified HtmlNavigator. + + The HtmlNavigator positioned on the node that you want to move to. + true if successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves to the HTML attribute with matching LocalName and NamespaceURI. + + The local name of the HTML attribute. + The namespace URI of the attribute. Unsupported with the HtmlNavigator implementation. + true if the HTML attribute is found, otherwise, false. If false, the position of the navigator does not change. + + + + Moves to the first sibling of the current node. + + true if the navigator is successful moving to the first sibling node, false if there is no first sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the first HTML attribute. + + true if the navigator is successful moving to the first HTML attribute, otherwise, false. + + + + Moves to the first child of the current node. + + true if there is a first child node, otherwise false. + + + + Moves the XPathNavigator to the first namespace node of the current element. + Always returns false for the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the node that has an attribute of type ID whose value matches the specified string. + + A string representing the ID value of the node to which you want to move. This argument does not need to be atomized. + true if the move was successful, otherwise false. If false, the position of the navigator is unchanged. + + + + Moves the XPathNavigator to the namespace node with the specified local name. + Always returns false for the HtmlNavigator implementation. + + The local name of the namespace node. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the next sibling of the current node. + + true if the navigator is successful moving to the next sibling node, false if there are no more siblings or if the navigator is currently positioned on an attribute node. If false, the position of the navigator is unchanged. + + + + Moves to the next HTML attribute. + + + + + + Moves the XPathNavigator to the next namespace node. + Always returns falsefor the HtmlNavigator implementation. + + An XPathNamespaceScope value describing the namespace scope. + Always returns false for the HtmlNavigator implementation. + + + + Moves to the parent of the current node. + + true if there is a parent node, otherwise false. + + + + Moves to the previous sibling of the current node. + + true if the navigator is successful moving to the previous sibling node, false if there is no previous sibling or if the navigator is currently positioned on an attribute node. + + + + Moves to the root node to which the current node belongs. + + + + + Wraps getting AppDomain permissions + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + An interface for getting permissions of the running application + + + + + Checks to see if Registry access is available to the caller + + + + + + Checks to see if DNS information is available to the caller + + + + + + Represents a document with mixed code and text. ASP, ASPX, JSP, are good example of such documents. + + + + + Gets or sets the token representing code end. + + + + + Gets or sets the token representing code start. + + + + + Gets or sets the token representing code directive. + + + + + Gets or sets the token representing response write directive. + + + + + Creates a mixed code document instance. + + + + + Gets the code represented by the mixed code document seen as a template. + + + + + Gets the list of code fragments in the document. + + + + + Gets the list of all fragments in the document. + + + + + Gets the encoding of the stream used to read the document. + + + + + Gets the list of text fragments in the document. + + + + + Create a code fragment instances. + + The newly created code fragment instance. + + + + Create a text fragment instances. + + The newly created text fragment instance. + + + + Loads a mixed code document from a stream. + + The input stream. + + + + Loads a mixed code document from a stream. + + The input stream. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a stream. + + The input stream. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + + + + Loads a mixed code document from a file. + + The complete file path to be read. + The character encoding to use. + Indicates whether to look for byte order marks at the beginning of the file. + The minimum buffer size. + + + + Loads the mixed code document from the specified TextReader. + + The TextReader used to feed the HTML data into the document. + + + + Loads a mixed document from a text + + The text to load. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + + + + Saves the mixed document to the specified stream. + + The stream to which you want to save. + The character encoding to use. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + + + + Saves the mixed document to the specified file. + + The location of the file where you want to save the document. + The character encoding to use. + + + + Saves the mixed document to the specified StreamWriter. + + The StreamWriter to which you want to save. + + + + Saves the mixed document to the specified TextWriter. + + The TextWriter to which you want to save. + + + diff --git a/Bin/Debug/SuperDesign/ICSharpCode.TextEditor.dll b/Bin/Debug/SuperDesign/ICSharpCode.TextEditor.dll new file mode 100644 index 0000000..f22dab3 Binary files /dev/null and b/Bin/Debug/SuperDesign/ICSharpCode.TextEditor.dll differ diff --git a/Bin/Debug/SuperDesign/ICSharpCode.TextEditor.xml b/Bin/Debug/SuperDesign/ICSharpCode.TextEditor.xml new file mode 100644 index 0000000..621a68f --- /dev/null +++ b/Bin/Debug/SuperDesign/ICSharpCode.TextEditor.xml @@ -0,0 +1,2390 @@ + + + + ICSharpCode.TextEditor + + + + + Describes the caret marker + + + + + No line viewer will be displayed + + + + + The row in which the caret is will be marked + + + + + Describes the indent style + + + + + No indentation occurs + + + + + The indentation from the line above will be + taken to indent the curent line + + + + + Inteligent, context sensitive indentation will occur + + + + + Describes the bracket highlighting style + + + + + Brackets won't be highlighted + + + + + Brackets will be highlighted if the caret is on the bracket + + + + + Brackets will be highlighted if the caret is after the bracket + + + + + Describes the selection mode of the text area + + + + + The 'normal' selection mode. + + + + + Selections will be added to the current selection or new + ones will be created (multi-select mode) + + + + + The default implementation. + + + + + This interface represents a container which holds a text sequence and + all necessary information about it. It is used as the base for a text editor. + + + + + Returns a valid line number for the given offset. + + + A offset which points to a character in the line which + line number is returned. + + + An int which value is the line number. + + If offset points not to a valid position + + + + Returns a for the given offset. + + + A offset which points to a character in the line which + is returned. + + + A object. + + If offset points not to a valid position + + + + Returns a for the given line number. + This function should be used to get a line instead of getting the + line using the . + + + The line number which is requested. + + + A object. + + If offset points not to a valid position + + + + Get the first logical line for a given visible line. + example : lineNumber == 100 foldings are in the linetracker + between 0..1 (2 folded, invisible lines) this method returns 102 + the 'logical' line number + + + + + Get the last logical line for a given visible line. + example : lineNumber == 100 foldings are in the linetracker + between 0..1 (2 folded, invisible lines) this method returns 102 + the 'logical' line number + + + + + Get the visible line for a given logical line. + example : lineNumber == 100 foldings are in the linetracker + between 0..1 (2 folded, invisible lines) this method returns 98 + the 'visible' line number + + + + + Get the next visible line after lineNumber + + + + + Get the next visible line below lineNumber + + + + + Inserts a string of characters into the sequence. + + + offset where to insert the string. + + + text to be inserted. + + + + + Removes some portion of the sequence. + + + offset of the remove. + + + number of characters to remove. + + + + + Replace some portion of the sequence. + + + offset. + + + number of characters to replace. + + + text to be replaced with. + + + + + Returns a specific char of the sequence. + + + Offset of the char to get. + + + + + Fetches a string of characters contained in the sequence. + + + Offset into the sequence to fetch + + + number of characters to copy. + + + + + returns the logical line/column position from an offset + + + + + returns the offset from a logical line/column position + + + + + Requests an update of the textarea + + + + + Commits all updates in the queue to the textarea (the + textarea will be painted) + + + + + Moves, Resizes, Removes a list of segments on insert/remove/replace events. + + + + + If true the document can't be altered + + + + + The attached to the instance + + + + + The attached to the instance + + + + + The attached to the instance + + + + + The attached to the instance + + + + + The attached to the instance + + + + + A collection of all line segments + + + The collection should only be used if you're aware + of the 'last line ends with a delimiter problem'. Otherwise + the method should be used. + + + + + The total number of lines in the document. + + + + + Get the whole text as string. + When setting the text using the TextContent property, the undo stack is cleared. + Set TextContent only for actions such as loading a file; if you want to change the current document + use the Replace method instead. + + + + + The current length of the sequence of characters that can be edited. + + + + + A container where all TextAreaUpdate objects get stored + + + + + Is fired when CommitUpdate is called + + + + + + + + + + + + + This delegate is used for document events. + + + + + This class contains more information on a document event + + + + + Creates a new instance off + + + + + Creates a new instance off + + + + + Creates a new instance off + + + + + Creates a new instance off + + + + + always a valid Document which is related to the Event. + + + + + -1 if no offset was specified for this event + + + + + null if no text was specified for this event + + + + + -1 if no length was specified for this event + + + + + This interface represents a container which holds a text sequence and + all necessary information about it. It is used as the base for a text editor. + + + + + Creates a new object. Only create + with this method. + + + + + Creates a new document and loads the given file + + + + + Creates a new document and loads the given file + + + + + Indicates that the highlighting definition that was tried to load was invalid. + You get this exception only once per highlighting definition, after that the definition + is replaced with the default highlighter. + + + + + This interface is used to describe a span inside a text sequence + + + + + The offset where the span begins + + + + + The length of the span + + + + + A list of events that are fired after the line manager has finished working. + + + + + Data structure for efficient management of the line segments (most operations are O(lg n)). + This implements an augmented red-black tree where each node has fields for the number of + nodes in its subtree (like an order statistics tree) for access by index(=line number). + Additionally, each node knows the total length of all segments in its subtree. + This means we can find nodes by offset in O(lg n) time. Since the offset itself is not stored in + the line segment but computed from the lengths stored in the tree, we adjusting the offsets when + text is inserted in one line means we just have to increment the totalLength of the affected line and + its parent nodes - an O(lg n) operation. + However this means getting the line number or offset from a LineSegment is not a constant time + operation, but takes O(lg n). + + NOTE: The tree is never empty, Clear() causes it to contain an empty segment. + + + + + Updates the length of a line segment. Runs in O(lg n). + + + + + Gets the index of an item. Runs in O(lg n). + + + + + Clears the list. Runs in O(1). + + + + + Tests whether an item is in the list. Runs in O(n). + + + + + Copies all elements from the list to the array. + + + + + Gets the total length of all line segments. Runs in O(1). + + + + + Gets the number of items in the collections. Runs in O(1). + + + + + Gets or sets an item by index. Runs in O(lg n). + + + + + An invalid enumerator value. Calling MoveNext on the invalid enumerator + will always return false, accessing Current will throw an exception. + + + + + Moves to the next index. Runs in O(lg n), but for k calls, the combined time is only O(k+lg n). + + + + + Moves to the previous index. Runs in O(lg n), but for k calls, the combined time is only O(k+lg n). + + + + + Gets the current value. Runs in O(1). + + + + + Gets the index of the current value. Runs in O(lg n). + + + + + Gets the offset of the current value. Runs in O(lg n). + + + + + Behaves like a start marker - when text is inserted at the anchor position, the anchor will stay + before the inserted text. + + + + + Behave like an end marker - when text is insered at the anchor position, the anchor will move + after the inserted text. + + + + + An anchor that can be put into a document and moves around when the document is changed. + + + + + Controls how the anchor moves. + + + + + A line/column position. + Text editor lines/columns are counting from zero. + + + + + Represents no text location (-1, -1). + + + + + This function takes a string and converts the whitespace in front of + it to tabs. If the length of the whitespace at the start of the string + was not a whole number of tabs then there will still be some spaces just + before the text starts. + the output string will be of the form: + 1. zero or more tabs + 2. zero or more spaces (less than tabIndent) + 3. the rest of the line + + + + + This method returns the expression before a specified offset. + That method is used in code completion to determine the expression given + to the parser for type resolve. + + + + + Returns true, if the line lineNumber is empty or filled with whitespaces. + + + + + Returns true, if the line lineNumber is empty or filled with whitespaces. + + + + + This class handles the bookmarks for a buffer + + + + + Creates a new instance of + + + + + Sets the mark at the line location.Line if it is not set, if the + line is already marked the mark is cleared. + + + + + true, if a mark at mark exists, otherwise false + + + + + Clears all bookmark + + + + + The lowest mark, if no marks exists it returns -1 + + + + + The highest mark, if no marks exists it returns -1 + + + + + returns first mark higher than lineNr + + + returns the next mark > cur, if it not exists it returns FirstMark() + + + + + returns first mark lower than lineNr + + + returns the next mark lower than cur, if it not exists it returns LastMark() + + + + + Contains all bookmarks + + + + + Gets/Sets the bookmark factory used to create bookmarks for "ToggleMarkAt". + + + + + This class is used for storing the state of a bookmark manager + + + + + Validates all bookmarks if they're in range of the document. + (removing all bookmarks < 0 and bookmarks > max. line number + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Converts a xml element to a object + + + + + Converts this to a xml element + + + + + Contains all bookmarks as int values + + + + + This class handles the auto and smart indenting in the textbuffer while + you type. + + + + + This interface handles the auto and smart indenting and formating + in the document while you type. Language bindings could overwrite this + interface and define their own indentation/formating. + + + + + This function formats a specific line after ch is pressed. + + + + + This function sets the indentation level in a specific line + + + The target caret position (length of new indentation). + + + + + This function sets the indentlevel in a range of lines. + + + + + Finds the offset of the opening bracket in the block defined by offset skipping + brackets in strings and comments. + + The document to search in. + The offset of an position in the block or the offset of the closing bracket. + The character for the opening bracket. + The character for the closing bracket. + Returns the offset of the opening bracket or -1 if no matching bracket was found. + + + + Finds the offset of the closing bracket in the block defined by offset skipping + brackets in strings and comments. + + The document to search in. + The offset of an position in the block or the offset of the opening bracket. + The character for the opening bracket. + The character for the closing bracket. + Returns the offset of the closing bracket or -1 if no matching bracket was found. + + + + Creates a new instance off + + + + + returns the whitespaces which are before a non white space character in the line line + as a string. + + + + + Could be overwritten to define more complex indenting. + + + + + Replaces the text in a line. + If only whitespace at the beginning and end of the line was changed, this method + only adjusts the whitespace and doesn't replace the other text. + + + + + Could be overwritten to define more complex indenting. + + + + + This function formats a specific line after ch is pressed. + + + the caret delta position the caret will be moved this number + of bytes (e.g. the number of bytes inserted before the caret, or + removed, if this number is negative) + + + + + This function sets the indentation level in a specific line + + + the number of inserted characters. + + + + + This function sets the indentlevel in a range of lines. + + + + + A highlighting strategy for a buffer. + + + + + Gets the color of an Environment element. + + + + + Used internally, do not call + + + + + Used internally, do not call + + + + + The name of the highlighting strategy, must be unique + + + + + The file extenstions on which this highlighting strategy gets + used + + + + + Used internally, do not call + + + + + Used internally, do not call + + + + + pushes the curWord string on the word list, with the + correct color. + + + + + get the string, which matches the regular expression expr, + in string s2 at index + + + + + returns true, if the get the string s2 at index matches the expression expr + + + + + This class is used to generate bold, italic and bold/italic fonts out + of a base font. + + + + + The scaled, regular version of the base font + + + + + The scaled, bold version of the base font + + + + + The scaled, italic version of the base font + + + + + The scaled, bold/italic version of the base font + + + + + The base font + + + + + Extens the highlighting color with a background image. + + + + + A color used for highlighting + + + + + The font used + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Converts a instance to string (for debug purposes) + + + + + If true the font will be displayed bold style + + + + + If true the font will be displayed italic style + + + + + The background color used + + + + + The foreground color used + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + The image used as background + + + + + Merges spans etc. from the other rule set into this rule set. + + + + + Used for mark next token + + + + + Creates a new instance of + + + + + String value to indicate to mark next token + + + + + Color for marking next token + + + + + If true the indication text will be marked with the same color + too + + + + + Used for mark previous token + + + + + Creates a new instance of + + + + + String value to indicate to mark previous token + + + + + Color for marking previous token + + + + + If true the indication text will be marked with the same color + too + + + + + Gets the escape character of the span. The escape character is a character that can be used in front + of the span end to make it not end the span. The escape character followed by another escape character + means the escape character was escaped like in @"a "" b" literals in C#. + The default value '\0' means no escape character is allowed. + + + + + This class represents single words with color information, two special versions of a word are + spaces and tabs. + + + + + Splits the into two parts: the part before is assigned to + the reference parameter , the part after is returned. + + + + + Converts a instance to string (for debug purposes) + + + + + Converts a instance to string (for debug purposes) + + + + + Is called when the LineSegment is deleted. + + + + + Is called when a part of the line is removed. + + + + + Is called when a part of the line is inserted. + + + + + Is called after another line's content is appended to this line because the newline in between + was deleted. + The DefaultLineManager will call Deleted() on the deletedLine after the MergedWith call. + + firstLineLength: the length of the line before the merge. + + + + + Is called after a newline was inserted into this line, splitting it into this and followingLine. + + + + + always a valid Document which is related to the Event. + + + + + -1 if no offset was specified for this event + + + + + -1 if no length was specified for this event + + + + + Interface to describe a sequence of characters that can be edited. + + + + + Inserts a string of characters into the sequence. + + + offset where to insert the string. + + + text to be inserted. + + + + + Removes some portion of the sequence. + + + offset of the remove. + + + number of characters to remove. + + + + + Replace some portion of the sequence. + + + offset. + + + number of characters to replace. + + + text to be replaced with. + + + + + Fetches a string of characters contained in the sequence. + + + Offset into the sequence to fetch + + + number of characters to copy. + + + + + Returns a specific char of the sequence. + + + Offset of the char to get. + + + + + This method sets the stored content. + + + The string that represents the character sequence. + + + + + The current length of the sequence of characters that can be edited. + + + + + Simple implementation of the ITextBuffer interface implemented using a + string. + Only for fall-back purposes. + + + + + Description of RedBlackTree. + + + + + Returns the iterator pointing to the specified item, or an iterator in End state if the item is not found. + + + + + Returns the iterator pointing to the first item greater or equal to . + + + + + Returns the iterator pointing to the first item greater than . + + + + + Gets a tree iterator that starts on the first node. + + + + + Gets a tree iterator that starts one node before the first node. + + + + + A IList{T} that checks that it is only accessed on the thread that created it, and that + it is not modified while an enumerator is running. + + + + + Central location for logging calls in the text editor. + + + + + This class implements a keyword map. It implements a digital search trees (tries) to find + a word. + + + + + Creates a new instance of + + + + + The number of elements in the table + + + + + Get the object, which was inserted under the keyword (line, at offset, with length length), + returns null, if no such keyword was inserted. + + + + + Inserts an object in the tree, under keyword + + + + + Accumulates mouse wheel deltas and reports the actual number of lines to scroll. + + + + + This class is for the undo of Document insert operations + + + + + This Interface describes a the basic Undo/Redo operation + all Undo Operations must implement this interface. + + + + + Undo the last operation + + + + + Redo the last operation + + + + + Creates a new instance of + + + + + Undo last operation + + + + + Redo last undone operation + + + + + This class is for the undo of Document insert operations + + + + + Creates a new instance of + + + + + Undo last operation + + + + + Redo last undone operation + + + + + This class is for the undo of Document insert operations + + + + + Creates a new instance of + + + + + Undo last operation + + + + + Redo last undone operation + + + + + To define a new key for the textarea, you must write a class which + implements this interface. + + + + + To define a new key for the textarea, you must write a class which + implements this interface. + + + + + When the key which is defined per XML is pressed, this method will be launched. + + + + + An array of keys on which this edit action occurs. + + + + + When the key which is defined per XML is pressed, this method will be launched. + + + + + An array of keys on which this edit action occurs. + + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + The end offset is the offset where the comment end string starts from. + + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + Executes this edit action + + The which is used for callback purposes + + + + handles the ctrl-backspace key + functionality attempts to roughly mimic MS Developer studio + I will implement this as deleting back to the point that ctrl-leftarrow would + take you to + + + + + Executes this edit action + + The which is used for callback purposes + + + + handles the ctrl-delete key + functionality attempts to mimic MS Developer studio + I will implement this as deleting forwardto the point that + ctrl-leftarrow would take you to + + + + + Executes this edit action + + The which is used for callback purposes + + + + An interface representing a portion of the current selection. + + + + + Returns true, if the selection is rectangular + + + + + Returns true, if the selection is empty + + + + + The text which is selected by this selection. + + + + + Default implementation of the interface. + + + + + Creates a new instance of + + + + + Converts a instance to string (for debug purposes) + + + + + Returns true, if the selection is empty + + + + + Returns true, if the selection is rectangular + + + + + The text which is selected by this selection. + + + + + This interface is used for the folding capabilities + of the textarea. + + + + + Calculates the fold level of a specific line. + + + + + A simple folding strategy which calculates the folding level + using the indent level of the line. + + + + + Used internally, not for own use. + + + + + This enum describes all implemented request types + + + + + This class is used to request an update of the textarea + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + This class manages the selections in a document. + + + + + Creates a new instance of + + + + + Creates a new instance of + + + + + Clears the selection and sets a new selection + using the given object. + + + + + Clears the selection. + + + + + Removes the selected text from the buffer and clears + the selection. + + + + + Returns true if the given offset points to a section which is + selected. + + + + + Returns a object giving the selection in which + the offset points to. + + + null if the offset doesn't point to a selection + + + + + Used internally, do not call. + + + + + Used internally, do not call. + + + + + Used internally, do not call. + + + + + A collection containing all selections. + + + + + true if the is not empty, false otherwise. + + + + + The text that is currently selected. + + + + + Insert the element represented by the completion data into the text + editor. + + TextArea to insert the completion data in. + Character that should be inserted after the completion data. + \0 when no character should be inserted. + Returns true when the insert action has processed the character + ; false when the character was not processed. + + + + Gets a priority value for the completion data item. + When selecting items by their start characters, the item with the highest + priority is selected first. + + + + + Processes a keypress. Returns the action to be run with the key. + + + + + Executes the insertion. The provider should set the caret position and then + call data.InsertAction. + + + + + Generates the completion data. This method is called by the text editor control. + + + + + Gets the index of the element in the list that is chosen by default. + + + + + Normal key, used to choose an entry from the completion list + + + + + This key triggers insertion of the completed expression + + + + + Increment both start and end offset of completion region when inserting this + key. Can be used to insert whitespace (or other characters) in front of the expression + while the completion window is open. + + + + + Description of AbstractCompletionWindow. + + + + + Adds a shadow to the create params if it is supported by the operating system. + + + + + Invoked when the mouse moves over this form or any child control. + Shows the mouse cursor on the text area if it has been hidden. + + + Derived classes should attach this handler to the MouseMove event + of all created controls which are not added to the Controls + collection. + + + + + Gets the list view width large enough to handle the longest completion data + text string. + + The default width of the list view. + The height of the list view. This is + used to determine if the scrollbar is visible. + The list view width to accommodate the longest completion + data text string; otherwise the default width. + + + + When this flag is set, code completion closes if the caret moves to the + beginning of the allowed range. This is useful in Ctrl+Space and "complete when typing", + but not in dot-completion. + + + + + Tells the insight provider to prepare its data. + + The name of the edited file + The text area in which the file is being edited + + + + Notifies the insight provider that the caret offset has changed. + + Return true to close the insight window (e.g. when the + caret was moved outside the region where insight is displayed for). + Return false to keep the window open. + + + + Gets the text to display in the insight window. + + The number of the active insight entry. + Multiple insight entries might be multiple overloads of the same method. + The text to display, e.g. a multi-line string where + the first line is the method definition, followed by a description. + + + + Gets the number of available insight entries, e.g. the number of available + overloads to call. + + + + + Gets the index of the entry to initially select. + + + + + This interface is used to describe a span inside a text sequence + + + + + The width of a tab. + + + + + The amount of spaces a tab is converted to if ConvertTabsToSpaces is true. + + + + + In this enumeration are all caret modes listed. + + + + + If the caret is in insert mode typed characters will be + inserted at the caret position + + + + + If the caret is in overwirte mode typed characters will + overwrite the character at the caret position + + + + + If the caret position is outside the document text bounds + it is set to the correct position by calling ValidateCaretPos. + + + + + The 'prefered' xPos in which the caret moves, when it is moved + up/down. Measured in pixels, not in characters! + + + + + The current caret mode. + + + + + Is called each time the caret is moved. + + + + + Is called each time the CaretMode has changed. + + + + + This class paints the textarea. + + + + + The position where the mouse cursor was when it was hidden. Sometimes the text editor gets MouseMove + events when typing text even if the mouse is not moved. + + + + + Shows the mouse cursor if it has been hidden. + + true to always show the cursor or false to show it only if it has been moved since it was hidden. + + + + Rectangle in text area that caused the current tool tip. + Prevents tooltip from re-showing when it was closed because of a click or keyboard + input and the mouse was not used. + + + + + This method is called on each Keypress + + + True, if the key is handled by this method and should NOT be + inserted in the textarea. + + + + + This method executes a dialog key + + + + + Inserts a single character at the caret position + + + + + Inserts a whole string at the caret position + + + + + Replaces a char at the caret position + + + + + This class is used for a basic text area control + + + + + This class is used for a basic text area control + + + + + This hashtable contains all editor keys, where + the key is the key combination and the value the + action. + + + + + Call this method before a long update operation this + 'locks' the text area so that no screen update occurs. + + + + + Call this method to 'unlock' the text area. After this call + screen update can occur. But no automatical refresh occurs you + have to commit the updates in the queue. + + + + + Loads a file given by fileName + + The name of the file to open + Automatically load the highlighting for the file + Automatically detect file encoding and set Encoding property to the detected encoding. + + + + Loads a file from the specified stream. + + The name of the file to open. Used to find the correct highlighting strategy + if autoLoadHighlighting is active, and sets the filename property to this value. + The stream to actually load the file content from. + Automatically load the highlighting for the file + Automatically detect file encoding and set Encoding property to the detected encoding. + + + + Gets if the document can be saved with the current encoding without losing data. + + + + + Saves the text editor content into the file. + + + + + Saves the text editor content into the specified stream. + Does not close the stream. + + + + + Overwritten refresh method that does nothing if the control is in + an update cycle. + + + + + Current file's character encoding + + + + + The current file name + + + + + The current document + + + + + If set to true the contents can't be altered. + + + + + true, if the textarea is updating it's status, while + it updates it status no redraw operation occurs. + + + + + supposedly this is the way to do it according to .NET docs, + as opposed to setting the size in the constructor + + + + + If true spaces are shown in the textarea + + + + + Specifies the quality of text rendering (whether to use hinting and/or anti-aliasing). + + + + + If true tabs are shown in the textarea + + + + + If true EOL markers are shown in the textarea + + + + + If true the horizontal ruler is shown in the textarea + + + + + If true the vertical ruler is shown in the textarea + + + + + The row in which the vertical ruler is displayed + + + + + If true line numbers are shown in the textarea + + + + + If true invalid lines are marked in the textarea + + + + + If true folding is enabled in the textarea + + + + + The width in spaces of a tab character + + + + + The line viewer style + + + + + The indent style + + + + + if true spaces are converted to tabs + + + + + if true spaces are converted to tabs + + + + + if true spaces are converted to tabs + + + + + if true spaces are converted to tabs + + + + + The base font of the text area. No bold or italic fonts + can be used because bold/italic is reserved for highlighting + purposes. + + + + + Is called when CachedClipboardContainsText should be updated. + If this property is null (the default value), the text editor uses + System.Windows.Forms.Clipboard.ContainsText. + + + This property is useful if you want to prevent the default Clipboard.ContainsText + behaviour that waits for the clipboard to be available - the clipboard might + never become available if it is owned by a process that is paused by the debugger. + + + + + This class paints the textarea. + + + + + This class views the line numbers and folding markers. + + + + + Get the marker brush (for solid block markers) at a given position. + + The offset. + The length. + All markers that have been found. + The Brush or null when no marker was found. + + + + returns line/column for a visual point position + + + + + returns line/column for a visual point position + + + + + returns line/column for a visual point position + + + + + returns logical line number for a visual point + + + + Gets the first visible logical line. + + + + Gets the width of a space character. + This value can be quite small in some fonts - consider using WideSpaceWidth instead. + + + + + Gets the width of a 'wide space' (=one quarter of a tab, if tab is set to 4 spaces). + On monospaced fonts, this is the same value as spaceWidth. + + + + + This class views the line numbers and folding markers. + + + + + This class stacks the last x operations from the undostack and makes + one undo/redo operation from it. + + + + + + + + + This class implements an undo stack + + + + + Gets/Sets if changes to the document are protocolled by the undo stack. + Used internally to disable the undo stack temporarily while undoing an action. + + + + + Call this method to undo the last operation on the stack + + + + + Call this method to redo the last undone operation + + + + + Call this method to push an UndoableOperation on the undostack, the redostack + will be cleared, if you use this method. + + + + + Call this method, if you want to clear the redo stack + + + + + Clears both the undo and redo stack. + + + + + + + + + + + + + + + + + + + + + Gets if there are actions on the undo stack. + + + + + Gets if there are actions on the redo stack. + + + + + Gets the number of actions on the undo stack. + + + + + Gets the number of actions on the redo stack. + + + + + This class paints the textarea. + + + + + Ensure that is visible. + + + + + Scroll so that the specified line is centered. + + Line to center view on + If this action would cause scrolling by less than or equal to + lines in any direction, don't scroll. + Use -1 to always center the view. + + + + This class handles all mouse stuff for a textArea. + + + + + This class views the line numbers and folding markers. + + + + + This class views the line numbers and folding markers. + + + + + Create a drag'n'drop event handler. + Windows Forms swallows unhandled exceptions during drag'n'drop, so we report them here. + + + + + This is a sample editaction plugin, it indents the selected area. + + + + + Manages the list of markers and provides ways to retrieve markers for specific positions. + + + + + Marks a part of a document. + + + + + Marks the text segment as read-only. + + + + + Gets the last offset that is inside the marker region. + + + + + Description of CodeCompletionListView. + + + + + Contains brushes/pens for the text editor to speed up drawing. Re-Creation of brushes and pens + seems too costly. + + + + + Horizontal ruler - text column measuring ruler at the top of the text area. + + + + + Description of Bookmark. + + + + + Gets the TextAnchor used for this bookmark. + Is null if the bookmark is not connected to a document. + + + + + Gets if the bookmark can be toggled off using the 'set/unset bookmark' command. + + + + + Description of BookmarkEventHandler. + + + + + Class that can open text files with auto-detection of the encoding. + + + + + A class that is able to draw a line on any control (outside the text editor) + + + + + Gets if some client handling the event has already shown a tool tip. + + + + + A stack of Span instances. Works like Stack<Span>, but can be cloned quickly + because it is implemented as linked list. + + + + + A collection that does not allows its elements to be garbage-collected (unless there are other + references to the elements). Elements will disappear from the collection when they are + garbage-collected. + + The WeakCollection is not thread-safe, not even for read-only access! + No methods may be called on the WeakCollection while it is enumerated, not even a Contains or + creating a second enumerator. + The WeakCollection does not preserve any order among its contents; the ordering may be different each + time the collection is enumerated. + + Since items may disappear at any time when they are garbage collected, this class + cannot provide a useful implementation for Count and thus cannot implement the ICollection interface. + + + + + Adds an element to the collection. Runtime: O(n). + + + + + Removes all elements from the collection. Runtime: O(n). + + + + + Checks if the collection contains an item. Runtime: O(n). + + + + + Removes an element from the collection. Returns true if the item is found and removed, + false when the item is not found. + Runtime: O(n). + + + + + Enumerates the collection. + Each MoveNext() call on the enumerator is O(1), thus the enumeration is O(n). + + + + diff --git a/Bin/Debug/SuperDesign/MGdUI.dll b/Bin/Debug/SuperDesign/MGdUI.dll new file mode 100644 index 0000000..50451be Binary files /dev/null and b/Bin/Debug/SuperDesign/MGdUI.dll differ diff --git a/Bin/Debug/SuperDesign/MGdUI.xml b/Bin/Debug/SuperDesign/MGdUI.xml new file mode 100644 index 0000000..28a274b --- /dev/null +++ b/Bin/Debug/SuperDesign/MGdUI.xml @@ -0,0 +1,1345 @@ + + + + MGdUI + + + + + a form that supports custom theme + + + + + 标签新建按钮事件 + + + + + 标签关闭按钮事件 + + + + + 标签创建时事件 + + + + + 在标签栏创建时激发 + + + + + + + 内边距 + + + + + 默认内边距 + + + + + 标题 + + + + + 皮肤/主题 + + + + + 是否可拖动改变窗体大小 + + + + + 窗体边界大小,鼠标移动到该边界将变成指针形状,拖动可改变窗体大小 + + + + + 窗体边框大小 + + + + + 标题栏高度 + + + + + 窗体圆角程度 + + + + + 窗体圆角样式 + + + + + 控制按钮相对于右上角的偏移量 + + + + + 关闭/最大化/最小化按钮之间的距离,可以设置成负值使它们重叠 + + + + + 标题栏图标尺寸 + + + + + 标题栏图标与窗体左边框的距离 + + + + + 标题距离左边的距离 + + + + + 窗体关闭按钮的尺寸 + + + + + 窗体最大化/还原按钮的大小 + + + + + 窗体最小化按钮的大小 + + + + + 是否显示阴影 + + + + + 窗体阴影宽度 + + + + + 使用阴影来缩放 + + + + + 窗体阴影颜色 + + + + + 阴影从里到外是逐渐变浅的,这个值设置深色部分的透明度,ARGB中的A值 + + + + + 阴影从里到外是逐渐变浅的,这个值设置浅色部分的透明度,ARGB中的A值 + + + + + 表示去掉自画的边框及标题栏后,剩下的可用的客户区区域,坐标相对于窗体左上角 + + + + + 表示去掉自画的边框及标题栏后,剩下的可用的客户区大小 + + + + + 表示MDI标签栏的区域,包括bottom-region + + + + + MGdUI皮肤 + + + + + 获取子窗体 + + + + + + 通过sendmessage方式激活子窗体以避免闪烁 + + + + + + 当子窗体关闭时激发 + + + + + + + 子窗体可视化变化 + + + + + + + 获取当前的子窗体列表 + + + + + + 判断所接收到的 wm_nc-calc-size 消息是否指示窗体即将最小化 + + + + + 判断所接收到的 wm_nc-calc-size 消息是否指示窗体即将最大化 + + + + + to make the client area to have 3D view + + + + + 消息 + + + + + + 画UI + + + + + + 在画背景时激发 + + + + + + 重写该方法解决窗体每次还原都会变大的问题 + + + + + 重写该方法解决在VS设计器中,每次保存一个新的尺寸,再打开尺寸会变大的问题 + + + + + 创建控件时激发 + + + + + 窗体可见变化时激发 + + + + + + 大小改变时激发 + + + + + + 在位置变化时激发 + + + + + + 窗体激活 + + + + + + 窗体关闭后激发 + + + + + + 加载时 + + + + + + 在子窗体激活时激发 + + + + + + 标签菜单 + + + + + 窗体上移动鼠标时激发 + + + + + + 获取当前点击的标签项 + + + + + 在窗体上按下鼠标时激发 + + + + + + 在窗体上放开鼠标时激发 + + + + + + 在鼠标离开窗体时激发 + + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + true if managed resources should be disposed; otherwise, false. + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + 引发 ValueChanged 事件 + + + + + + 引发 ThemeChanged 事件 + + + + + + 指示鼠标位于哪个区域 + + + + + 控件Value值发生变化后引发 + + + + + 控件绘制MainLine前引发, 可以设置Cancel参数来取消默认的绘制 + + + + + 控件绘制Button前引发 + + + + + 引发 ValueChanged 事件 + + + + + 引发 BeforePaintMainLine 事件 + + + + + 引发 BeforePaintButton 事件 + + + + + 将Value值加一个LargeChange量 + + + + + 将Value值减一个LargeChange量 + + + + + 将Value值加一个SmallChange量 + + + + + 将Value值减一个SmallChange量 + + + + + 提供产生各种路径的静态方法,比如圆角路径、关闭按钮上的x路径、+号路径 + + + + + 圆角样式 + + + + + 无 + + + + + 所有 + + + + + 上 + + + + + 下 + + + + + 左 + + + + + 右 + + + + + SimpleObject指的是只有一种状态(不像普通按钮一样有三种状态),并且其上的元素 + 布局比较简单的Object + + + + + + + + + + + + + + + + + + + + 该类处理mdi-bar的绘制及鼠标事件管理 + + + + + use left,top,right to location the bar in owner form, + the margin is from Form.ClientRectangle + + + + + 整个标签栏高度,包含标签栏底部区域、标签、标签顶部空隙 + + + + + 标签栏底部区域的高度 + + + + + 是否显示标签栏边框 + + + + + 是否显示标签栏背景 + + + + + 标签栏左内边距 + + + + + 标签栏右内边距 + + + + + 标签高度 + + + + + 激活的标签高度 + + + + + tab顶部与bar顶部的空间,这个值用来计算 BarHeight + + + + + 每个标签的左右边界可以不是垂直的,而是都有一个斜度 + + + + + tab与tab之间的距离,用负值可以使tab有重叠的效果 + + + + + 标签是否显示图标 + + + + + 是否显示标签关闭按钮 + + + + + 标签图标大小 + + + + + 标签图标距离左边的距离 + + + + + 标签文字距离左边的距离 + + + + + 标签关闭按钮的大小 + + + + + 标签关闭按钮距离右边的距离 + + + + + 是否显示新建标签按钮 + + + + + 新建标签按钮的大小 + + + + + 新建标签距离左边的距离 + + + + + 按钮与Bar底部的距离 + + + + + 一个tab允许的最小宽度 + + + + + 一个tab允许的最大显示宽度 + + + + + 标签正常宽度 + + + + + 同步_listTabItems与mdi主窗体实际存在的子form + + + + + 为每个tab分配空间,如果tab数目太多,则有些会被隐藏 + + + + + 重绘整个标签栏 + + + + + + 处理鼠标事件。该方法会触发一些click事件,重刷一些按钮等 + + + + + + + 该类表示一个单独的标签项 + + + + + 该标签所对应的窗体 + + + + + 最终分配到的整个tab的宽度 + + + + + 表示所对应的form是否仍未被关闭 + + + + + 是否因空间不足而被隐藏 + + + + + 返回全部显示该标签文本所需的长度 + + + + + + 返回显示全部文本时该tab所需的宽度,该宽度不超过bar-container + 规定的tabmaxwidth + + + + + + 居左 + + + + + 显示在最后一个标签后面 + + + + + DevExpress风格皮肤 + + + + + DevExpress风格皮肤 + + + + + 基础皮肤 + + + + + VS2013风格皮肤 + + + + + this theme is just for chrome one quarter style + + + + + for diamond ring style only + + + + + + + + + + 是否在这个按钮上按下了鼠标未释放 + + + + + 是否可见 + + + + + + + + + + 画两次可以加深颜色 + + + + + 用于在click事件中传回数据 + + + + + 获取或设置是否将绘制完全限制在指定的区域内 + + + + + + + + + + + + + + + + + 该类封装设置一个主题所需的信息,可以继承该类实现不同的主题 + + + + + 主题名称,用于标识主题,对主题进行简单描述 + + + + + 窗体边界大小,鼠标移动到该边界将变成指针形状,拖动可改变窗体大小 + + + + + 窗体边框大小 + + + + + 窗体标题栏高度 + + + + + 标题栏图标与窗体左边框的距离 + + + + + 标题栏图标尺寸 + + + + + 标题栏文本左边距 + + + + + 控制按钮(关闭按钮)相对于窗体右上角的偏移量 + + + + + 窗体关闭按钮的尺寸 + + + + + 窗体最大化/还原按钮的大小 + + + + + 窗体最小化按钮的大小 + + + + + 关闭/最大化/最小化按钮之间的距离,可以设置成负值使它们重叠 + + + + + 窗体圆角程度 + + + + + 窗体圆角样式 + + + + + 是否使用默认的圆角样式,该样式为左上角和右上角圆角, + 最好在窗体边框较粗时才使用该样式 + + + + + 是否在标题栏上绘制图标 + + + + + 是否在标题栏上绘制文本 + + + + + 是否显示窗体阴影 + + + + + 窗体阴影大小 + + + + + 拖动窗体阴影是否可以改变窗体大小 + + + + + 阴影的颜色,可以设置成其他颜色而不一定是黑色 + + + + + 阴影从里到外是逐渐变浅的,这个值设置深色部分的透明度,ARGB中的A值 + + + + + 阴影从里到外是逐渐变浅的,这个值设置浅色部分的透明度,ARGB中的A值 + + + + + 是否在客户区边界画线使其看起来有立体感 + + + + + 窗体标题栏文字是否居中显示 + + + + + 窗体边框最外一像素的颜色 + + + + + 窗体边框第二最外像素的颜色 + + + + + 窗体边框其他部分颜色,如果窗体边框大小大于2,则其他像素将用此颜色画出 + + + + + 标题栏颜色是从上到下渐变的,这个值设置上边的颜色值 + + + + + 标题栏颜色是从上到下渐变的,这个值设置下边的颜色值 + + + + + 标题栏文字颜色 + + + + + 窗体背景颜色,该值将覆盖窗体自带的BackColor属性值 + + + + + 窗体关闭按钮的颜色集合 + + + + + 窗体最大化/还原按钮的颜色集合 + + + + + 窗体最小化按钮的颜色集合 + + + + + 默认状态下关闭按钮背景图片 + + + + + 鼠标移过去时关闭按钮背景图片 + + + + + 鼠标按下时关闭按钮背景图片 + + + + + 默认状态下最大化按钮背景图片 + + + + + 鼠标移过去时最大化按钮背景图片 + + + + + 鼠标按下时最大化按钮背景图片 + + + + + 默认状态下恢复按钮背景图片 + + + + + 鼠标移过去时恢复按钮背景图片 + + + + + 鼠标按下时恢复按钮背景图片 + + + + + 默认状态下最小化按钮背景图片 + + + + + 鼠标移过去时最小化按钮背景图片 + + + + + 鼠标按下时最小化按钮背景图片 + + + + + 是否用SendMessage的方式切换子窗体,以避免子窗体切换时产生的闪烁 + + + + + Mdi-Bar与窗体左、上、右边界的距离,只用到这三个值,Bottom值没用到。 + 用这三个值来确定Mdi-Bar的宽度及其在窗体中的位置 + + + + + 内部左边空白,第一个标签将从这个空白距离之后开始 + + + + + 标签栏内部右边空白 + + + + + 标签栏背景颜色 + + + + + 标签栏边框颜色 + + + + + 标签栏背景图片 + + + + + 是否显示标签栏边框 + + + + + 标签栏下边区域的背景颜色 + + + + + 标签栏下边区域的高度 + + + + + 标签高度 + + + + + 被选中的标签高度,可以设置成与TabHeight不一样的值,以突出显示被选中状态 + + + + + 标签之间的距离,设成负值可以使标签有重叠的效果 + + + + + 标签的最大宽度,任何情况下标签都不能超过这个宽度 + + + + + 标签正常宽度,如果标签需要很短的宽度(比如20像素)就可以显示完上面的文字, + 但是Mdi-Bar上有足够的空间时,标签会以正常宽度(比如100像素)显示 + + + + + 标签最小宽度,当标签小于这个宽度时将被隐藏 + + + + + 标签梯度大小,标签可以不以矩形方式显示,而是有一个梯度/斜度。 + + + + + 标签顶部空白,这个值用于参与计算Mdi-Bar高度,计算方式为: + Mdi-Bar Height = BottomRegionHeight + TabHeight + TabTopSpace + + + + + 标签上是否显示子窗体图标 + + + + + 标签上是否显示子窗体关闭图标 + + + + + 选中状态的标签的上部背景色,与下部背景色不同时,标签背景色就有渐变效果 + + + + + 选中状态的标签的下部背景色,与上部背景色不同时,标签背景色就有渐变效果 + + + + + 标签激活时字体颜色 + + + + + 非选中状态的标签的字体颜色 + + + + + 非选中状态的标签的上部背景色 + + + + + 非选中状态的标签的下部背景色 + + + + + 标签外边框颜色 + + + + + 标签内边框颜色,这个颜色一般具有一定的透明度 + + + + + 是否显示标签边框 + + + + + 是否显示默认的新建标签按钮(NewTabBtn) + + + + + NewTabBtn与下边框的距离,这个值用来定位按钮的Y坐标 + + + + + 新建标签按钮与左边框的距离,这个值用来定位按钮的X坐标 + + + + + 新建标签按钮大小 + + + + + 按钮颜色集合 + + + + + 是否一直显示ListAllBtn,即使在没有标签被隐藏的情况下 + + + + + 《显示全部标签》按钮的位置 + + + + + 《显示全部标签》按钮与下边框的距离,这个值用来定位按钮的Y坐标 + + + + + 《显示全部标签》按钮与左边框的距离,这个值用来定位按钮的X坐标 + + + + + 《显示全部标签》按钮的颜色 + + + + + 《显示全部标签》按钮的大小 + + + + + 皮肤主题 + + + + + 新风格皮肤 + + + + + 新风格皮肤 + + + + + Location of cursor hot spot returnet in WM_NCHITTEST. + + + + + On the screen background or on a dividing line between windows + (same as HTNOWHERE, except that the DefWindowProc function produces a system beep to indicate an error). + + + + + In a window currently covered by another window in the same thread + (the message will be sent to underlying windows in the same thread until one of them returns a code that is not HTTRANSPARENT). + + + + + On the screen background or on a dividing line between windows. + + + + In a client area. + + + In a title bar. + + + In a window menu or in a Close button in a child window. + + + In a size box (same as HTSIZE). + + + In a menu. + + + In a horizontal scroll bar. + + + In the vertical scroll bar. + + + In a Minimize button. + + + In a Maximize button. + + + In the left border of a resizable window + (the user can click the mouse to resize the window horizontally). + + + + In the right border of a resizable window + (the user can click the mouse to resize the window horizontally). + + + + In the upper-horizontal border of a window. + + + In the upper-left corner of a window border. + + + In the upper-right corner of a window border. + + + In the lower-horizontal border of a resizable window + (the user can click the mouse to resize the window vertically). + + + In the lower-left corner of a border of a resizable window + (the user can click the mouse to resize the window diagonally). + + + In the lower-right corner of a border of a resizable window + (the user can click the mouse to resize the window diagonally). + + + In the border of a window that does not have a sizing border. + + + In a Close button. + + + In a Help button. + + + + Contains the new coordinates of a window that has been moved or resized, that is, it is the proposed new window coordinates. + + + + + Contains the coordinates of the window before it was moved or resized. + + + + + Contains the coordinates of the window's client area before the window was moved or resized. + + + + + Pointer to a WINDOWPOS structure that contains the size and position values specified in the operation that moved or resized the window. + + + + diff --git a/Bin/Debug/SuperDesign/MyDb.dll b/Bin/Debug/SuperDesign/MyDb.dll new file mode 100644 index 0000000..87d72d0 Binary files /dev/null and b/Bin/Debug/SuperDesign/MyDb.dll differ diff --git a/Bin/Debug/SuperDesign/MyDb.xml b/Bin/Debug/SuperDesign/MyDb.xml new file mode 100644 index 0000000..f4779a0 --- /dev/null +++ b/Bin/Debug/SuperDesign/MyDb.xml @@ -0,0 +1,4829 @@ + + + + MyDb + + + + + 基于XML实现的权限类 + + + + + 用户名 + + + + + 用户id + + + + + 密码 + + + + + 权限控制Id + + + + + 用户备注 + + + + + 是否是管理员权限 + + + + + 是否是超级管理员权限 + + + + + 设置权限 + + 权限名称 + 权限值 + 返回是否设置成功 + + + + 获取权限 + + 权限名称 + 默认权限值 + 返回权限值 + + + + 获取权限 + + 权限名称 + 返回权限值 + + + + 批量导入权限 + + 权限相关的内容 + 返回是否执行成功 + + + + 导出权限 + + 返回导出文本 + + + + 清除所有权限 + + 返回是否执行成功 + + + + 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的 + + + + + 汉字的机内码数组 + + + + + 机内码对应的拼音数组 + + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 转换后的拼音(全拼)字符串 + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 转换后的拼音(全拼)字符串 + + + + 把汉字转换成拼音(首拼) + + 汉字字符串 + 转换后的拼音(首拼)字符串 + + + + 把汉字转换成拼音(全拼) + + 汉字字符串 + 用指定字符分隔 + 转换后的拼音(全拼)字符串 + + + + 汉字转拼音缩写 + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (字符串) (小写) (空格间隔) + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (大写) + + 要转换的汉字字符串 + 拼音缩写 + + + + 汉字转拼音缩写 (字符串)(大写)(空格间隔) + + 要转换的汉字字符串 + 拼音缩写 + + + + 取单个字符的拼音声母 + + 要转换的单个汉字 + 拼音声母 + + + + 取单个字符的拼音声母 + + 要转换的单个汉字 + 拼音声母 + + + + Ini操作类 + + + + + 写入Ini + + + + + + + + + + 获取Ini + + + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + 声明INI文件的读操作函数 GetPrivateProfileString() + + + + + + + + + + + + 获取所有节点名称(Section) + + 存放节点名称的内存地址,每个节点之间用\0分隔 + 内存大小(characters) + Ini文件 + 内容的实际长度,为0表示没有内容,为nSize-2表示内存大小不够 + + + + 编码 + + + + + Ini操作类 + + + + + + 根据section取所有key和值 + + + + + + + 读取INI文件中指定INI文件中的所有节点名称(Section) + + 所有节点,没有内容返回string[0] + + + + 读取INI文件 + + 段,格式[] + 键 + 返回byte类型的section组或键值组 + + + + 根据section取所有key + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入ini + + + + + + + + 写入Ini + + + + + + + + 读取Ini + + + + + + + + 读取Ini + + + + + + + + + 读取Ini + + + + + + + + + 读取Ini + + + + + + + + + + + 写入ini + + + + + + + + + 删除Ini的Key + + + + + + + 删除Ini节点 + + + + + + 控件信息 + + + + + id + + + + + 控件对象 + + + + + 控件值类型 + + + + + 默认值 + + + + + 值类型 + + + + + 默认 + + + + + 取列表顺序值 + + + + + 取当前选择的列表值 + + + + + 取对象值 + + + + + 保存的设置类型 + + + + + Ini + + + + + XML + + + + + 对象值 + + + + + 显示的文本 + + + + + 图片序号 + + + + + id + + + + + Tag值 + + + + + 显示文本值 + + + + + + 星期数据 + + + + + 一周的开始时间 + + + + + 一周的结束时间 + + + + + XML操作类 + + + + + XML操作类 + + + + + 从XML文本中加载数据 + + + + + + 从指定的XML文本中加载 + + XML文本 + 如为1,表示加载成功,为0为失败 + + + + 载入空的XML文档 + + 如为1,表示加载成功,为0为失败 + + + + 从指定的文件中加载 + + XML文件路径 + 如为1,表示加载成功,为0为失败 + + + + 保存到指定文件中 + + 文件路径 + 如为1,表示保存成功,为0为失败 + + + + 判断节点是否存在 + + 属性名 + 属性值 + 返回1,表示存在,其它表示不存在 + + + + 定位节点 + + 属性名 + 属性值 + 返回第一个符合要求的结果 + + + + 定位节点,如果找不到节点,就新建一个节点 + + 属性名 + 属性值 + 返回第一个符合要求的结果 + + + + 根据用户的节点定位节点,输入节点时,一定要注意节点是属于类内部的,否则可能出错。 + + 返回第一个符合要求的结果 + + + + 定位设置节点 + + 返回第一个符合要求的结果 + + + + 在节点后插入数据 + + + + + + + 在节点前插入数据 + + + + + + + 获取节点数量 + + 属性名 + 属性值 + 返回符合要求的结果数量 + + + + 获取节点数量 + + 返回符合要求的结果数量 + + + + 获取节点数量 + + 属性名 + 属性值 + + + + 返回符合要求的结果数量 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 设置节点值 + + 属性名 + 属性值 + 如为1,表示加载成功,为0为失败 + + + + 读取指定节点的值 + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取属性值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取所有的节点名称 + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 读取指定节点的值 + + + + + + + + 获取XML文件的根元素 + + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 获取所有列表 + + 如为1,表示获取成功,为0为失败 + + + + 新增节点 + + + + + + + + 新增节点并定位到新节点 + + + + + + + + 新增设置节点并定位 + + + + + + 在指定节点前新增节点并定位到新节点 + + + + + + + + + 获取当前节点 + + + + + + 删除节点 + + + + + + 获取XML文本 + + + + + + 获取XML文本 + + + + + + 获取文本 + + + + + + 获取文本 + + + + + + 字符串操作类 + + + + + 字符串转Base64 + + + + + + + Base64转字符串 + + + + + + + 转换指定字符串为布尔类型 + + + + + 转换指定字符串为Double类型 + + + + + 已重载.计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 已重载.计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定字符串为Int类型 + + + + + 转换指定布尔类型为Int类型,true为1,false为0 + + + + + 判断指定字符串是否是布尔类型 + + + + + 判断指定字符串是否是Double类型 + + + + + 判断指定字符串是否是Int类型 + + + + + 根据年月日转换成日期 + + + + + + + + + 追加字符 + + + + + 获取2个字符串中间的内容,point1为空表示从首位开始算,point2为空表示算到结尾。 + + + + + 判断字符串是否只包含数字或英文 + + + + + + + 判断字符串是否匹配,支持?*通配符 + + 待匹配的字符串 + 匹配的通配符 + + + + + 通配符替换 + + + + + + + + + 获取匹配的内容 + + + + + + + + + 文件时间 + + + + + 创建时间 + + + + + 最后修改时间 + + + + + 访问时间 + + + + + 图片类型 + + + + + Bmp图片 + + + + + Jpeg图片 + + + + + Png图片 + + + + + Gif动态图片 + + + + + Tiff图片 + + + + + 对变量的拓展 + + + + + 替换文本(忽略大小写) + + + 需要替换的内容 + 替换后的内容 + + + + + 替换文本(忽略大小写),可支持通配符 + + + + + 是否是通配符表达式,不是,则普通替换,忽略大小写,是,则启用通配符替换 + + + + + 获取符合要求的第一个结果 + + + + 是否是正则 + + + + + 查找字符串,忽略大小写 + + + + + + + + + 查找字符串,忽略大小写 + + + + + + + + 判断字符串是否是数字或英文 + + + + + + + 是否在指定范围内 + + + + + + + + + 是否在指定范围内 + + + + + + + + + 转换指定字符串为Int类型 + + + 最小值 + 最大值 + 如果字符串不在范围内,则使用本默认值 + + + + + 转换指定布尔类型到Int类型,true为1,false为0 + + + + + + + 将指定类型转换成整型 + + + + + + + + 将指定类型转换成整型 + + + + + + + 将指定类型转换成长整型 + + + + + + + + 将指定类型转换成长整型 + + + + + + + 转换指定类型为Double类型 + + + + + + + + 转换指定类型为Double类型 + + + + + + + 转换DateTime类型到日期时间字符串 + + + + + + + 转换DateTime类型到日期字符串 + + + + + + + 转换DateTime类型到日期星期字符串 + + + + + + + 转换DateTime类型到Unix时间戳 + + + + + + + 转换Unix时间戳到DateTime类型 + + + + + + + 判断字符串是否与内容匹配 + + + + + + + + 将变量值转换成Double类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换到文件大小字符串 + + + + + + + 转换到文件大小字符串 + + + + + + + 转换指定类型为Decimal类型 + + + + + + + + 将变量值转换成Decimal类型 + + + + + + + 将变量值转换成Decimal类型,如果不在指定区域范围内,则使用默认值 + + + + + + + + + + 转换指定类型为DateTime类型 + + + + + + + + 将变量值转换成DateTime类型 + + + + + + + 转换指定类型为布尔类型 + + + + + + + 追加字符 + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + 获取指定字符串之间的内容 + + + + + + + + + + + + 判断指定字符串是否是Int类型 + + + + + + + 判断指定字符串是否是Double类型 + + + + + + + 判断是否是布尔类型 + + + + + + + 将字符串转换为Base64类型 + + + + + + + 判断字符串是否在指定长度 + + + + + + + + + 判断能否转换成日期格式 + + + + + + + 文件信息 + + + + + 获取版本号 + + + + + 获取版本号 + + + + + + + 判断是否是管理员方式运行 + + + + + + Hosts操作类 + + + + + 获取并转换hosts内容 + + hosts内容 + + + + + 获取hosts并转换hosts内容 + + hosts内容 + + + + + 追加内容到hosts里 + + 要追加的内容列表,每一行为ip 域名的格式 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 追加内容到hosts里 + + 要追加的内容 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 追加内容到hosts里 + + ip地址 + 域名 + 0表示无需新增,-1表示添加失败,1表示追加成功 + + + + 从hosts文件里删除内容 + + 要删除的内容 + 0表示无需删除,-1表示添加失败,1表示删除成功 + + + + 从hosts文件里删除内容 + + ip地址 + 域名 + 0表示无需删除,-1表示添加失败,1表示删除成功 + + + + Host信息 + + + + + IP + + + + + 域名 + + + + + 注释 + + + + + 是否要删除 + + + + + 音频播放类 + + + + + 临时音频文件 + + + + + 父窗口句柄 + + + + + 声音标签 + + + + play synchronously (default) + + + play asynchronously + + + silence (!default) if sound not found + + + pszSound points to a memory file + + + loop the sound until next sndPlaySound + + + don’t stop any currently playing sound + + + Stop Playing Wave + + + don’t wait if the driver is busy + + + name is a registry alias + + + alias is a predefined id + + + name is file name + + + name is resource name or atom + + + + 音频播放类 + + embedded music file + 临时保存的文件位置 + 父窗口句柄 + + + + 音频播放类 + + 要播放的音频位置 + 父窗口句柄 + + + + 音频播放类 + + + 父窗口句柄 + + + + 播放音频 + + + + + + 播放音频 + + + + + 关闭音频 + + + + + 文件操作类 + + + + + + + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除单个文件。 + + 删除的文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 永久删除单个文件。 + + 永久删除的文件名 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 删除一组文件。 + + 字符串数组,表示一组文件名 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + + + + + 移动一个文件到指定路径下 + + 要移动的文件名 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 移动一组文件到指定的路径下 + + 要移动的文件名数组 + 移动到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + + + + + 复制文件到指定的文件名或路径 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 复制一组文件到指定的路径 + + 要复制的文件名数组 + 复制到的目的路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 重命名一个文件为新名称,建议您使用更方便的Microsoft.VisualBasic.FileSystem.ReName();替换该方法 + + 要复制的文件名 + 复制到的目的文件名或路径 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 返回错误信息 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码,-200:表示其他异常 + + + + 删除单个或多个文件 + + 删除的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 + 指示是将文件放入回收站还是永久删除,true-放入回收站,false-永久删除 + 指示是否显示确认对话框,true-显示确认删除对话框,false-不显示确认删除对话框 + 指示是否显示进度对话框,true-显示,false-不显示。该参数当指定永久删除文件时有效 + 反馈错误消息的字符串 + 操作执行结果标识,删除文件成功返回0,否则,返回错误代码 + + + + 移动或复制一个或多个文件到指定路径下 + + 操作类型,是移动操作还是复制操作 + 要移动或复制的文件名,如果是多个文件,文件名之间以字符串结尾符'\0'隔开 + 移动到的目的位置 + 指示是否显示确认对话框,true-显示确认对话框,false-不显示确认对话框 + 指示是否显示进度对话框 + 指示当文件名重复时,是否自动为新文件加上后缀名 + 反馈错误消息的字符串 + 返回移动操作是否成功的标识,成功返回0,失败返回错误代码 + + + + 如果指定文件夹不存在,则创建文件夹 + + + + + + 获取一个文件的全名 + + 文件名 + 返回生成文件的完整路径名 + + + + 获取一个文件的全名 + + 文件名 + 返回生成文件的完整路径名 + + + + 解释错误代码 + + 代码号 + 返回关于错误代码的文字描述 + + + + 运行文件 + + + + + + + + /运行文件 + + + + + + + + 运行程序 + + + + + + + 打开文件 + + + + + + + 打开文件夹并定位文件 + + + + + + + 打开网址 + + + + + + + 判断文件名是否有效 + + + + + + + 转换到有效文件名 + + + + + + + 追加日志 + + + + + + 追加文件 + + + + + + 读取文件内容,可以自动识别文件编码 + + + + + + + 读取文件所有行,可以自动识别文件编码 + + + + + + + 写入所有文本行到文件,如果文件夹不存在,会自动创建 + + + + + + + + 写入所有文本到文件,如果文件夹不存在,会自动创建 + + + + + + + + 从文件中加载图片,使用本方法,不会导致图片文件被占用。 + + + + + + 获取文件大小 + + + + + + + 添加文件到指定文件夹,会进行自动重命名,并返回重命名后的文件名(含路径) + + 要添加的文件路径 + 要添加到的文件夹 + 是否根据时间进行重命名 + 返回是否成功执行 + 成功执行则返回路径,否则返回空 + + + + 获取文件大小字符串 + + + + + + + 获取文件大小字符串 + + + + + + + 复制内容到剪切板 + + + + + + 添加某个控件为支持拖放属性 + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + + 保存高质量不失真照片 + + + + + + + + 获取绝对路径 + + + + + + + 获取相对路径 + + + + + + + 获取图标 + + + + + + + + + + + + + + 销毁图标 + + + + + + + 获取文件图标 + + + + + + + + + + 用于取得一个文本文件的编码方式(Encoding)。 + + + + + 用于取得一个文本文件的编码方式(Encoding)。 + + + + + 取得一个文本文件的编码方式。如果无法在文件头部找到有效的前导符,Encoding.Default将被返回。 + + 文件名。 + + + + + 取得一个文本文件流的编码方式。 + + 文本文件流。 + + + + + 取得一个文本文件的编码方式。 + + 文件名。 + 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 + + + + + 取得一个文本文件流的编码方式。 + + 文本文件流。 + 默认编码方式。当该方法无法从文件的头部取得有效的前导符时,将返回该编码方式。 + + + + + 通过给定的文件流,判断文件的编码类型 + + 文件流 + 文件的编码类型 + + + + 判断是否是不带 BOM 的 UTF8 格式 + + + + + + + 新模态窗体 + + + + + 设置窗体返回的结果值,并关闭窗体。 + + 当前窗体 + 模态变量 + 防止 + + + + 窗体返回的结果事件 + + + + + + + 当打开的窗体返回结果时激发 + + + + + 窗体返回的状态 + + + + + 实例化类 + + 父窗体,如果为null,则取桌面为父窗体 + + + + + 获取最顶级的父窗口 + + + + + + 显示新模态窗体,会暂时禁用父窗体,关闭当前窗体后,父窗体会恢复。 + + + + + 只运行一个实例,打开后,所有窗体都依然有效。 + + + + + + 显示窗体 + + 显示的位置 + + + + 显示在父窗体中间 + + + + + 窗体显示位置 + + + + + 右上角 + + + + + 顶部中间 + + + + + 顶部右边 + + + + + 中间 + + + + + 左下角 + + + + + 底部中间 + + + + + 右下角 + + + + + 父窗体居中 + + + + + 日期时间的操作类 + + + + + 获取当前是周几,周一到周日,分别是1-7. + + + + + + + 获取当前是周几,1-7,分别是返回一到日. + + + + + + + 获取当前是周几,输入日期,根据周几,分别是返回一到日. + + + + + + + 获取一周的开始和结束,开始时间为第一天的0点,结束时间以最后一天的0点为结束时间 + + + + + + + 获取2个日期相差几周 + + + + + + + + 获取2个日期相差几个月 + + + + + + + + 获取一个月的开始 + + + + + + + 判断是否在同一个星期。 + + + + + + + + 判断是否在同一个月。 + + + + + + + + 判断是否在同一天 + + + + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + + + + + 计算两个日期的时间间隔,返回的是时间间隔的日期差的绝对值. + + 第一个日期和时间 + 第二个日期和时间 + 是否显示秒 + + + + + 计算一个时间与当前本地日期和时间的时间间隔,返回的是时间间隔的日期差的绝对值. + + 一个日期和时间 + + + + + 将c# DateTime时间格式转换为Unix时间戳格式 + + 时间 + long + + + + 时间戳转为C#格式时间 + + + + + + + 将c# DateTime时间格式转换为js时间戳格式 + + 时间 + long + + + + JS时间戳转为C#格式时间 + + + + + + + 根据年月日转换成日期 + + + + + + + + + 根据日期和时间转换成日期时间 + + + + + + + + 将时间转换成当前分钟开始的时间 + + + + + + + 将时间转换成当前秒钟开始的时间 + + + + + + + 当前时间在这一天里的秒数 + + + + + + + 窗体操作类 + + + + + 设置Comobox的行间距 + + + + + + + 移除关闭按钮。返回值,非零表示成功,零表示失败。 + + 窗口的句柄 + 是否成功 + + + + 把窗体放到最前 + + + + + + 显示窗体 + + + + + + + + 设置窗体是否置顶 + + + + + + + 显示没有焦点的窗口 + + + + + + 根据句柄获取窗口文本 + + + + + + + 根据句柄获取窗口类 + + + + + + + 获取当前活动的窗口句柄 + + + + + + 设置为当前活动窗口 + + + + + + + 根据窗口句柄来获得进程id + + + + + + + 显示窗体 + + + + + + 设置窗体父窗体为桌面,不会随着显示桌面而最小化,但无法设置窗体透明度 + + + + + + 结束进程 + + + + + + + 打开窗体,只打开一个实例(非模态) + + + + + + + 设置注册表操作,部分功能需要管理员权限 + + + + + 访问的注册表位置(64位还是32位) + + + + + 访问的注册表节点 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + 启动命令 + + + + + 设置是否开机启动 + + 是否开机启动 + 开机启动名称 + + + + + 把指定文件设置为开机启动或取消开机启动 + + 是否开机启动 + 开机启动名称 + 要开机启动的文件路径 + + + + + 检查是否开机启动 + + 开机启动名称 + 开机启动命令 + + + + + 检查是否开机启动 + + 开机启动名称 + + + + + 判断指定文件是否是开机启动 + + 开机启动名称 + 文件路径 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + + + + + 判断当前程序是否是开机启动 + + 开机启动名称 + 启动命令行 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 采用的IE模式 + + + + + IE7兼容视图 + + + + + IE8 标准模式 + + + + + IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE9 标准模式 + + + + + IE9 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + IE10 标准模式 + + + + + IE10 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置当前软件的浏览器控件内核版本 + + 7000 表示IE7兼容视图模式;8000 表示IE8 标准模式 ;8888 表示IE8 强制标准模式,在渲染失败的情况下不尝试用兼容视图模式 + + + + + 设置指定文件的浏览器控件内核版本 + + 文件名,要求不带路径 + IE内核版本 + + + + + 设置当前软件的浏览器控件内核版本 + + IE内核版本 + + + + + 系统函数 + + + + + + + + + + 红 + + + + + 绿 + + + + + 蓝 + + + + + 获取屏幕伽马值 + + + + + + + + 设置屏幕伽马值 + + + + + + + + 获取键盘和鼠标没有操作的时间 + + + + + + 设置屏幕 Gamma值 + + + + + + + + + 设置屏幕亮度 + + + + + + + 获取系统 + + + + + + 窗体操作类 + + + + + 构造函数 + + + + + + 析构 + + + + + 设置让窗体支持移动 + + + + + 是否允许可调节大小 + + + + + 可调节窗体大小的宽度 + + + + + + + + + + + 给控件增加拖放功能的类 + + + + + 拖放实例 + + + + + 高级拖放事件 + + + + + + + + + + 使支持拖放属性 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 网络操作类 + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 通过NetworkInterface读取网卡Mac + + + + + + 根据mac字符串来获取最终的mac地址,可以是各种MAC地址格式,非法的内容将返回null + + + + + + + 远程唤醒 + + + + + + + + 远程唤醒 + + + + + + + + + 消息客户端类 + + + + + 判断当前消息主服务器是否创建成功 + + + + + 最后一次接收消息的时间,可用来判断服务端是否有响应 + + + + + 主句柄 + + + + + 当收到消息时激发 + + + + + 连接上主服务器时触发 + + + + + 收到服务端关闭通知 + + + + + 收到服务端关闭通知,即将关闭 + + + + + 服务端大小改变时激发 + + + + + 实例化客户端 + + 服务端ID + 当前客户端ID,会向服务器报告当前ID + 客户端 + + + + + + + + + 断开服务端连接 + + + + + 发送消息,采用多线程发送 + + + + + + + 向服务端发送心跳包 + + + + + 判断服务端句柄是否存在。 + + + + + + 共享内存 + + + + + 写共享内存 + + 需要映射的文件的字节数量 + 映射对象(简单类型、结构体等) + 文件映射对象的名称 + + + + + 写共享内存 + + 需要映射的文件的字节数量 + 映射对象(简单类型、结构体等) + 文件映射对象的名称 + 发送消息的窗口句柄 + 发送消息 + + + + + 读共享内存 + + 需要映射的文件的字节数量 + 类型 + 文件映射对象的名称 + 返回读到的映射对象 + + + + 读共享内存 + + 需要映射的文件的字节数量 + 类型 + 文件映射对象的名称 + 返回读到的映射字节数据 + + + + 消息服务器 + + + + + 消息事件 + + + + + + + 大小改变事件 + + + + + + + + 即将关闭事件 + + + + + + + 当收到消息时激发 + + + + + 消息处理类 + + + + + + + + + + + + + + + + + + + + + + + 发送消息,采用单线程发送 + + 要发送到的句柄 + 编号 + 消息内容 + + + + 发送消息,采用多线程发送 + + 要发送到的句柄 + 编号 + 消息内容 + + + + 消息类 + + + + + 是否取消 + + + + + 来源句柄 + + + + + + + + + + 消息文本 + + + + + 需要回复的内容 + + + + + 消息服务端类 + + + + + 判断当前消息主服务器是否创建成功 + + + + + 当收到消息时激发 + + + + + 当收到自定义消息时(非系统消息)激发 + + + + + 有消息客户端发起连接请求时激发 + + + + + 有消息客户端连接成功时激发 + + + + + 有消息客户端断开连接时激发 + + + + + + + 服务端ID,需要唯一性,共客户端识别 + 服务端 + + + + 释放资源 + + + + + 判断是否包含指定客户端 + + + + + + + + + + + + 设置客户端大小 + + + + + 根据客户端ID,获取客户端对象 + + + + + + + 根据客户端句柄,获取客户端对象 + + + + + + + 关闭所有客户端 + + + + + 关闭指定客户端 + + + + + + 关闭指定客户端 + + + + + + 向所有客户端发送消息,单线程 + + + + + + + 向指定客户端发送消息 + + + + + + + + 关闭在指定时间前失去响应的子客户端 + + + + + + 客户端信息 + + + + + 客户端句柄 + + + + + 客户端ID + + + + + 客户端连接时间 + + + + + 心跳时间 + + + + + 数据库引擎 + + + + + 数据库枚举类型 + + + + + Odbc引擎 + + + + + OleDb引擎 + + + + + Oracle引擎 + + + + + MSSQL引擎 + + + + + SQLite引擎 + + + + + MySql引擎 + + + + + 判断DataSet是否包含数据 + + + + + + + 获取首行数据 + + + + + + + 获取第一行第一列的值 + + + + + + + 将DataSet类型转换为RyQuickSQL列表类型 + + + + + + + 将DataSet类型转换为RyQuickSQL列表类型 + + + + + + + + 数据库操作接口 + + + + + 连接数据库 + + + + + + 断开数据库 + + + + + + 获取数量 + + + + + + + + 获取分页语句 + + + + + + + + + 获取分页语句 + + + + + + + + + 获取分页语句 + + + + + + + + + + 获取分页语句 + + + + + + + + + + 添加Parameter参数 + + + + + + + 清空Parameter参数 + + + + + + + 获取Parameter值 + + + + + + 根据RyQuickSQL类来获取Parameter值 + + + + + + + 开始执行事务 + + + + + 提交事务 + + + + + 判断是否包含数据 + + + + + + + + 返回-1000表示该数据库不支持本接口 + + + + + + + 读取数据 + + + + + + + 读取数据 + + + + + + + + 读取数据 + + + + + + + + 根据id号获取数据 + + + + + + + + 执行SQL语句 + + + + + + + + 执行SQL语句 + + + + + + + + 执行SQL语句 + + + + + + + 根据id号删除数据 + + + + + + + + 创建数据库 + + + + + + + 释放资源 + + + + + SQL字段类型 + + + + + SQL字段类型 + + + + + + + SQL字段类型 + + + + + + + + SQL字段名 + + + + + SQL字段值 + + + + + SQL字段长度 + + + + + 不是真的值,而是用于计算的值 + + + + + SQL快速操作类 + + + + + SQL快速操作类 + + + + + + 表名 + + + + + 操作字段列表 + + + + + 清理使用资源 + + + + + 清理使用资源 + + + + + 操作参数列表 + + + + + 操作参数列表 + + + + + 添加字符串字段 + + + + + + + 添加null值字段 + + + + + + 添加日期字段 + + + + + + + 添加int字段 + + + + + + + 添加double字段 + + + + + + + 添加decimal字段 + + + + + + + 添加bool字段 + + + + + + + 添加用于计算的值 + + + + + + + 添加Int64字段 + + + + + + + 清空内容 + + + + + 数量 + + + + + + + + + + 输出多条件搜索。 + + 字段名,多个字段请用逗号分隔。 + 多个条件之间请用空格隔开 + + + + + 获取插入SQL语句 + + + + + + 获取更新SQL语句 + + + + + + 添加参数 + + + + + + + 获取Ole参数 + + + + + + 获取SQL参数 + + + + + + AES加密解密类 + + + + + AES加密算法 + + 明文字符串 + 密钥 + 返回加密后的密文字节数组 + + + + AES解密 + + 密文字节数组 + 密钥 + 返回解密后的字符串 + + + + 加密 + + + + + + + + 解码 + + + + + + + + 转换密钥到合法密钥 + + + + + + + Base64编码类 + + + + + 编码 + + + + + + + 把字符串编码成Base64字符串 + + + + + + + + 解码 + + + + + + + MD5和SHA1操作类 + + + + + 获取MD5 + + + + + + + 获取MD5 + + + + + + + 获取SHA1 + + + + + + + 获取SHA1 + + + + + + + 获取HmacSHA1 + + + + + + + + 获取SHA256 + + + + + + + 获取HmacSHA256 + + + + + + + 获取SHA224 + + + + + + + 获取SHA512 + + + + + + + 获取HmacSHA512 + + + + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + + + + 利用IDisposable的using语法糖方便的释放锁定操作 + 内部类 + + + + 读写锁对象 + + + + 是否为写入模式 + + + + 利用IDisposable的using语法糖方便的释放锁定操作 + 构造函数 + + 读写锁 + 写入模式为true,读取模式为false + + + 释放对象时退出指定锁定模式 + + + + 空的可释放对象,免去了调用时需要判断是否为null的问题 + 内部类 + + + + 空的可释放对象 + + + + 空的释放方法 + + + + 读写锁 + + + + 保存数据 + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + 构造函数 + + + + 使用using代替lock操作的对象,可指定写入和读取锁定模式 + 构造函数 + 为Data属性设置初始值 + + + + 获取或设置当前对象中保存数据的值 + + 获取数据时未进入读取或写入锁定模式 + 设置数据时未进入写入锁定模式 + + + 是否启用,当该值为false时,Read()和Write()方法将返回 Disposable.Empty + + + + 进入读取锁定模式,该模式下允许多个读操作同时进行 + 退出读锁请将返回对象释放,建议使用using语块 + Enabled为false时,返回Disposable.Empty; + 在读取或写入锁定模式下重复执行,返回Disposable.Empty; + + + + 进入写入锁定模式,该模式下只允许同时执行一个读操作 + 退出读锁请将返回对象释放,建议使用using语块 + Enabled为false时,返回Disposable.Empty; + 在写入锁定模式下重复执行,返回Disposable.Empty; + + 读取模式下不能进入写入锁定状态 + + + + 中国农历类,最大支持公元0-9999年 + + 日期:2019-02-09 + 作者:http://www.cnblogs.com/zjfree/ + + + + 日历类型 + + + + + 无效 + + + + + Julian 日历 + + + + + Gregorian 日历 + + + + + 有效 + + + + + 公历节日 + + + + + 农历节日 + + + + + 某个月第n个星期几 + + + + + 获取农历 + + + + + + + 获取农历 + + + + + + + + + 获得某农历年的闰月,返回 1~12 对应一月到十二月,返回 0 表示无闰月 + + + + + + + 农历搜索方向 + + + + + 无效 + + + + + 向上 + + + + + 向下 + + + + + {* 日月食类型, 无, 日食, 月全食, 月偏食 } + + + + + 无 + + + + + 日食 + + + + + 月全食 + + + + + 月偏食 + + + + + {* 月相, 无, 朔, 望} + + + + + 无 + + + + + 朔 + + + + + 望 + + + + + 获得某公历年月日的农历日数和该日月相以及日月食类型和时刻 + + + + + + + + + + + + 获得某公历年月日的农历月数 + + + + + + + + + 获取阳历日期对应的农历日期 + + + + + + + + + + + + + 获得某公历年月日的农历月日和是否闰月的信息 + + + + + + + + + + + + 获得等效标准日数对应的某公历日,倒推而来 + + + + + + + + + + 比较两个农历日期(包括闰月信息),1 大于2返回1、1等于2返回0、1小于2返回-1 + + + + + + + + + + + + + + 获得某农历年月日(加是否闰月)的公历年月日 + 该函数采用反向二分法查找 + + + + + + + + + + + + + 获取农历某一个月的总天数 + + + + + + + + + 获取农历年份,范围约1901-2101年 + + + + + + + 获取农历年份,范围约0-9999年 + + + + + + + + + 获取农历月份,范围约1901-2101年 + + + + + + + 获取农历月份,范围约0-9999年 + + + + + + + + + 获取中文表示的农历月份 + + + + + + + 获取农历日,范围约1901-2101年 + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + + + 获取农历日,范围约0-9999年 + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + + + 返回y年第n个节气(如小寒为1)的日差天数值(pd取值真假,分别表示平气和定气) + + + + pd取值真假,分别表示平气和定气 + + + + + 获取等效标准日数 + + + + + + + + + 取本月天数,不考虑 1582 年 10 月的特殊情况 + + + + + + + + 获取节气,范围约1901-2101年 + + + + + + + 获取节气,范围约0-9999年 + + + + + + + + + 获取节气 + + + + + + + + + + + + 获取公历节日 + + + + + + + 获取公历节日 + + + + + + + + + 获取指定月份的第n个星期几的节日 + + + + + + + 返回星座,范围约1901-2101年 + + + + + 返回星座,范围约0-9999年 + + + + + 获取农历节日 + + + + + + + + + 获取农历节日 + + + + + + + 判断y年m月(1,2,..,12,下同)d日是Gregorian历还是Julian历(opt=1,2,3分别表示标准日历,Gregorge历和Julian历),是则返回1,是Julian历则返回0,若是Gregorge历所删去的那10天则返回-1 + + + + + 返回阳历y年m月d日的日差天数(在y年年内所走过的天数,如2000年3月1日为61) + + + + + 返回阳历y年日差天数为x时所对应的月日数(如y=2000,x=274时,返回1001(表示10月1日,即返回100*m+d)) + + + + + 获取指定日期的节气。 + + 要获取的年 + 要获取的月 + + + 立春:立是开始的意思,春是蠢动,表示万物开始有生气,这一天春天开始。 + 雨水:降雨开始,雨水将多。 + 惊蛰:春雷响动,惊动蛰伏地下冬眠的生物,它们将开始出土活动。 + 春分:这是春季九十天的中分点,这一天昼夜相等,所以古代曾称春分秋分为昼夜分。 + 清明:明洁晴朗,气候温暖,草木开始萌发繁茂。 + 谷雨:雨生百谷的意思。雨水增多,适时的降雨对谷物生长很为有利。 + 立夏:夏天开始,万物渐将随温暖的气候而生长。 + 小满:满指籽粒饱满,麦类等夏热作物这时开始结籽灌浆,即将饱满。 + 芒种:有芒作物开始成熟,此时也是秋季作物播种的最繁忙时节。 + 夏至:白天最长,黑夜最短,这一天中午太阳位置最高,日影短至终极,古代又称这一天为日北至或长日至。 + 小暑:暑是炎热,此时还未到达最热。 + 大暑:炎热的程度到达高峰。 + 立秋:秋天开始,植物快成熟了。 + 处暑:处是住的意思,表示暑气到此为止。 + 白露:地面水气凝结为露,色白,是天气开始转凉了。 + 秋分:秋季九十天的中间,这一天昼夜相等,同春分一样,太阳从正东升起正西落下。 + 寒露:水露先白而后寒,是气候将逐渐转冷的意思。 + 霜降:水气开始凝结成霜。 + 立冬:冬是终了,作物收割后要收藏起来的意思,这一天起冬天开始。 + 小雪:开始降雪,但还不多。 + 大雪:雪量由小增大。 + 冬至:这一天中午太阳在天空中位置最低,日影最长,白天最短, 黑夜最长,古代又称短日至或日南至。 + 小寒:冷气积久而为寒,此时尚未冷到顶点。 + 大寒:天候达到最寒冷的程度 + + + + + 获取年柱。 + + + + + 获得月柱 + + + + + + + 获取日柱。 + + + + + 返回甲子数x对应的天干数(如33为3) + + + + + 返回甲子数x对应的地支数(如33为9) + + + + + 获取日的天干地支 + + + + + + + 返回甲子数x对应的天干字符串 + + + + + 返回甲子数x对应的地支字符串 + + + + + 返回甲子数x对应的干支字符串 + + + + + + + 获取三伏开始时间 + + + 0表示1伏,1表示2伏,2表示3伏 + + + + + 节气 + + + + + 节气的时间。 + + + + + 节气名。 + + + + + 热键转换类 + + + + + 功能键。 + + + + + 修改键。 + + + + + 转换功能键到谷歌浏览器专用 + + + + + 将chrome功能键转换为普通功能键 + + + + + + + 按键值。 + + + + + 初始化类 的新实例。 + + The modifiers. + The key code. + + + + + + + + + + + + + + + + + 初始化类 的新实例。 + + + + + 加载热键 + + + + + + + 加载热键 + + + + + + 加载热键 + + + + + + 判断是否是热键 + + + + + 获取当前热键 + + + + + 已重载,返回“Ctrl+Alt+A”格式的字符串。 + + 类似“Ctrl+Alt+A”格式的字符串 + + + + 返回“Ctrl+Alt+A”格式的字符串。 + + 类似“Ctrl+Alt+A”格式的字符串 + + + + 功能键 + + + + + 无 + + + + + Alt键 + + + + + Ctrl键 + + + + + Shift键 + + + + + Win键 + + + + + 热键类 + + + + + 热键类 + + + + + + 热键注销 + + + + + 热键是否有效 + + + + + 释放热键 + + + + + 注册热键 + + + + + + + + + 注册热键 + + + + + + + + + 删除热键 + + + + + + + 删除所有热键 + + + + + 热键事件 + + + + + + 当使用热键时发生的事件 + + + + + 热键消息过滤 + + + + + + + 热键类型 + + + + + 热键id + + + + + 功能键 + + + + + 普通键 + + + + + 热键类型 + + + + + + + + Win32 API + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 获取当前前台窗口句柄 + + + + + + 获得当前活动窗体 + + + + + + 设置活动窗体 + + + + + + + 获取类名 + + + + + + + + + 获取当前线程对应的进程ID + + + + + + + + 判断指定句柄是否是一个窗口 + + + + + + + 获取窗口标题 + + + + + + + + + 查找窗口 + + + + + + + + 设置父窗口 + + + + + + + + 移动窗口 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 结束进程 + + + + + + + + 发送消息 + + + + + + + + + + 发送消息 + + + + + + + + + 获取窗口位置和大小 + + + + + + + + 矩形 + + + + + 最左坐标 + + + + + 最上坐标 + + + + + 最右坐标 + + + + + 最下坐标 + + + + + WM_COPYDATA消息的主要目的是允许在进程间传递只读数据。 + + + + + 系统通道ID + + + + + 用户通道ID + + + + + + + + + + + + + + + + + + + + + + + + + 获取消息 + + + + + + + + 发送消息 + + + + + + + + + + 设置父窗口 + + + + + + + + diff --git a/Bin/Debug/SuperDesign/MyDb_SQLite.dll b/Bin/Debug/SuperDesign/MyDb_SQLite.dll new file mode 100644 index 0000000..8987c2b Binary files /dev/null and b/Bin/Debug/SuperDesign/MyDb_SQLite.dll differ diff --git a/Bin/Debug/SuperDesign/Newtonsoft.Json.dll b/Bin/Debug/SuperDesign/Newtonsoft.Json.dll new file mode 100644 index 0000000..78a1763 Binary files /dev/null and b/Bin/Debug/SuperDesign/Newtonsoft.Json.dll differ diff --git a/Bin/Debug/SuperDesign/Newtonsoft.Json.xml b/Bin/Debug/SuperDesign/Newtonsoft.Json.xml new file mode 100644 index 0000000..159260e --- /dev/null +++ b/Bin/Debug/SuperDesign/Newtonsoft.Json.xml @@ -0,0 +1,9327 @@ + + + + Newtonsoft.Json + + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a []. + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a []. + + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the token and its value. + + The to write. + + The value to write. + A value is only required for tokens that have an associated value, e.g. the property name for . + A null value can be passed to the method for token's that don't have a value, e.g. . + + + + Writes the token. + + The to write. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Specifies the settings used when merging JSON. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Provides methods to get attributes. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Provides methods to get attributes from a , , or . + + + + + Initializes a new instance of the class. + + + + + Returns a collection of all of the attributes, or an empty collection if there are no attributes. + + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Returns a collection of attributes, identified by type, or an empty collection if there are no attributes. + + The type of the attributes. + When true, look up the hierarchy chain for the inherited custom attribute. + A collection of s, or an empty collection. + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Provides a set of static (Shared in Visual Basic) methods for + querying objects that implement . + + + + + Returns the input typed as . + + + + + Returns an empty that has the + specified type argument. + + + + + Converts the elements of an to the + specified type. + + + + + Filters the elements of an based on a specified type. + + + + + Generates a sequence of integral numbers within a specified range. + + The value of the first integer in the sequence. + The number of sequential integers to generate. + + + + Generates a sequence that contains one repeated value. + + + + + Filters a sequence of values based on a predicate. + + + + + Filters a sequence of values based on a predicate. + Each element's index is used in the logic of the predicate function. + + + + + Projects each element of a sequence into a new form. + + + + + Projects each element of a sequence into a new form by + incorporating the element's index. + + + + + Projects each element of a sequence to an + and flattens the resulting sequences into one sequence. + + + + + Projects each element of a sequence to an , + and flattens the resulting sequences into one sequence. The + index of each source element is used in the projected form of + that element. + + + + + Projects each element of a sequence to an , + flattens the resulting sequences into one sequence, and invokes + a result selector function on each element therein. + + + + + Projects each element of a sequence to an , + flattens the resulting sequences into one sequence, and invokes + a result selector function on each element therein. The index of + each source element is used in the intermediate projected form + of that element. + + + + + Returns elements from a sequence as long as a specified condition is true. + + + + + Returns elements from a sequence as long as a specified condition is true. + The element's index is used in the logic of the predicate function. + + + + + Base implementation of First operator. + + + + + Returns the first element of a sequence. + + + + + Returns the first element in a sequence that satisfies a specified condition. + + + + + Returns the first element of a sequence, or a default value if + the sequence contains no elements. + + + + + Returns the first element of the sequence that satisfies a + condition or a default value if no such element is found. + + + + + Base implementation of Last operator. + + + + + Returns the last element of a sequence. + + + + + Returns the last element of a sequence that satisfies a + specified condition. + + + + + Returns the last element of a sequence, or a default value if + the sequence contains no elements. + + + + + Returns the last element of a sequence that satisfies a + condition or a default value if no such element is found. + + + + + Base implementation of Single operator. + + + + + Returns the only element of a sequence, and throws an exception + if there is not exactly one element in the sequence. + + + + + Returns the only element of a sequence that satisfies a + specified condition, and throws an exception if more than one + such element exists. + + + + + Returns the only element of a sequence, or a default value if + the sequence is empty; this method throws an exception if there + is more than one element in the sequence. + + + + + Returns the only element of a sequence that satisfies a + specified condition or a default value if no such element + exists; this method throws an exception if more than one element + satisfies the condition. + + + + + Returns the element at a specified index in a sequence. + + + + + Returns the element at a specified index in a sequence or a + default value if the index is out of range. + + + + + Inverts the order of the elements in a sequence. + + + + + Returns a specified number of contiguous elements from the start + of a sequence. + + + + + Bypasses a specified number of elements in a sequence and then + returns the remaining elements. + + + + + Bypasses elements in a sequence as long as a specified condition + is true and then returns the remaining elements. + + + + + Bypasses elements in a sequence as long as a specified condition + is true and then returns the remaining elements. The element's + index is used in the logic of the predicate function. + + + + + Returns the number of elements in a sequence. + + + + + Returns a number that represents how many elements in the + specified sequence satisfy a condition. + + + + + Returns an that represents the total number + of elements in a sequence. + + + + + Returns an that represents how many elements + in a sequence satisfy a condition. + + + + + Concatenates two sequences. + + + + + Creates a from an . + + + + + Creates an array from an . + + + + + Returns distinct elements from a sequence by using the default + equality comparer to compare values. + + + + + Returns distinct elements from a sequence by using a specified + to compare values. + + + + + Creates a from an + according to a specified key + selector function. + + + + + Creates a from an + according to a specified key + selector function and a key comparer. + + + + + Creates a from an + according to specified key + and element selector functions. + + + + + Creates a from an + according to a specified key + selector function, a comparer and an element selector function. + + + + + Groups the elements of a sequence according to a specified key + selector function. + + + + + Groups the elements of a sequence according to a specified key + selector function and compares the keys by using a specified + comparer. + + + + + Groups the elements of a sequence according to a specified key + selector function and projects the elements for each group by + using a specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. + + + + + Groups the elements of a sequence according to a key selector + function. The keys are compared by using a comparer and each + group's elements are projected by using a specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. The elements of each group are projected by using a + specified function. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. The keys are compared by using a specified comparer. + + + + + Groups the elements of a sequence according to a specified key + selector function and creates a result value from each group and + its key. Key values are compared by using a specified comparer, + and the elements of each group are projected by using a + specified function. + + + + + Applies an accumulator function over a sequence. + + + + + Applies an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value. + + + + + Applies an accumulator function over a sequence. The specified + seed value is used as the initial accumulator value, and the + specified function is used to select the result value. + + + + + Produces the set union of two sequences by using the default + equality comparer. + + + + + Produces the set union of two sequences by using a specified + . + + + + + Returns the elements of the specified sequence or the type + parameter's default value in a singleton collection if the + sequence is empty. + + + + + Returns the elements of the specified sequence or the specified + value in a singleton collection if the sequence is empty. + + + + + Determines whether all elements of a sequence satisfy a condition. + + + + + Determines whether a sequence contains any elements. + + + + + Determines whether any element of a sequence satisfies a + condition. + + + + + Determines whether a sequence contains a specified element by + using the default equality comparer. + + + + + Determines whether a sequence contains a specified element by + using a specified . + + + + + Determines whether two sequences are equal by comparing the + elements by using the default equality comparer for their type. + + + + + Determines whether two sequences are equal by comparing their + elements by using a specified . + + + + + Base implementation for Min/Max operator. + + + + + Base implementation for Min/Max operator for nullable types. + + + + + Returns the minimum value in a generic sequence. + + + + + Invokes a transform function on each element of a generic + sequence and returns the minimum resulting value. + + + + + Returns the maximum value in a generic sequence. + + + + + Invokes a transform function on each element of a generic + sequence and returns the maximum resulting value. + + + + + Makes an enumerator seen as enumerable once more. + + + The supplied enumerator must have been started. The first element + returned is the element the enumerator was on when passed in. + DO NOT use this method if the caller must be a generator. It is + mostly safe among aggregate operations. + + + + + Sorts the elements of a sequence in ascending order according to a key. + + + + + Sorts the elements of a sequence in ascending order by using a + specified comparer. + + + + + Sorts the elements of a sequence in descending order according to a key. + + + + + Sorts the elements of a sequence in descending order by using a + specified comparer. + + + + + Performs a subsequent ordering of the elements in a sequence in + ascending order according to a key. + + + + + Performs a subsequent ordering of the elements in a sequence in + ascending order by using a specified comparer. + + + + + Performs a subsequent ordering of the elements in a sequence in + descending order, according to a key. + + + + + Performs a subsequent ordering of the elements in a sequence in + descending order by using a specified comparer. + + + + + Base implementation for Intersect and Except operators. + + + + + Produces the set intersection of two sequences by using the + default equality comparer to compare values. + + + + + Produces the set intersection of two sequences by using the + specified to compare values. + + + + + Produces the set difference of two sequences by using the + default equality comparer to compare values. + + + + + Produces the set difference of two sequences by using the + specified to compare values. + + + + + Creates a from an + according to a specified key + selector function. + + + + + Creates a from an + according to a specified key + selector function and key comparer. + + + + + Creates a from an + according to specified key + selector and element selector functions. + + + + + Creates a from an + according to a specified key + selector function, a comparer, and an element selector function. + + + + + Correlates the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. + + + + + Correlates the elements of two sequences based on matching keys. + The default equality comparer is used to compare keys. A + specified is used to compare keys. + + + + + Correlates the elements of two sequences based on equality of + keys and groups the results. The default equality comparer is + used to compare keys. + + + + + Correlates the elements of two sequences based on equality of + keys and groups the results. The default equality comparer is + used to compare keys. A specified + is used to compare keys. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Computes the sum of a sequence of nullable values. + + + + + Computes the sum of a sequence of nullable + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of nullable values. + + + + + Computes the average of a sequence of nullable values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Computes the sum of a sequence of values. + + + + + Computes the sum of a sequence of + values that are obtained by invoking a transform function on + each element of the input sequence. + + + + + Computes the average of a sequence of values. + + + + + Computes the average of a sequence of values + that are obtained by invoking a transform function on each + element of the input sequence. + + + + + Returns the minimum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the minimum nullable value. + + + + + Returns the maximum value in a sequence of nullable + values. + + + + + Invokes a transform function on each element of a sequence and + returns the maximum nullable value. + + + + + Represents a collection of objects that have a common key. + + + + + Gets the key of the . + + + + + Defines an indexer, size property, and Boolean search method for + data structures that map keys to + sequences of values. + + + + + Represents a sorted sequence. + + + + + Performs a subsequent ordering on the elements of an + according to a key. + + + + + Represents a collection of keys each mapped to one or more values. + + + + + Determines whether a specified key is in the . + + + + + Applies a transform function to each key and its associated + values and returns the results. + + + + + Returns a generic enumerator that iterates through the . + + + + + Gets the number of key/value collection pairs in the . + + + + + Gets the collection of values indexed by the specified key. + + + + + See issue #11 + for why this method is needed and cannot be expressed as a + lambda at the call site. + + + + + See issue #11 + for why this method is needed and cannot be expressed as a + lambda at the call site. + + + + + This attribute allows us to define extension methods without + requiring .NET Framework 3.5. For more information, see the section, + Extension Methods in .NET Framework 2.0 Apps, + of Basic Instincts: Extension Methods + column in MSDN Magazine, + issue Nov 2007. + + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of tokens that contain this token, and the ancestors of this token. + + A collection of tokens that contain this token, and the ancestors of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to []. + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from [] to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Adds an object to the annotation list of this . + + The annotation to add. + + + + Get the first annotation object of the specified type from this . + + The type of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets the first annotation object of the specified type from this . + + The of the annotation to retrieve. + The first annotation object that matches the specified type, or null if no annotation is of the specified type. + + + + Gets a collection of annotations of the specified type for this . + + The type of the annotations to retrieve. + An that contains the annotations for this . + + + + Gets a collection of annotations of the specified type for this . + + The of the annotations to retrieve. + An of that contains the annotations that match the specified type for this . + + + + Removes the annotations of the specified type from this . + + The type of annotations to remove. + + + + Removes the annotations of the specified type from this . + + The of annotations to remove. + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a null value. + + A null value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Initializes a new instance of the class. + + Type of the converter. + Parameter list to use when constructing the JsonConverter. Can be null. + + + + Gets the type of the converter. + + The type of the converter. + + + + The parameter list to use when constructing the JsonConverter described by ConverterType. + If null, the default constructor is used. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a []. + + + A [] or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a []. + + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, the ancestors of every token in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every token in the source collection. + + + + Returns a collection of tokens that contains every token in the source collection, and the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains every token in the source collection, and the descendants of every token in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every token in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every token in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every token in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every token in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every token in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Returns a collection of the tokens that contain this token, and all descendant tokens of this token, in document order. + + An containing this token, and all the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized JSON data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a []. + + + A [] or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the at the reader's current position. + + + + + Gets the path of the current JSON token. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a [] value. + + The [] value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the at the writer's current position. + + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only + happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different + results. When set to false it is highly recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the for this property. + + The for this property. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the JsonConverter type described by the argument. + + The JsonConverter type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + Create a factory function that can be used to create instances of a JsonConverter described by the + argument type. The returned function can then be used to either invoke the converter's default ctor, or any + parameterized constructors by way of an object array. + + + + + Represents a method that constructs an object. + + The object type to create. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/Bin/Debug/SuperDesign/RyWeb.dll b/Bin/Debug/SuperDesign/RyWeb.dll new file mode 100644 index 0000000..6112f57 Binary files /dev/null and b/Bin/Debug/SuperDesign/RyWeb.dll differ diff --git a/Bin/Debug/SuperDesign/SCREEN_CAPTURE.dll b/Bin/Debug/SuperDesign/SCREEN_CAPTURE.dll new file mode 100644 index 0000000..4bd0e8b Binary files /dev/null and b/Bin/Debug/SuperDesign/SCREEN_CAPTURE.dll differ diff --git a/Bin/Debug/SuperDesign/Secure/SupperDesign.exe b/Bin/Debug/SuperDesign/Secure/SupperDesign.exe new file mode 100644 index 0000000..b1fe6d4 Binary files /dev/null and b/Bin/Debug/SuperDesign/Secure/SupperDesign.exe differ diff --git a/Bin/Debug/SuperDesign/SuperDesign.exe b/Bin/Debug/SuperDesign/SuperDesign.exe new file mode 100644 index 0000000..79878a0 Binary files /dev/null and b/Bin/Debug/SuperDesign/SuperDesign.exe differ diff --git a/Bin/Debug/SuperDesign/SysDb/.gitignore b/Bin/Debug/SuperDesign/SysDb/.gitignore new file mode 100644 index 0000000..58f8c3f --- /dev/null +++ b/Bin/Debug/SuperDesign/SysDb/.gitignore @@ -0,0 +1,7 @@ +Publish/ +Res/ +**/obj +*.pdb +**/dcu +*.dcu +**/Secure \ No newline at end of file diff --git a/Bin/Debug/SuperDesign/SysDb/AssemblyInfo.cs b/Bin/Debug/SuperDesign/SysDb/AssemblyInfo.cs new file mode 100644 index 0000000..2104210 --- /dev/null +++ b/Bin/Debug/SuperDesign/SysDb/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("@AssemblyTitle")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("@AssemblyProduct")] +[assembly: AssemblyCopyright("@Copyright")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("62b5c3e8-4af1-4a7f-a40b-a6186f83dbd2")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Bin/Debug/SuperDesign/SysDb/Folder.txt b/Bin/Debug/SuperDesign/SysDb/Folder.txt new file mode 100644 index 0000000..4288c7a --- /dev/null +++ b/Bin/Debug/SuperDesign/SysDb/Folder.txt @@ -0,0 +1,2 @@ +VS2019项目目录|E:\SysDoc\Documents\Visual Studio 2019\Projects\ +程序开发源码|E:\我的代码\毕方项目\C# \ No newline at end of file diff --git a/Bin/Debug/SuperDesign/SysDb/Tools.dat b/Bin/Debug/SuperDesign/SysDb/Tools.dat new file mode 100644 index 0000000..d171a57 Binary files /dev/null and b/Bin/Debug/SuperDesign/SysDb/Tools.dat differ diff --git a/Bin/Debug/SuperDesign/SysDb/Tools/Json/HiJson 2.1.2_jdk64.exe b/Bin/Debug/SuperDesign/SysDb/Tools/Json/HiJson 2.1.2_jdk64.exe new file mode 100644 index 0000000..0269734 Binary files /dev/null and b/Bin/Debug/SuperDesign/SysDb/Tools/Json/HiJson 2.1.2_jdk64.exe differ diff --git a/Bin/Debug/SuperDesign/SysDb/Tools/Json/error.log b/Bin/Debug/SuperDesign/SysDb/Tools/Json/error.log new file mode 100644 index 0000000..f350f33 --- /dev/null +++ b/Bin/Debug/SuperDesign/SysDb/Tools/Json/error.log @@ -0,0 +1,198 @@ +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) +Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: cannot open system clipboard + at sun.awt.windows.WClipboard.openClipboard(Native Method) + at sun.awt.datatransfer.SunClipboard.getClipboardFormatsOpenClose(Unknown Source) + at sun.awt.datatransfer.SunClipboard.isDataFlavorAvailable(Unknown Source) + at org.jdesktop.application.TextActions.updateTextActions(TextActions.java:132) + at org.jdesktop.application.TextActions.access$400(TextActions.java:47) + at org.jdesktop.application.TextActions$ClipboardListener.flavorsChanged(TextActions.java:108) + at sun.awt.datatransfer.SunClipboard$1SunFlavorChangeNotifier.run(Unknown Source) + at java.awt.event.InvocationEvent.dispatch(Unknown Source) + at java.awt.EventQueue.dispatchEventImpl(Unknown Source) + at java.awt.EventQueue.access$500(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.awt.EventQueue$3.run(Unknown Source) + at java.security.AccessController.doPrivileged(Native Method) + at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) + at java.awt.EventQueue.dispatchEvent(Unknown Source) + at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) + at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.pumpEvents(Unknown Source) + at java.awt.EventDispatchThread.run(Unknown Source) diff --git a/Bin/Debug/SuperDesign/SysDb/混淆.nrproj b/Bin/Debug/SuperDesign/SysDb/混淆.nrproj new file mode 100644 index 0000000..70f371e Binary files /dev/null and b/Bin/Debug/SuperDesign/SysDb/混淆.nrproj differ diff --git a/Bin/Debug/SuperDesign/System.Data.SQLite.dll b/Bin/Debug/SuperDesign/System.Data.SQLite.dll new file mode 100644 index 0000000..e15c908 Binary files /dev/null and b/Bin/Debug/SuperDesign/System.Data.SQLite.dll differ diff --git a/Bin/Debug/SuperDesign/System.Data.SQLite.dll.config b/Bin/Debug/SuperDesign/System.Data.SQLite.dll.config new file mode 100644 index 0000000..415bebc --- /dev/null +++ b/Bin/Debug/SuperDesign/System.Data.SQLite.dll.config @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bin/Debug/SuperDesign/UserDb/MessageBox.xml b/Bin/Debug/SuperDesign/UserDb/MessageBox.xml new file mode 100644 index 0000000..1a56abc --- /dev/null +++ b/Bin/Debug/SuperDesign/UserDb/MessageBox.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/Bin/Debug/SuperDesign/UserDb/MyDb.dat b/Bin/Debug/SuperDesign/UserDb/MyDb.dat new file mode 100644 index 0000000..2f1bc27 Binary files /dev/null and b/Bin/Debug/SuperDesign/UserDb/MyDb.dat differ diff --git a/Bin/Debug/SuperDesign/UserDb/Setting.dat b/Bin/Debug/SuperDesign/UserDb/Setting.dat new file mode 100644 index 0000000..2a30192 --- /dev/null +++ b/Bin/Debug/SuperDesign/UserDb/Setting.dat @@ -0,0 +1,4 @@ +[open] +.Tools.FrmWebGet=1 +.Tools.FrmXpath=1 +.Tools.FrmEncode=1 diff --git a/Bin/Debug/SuperDesign/WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll b/Bin/Debug/SuperDesign/WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll new file mode 100644 index 0000000..3d97c2c Binary files /dev/null and b/Bin/Debug/SuperDesign/WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll differ diff --git a/Bin/Debug/SuperDesign/WeifenLuo.WinFormsUI.Docking.dll b/Bin/Debug/SuperDesign/WeifenLuo.WinFormsUI.Docking.dll new file mode 100644 index 0000000..c2a7771 Binary files /dev/null and b/Bin/Debug/SuperDesign/WeifenLuo.WinFormsUI.Docking.dll differ diff --git a/Bin/Debug/SuperDesign/XPTable.dll b/Bin/Debug/SuperDesign/XPTable.dll new file mode 100644 index 0000000..4ac2f2e Binary files /dev/null and b/Bin/Debug/SuperDesign/XPTable.dll differ diff --git a/Bin/Debug/SuperDesign/XPTable.xml b/Bin/Debug/SuperDesign/XPTable.xml new file mode 100644 index 0000000..1cdc3bf --- /dev/null +++ b/Bin/Debug/SuperDesign/XPTable.xml @@ -0,0 +1,14840 @@ + + + + XPTable + + + + + Base class for Cell editors + + + + + Occurs when the CellEditor begins editing a Cell + + + + + Occurs when the CellEditor stops editing a Cell + + + + + Occurs when the editing of a Cell is cancelled + + + + + The Control that is performing the editing + + + + + The Cell that is being edited + + + + + The Table that contains the Cell being edited + + + + + A CellPos that represents the position of the Cell being edited + + + + + The Rectangle that represents the Cells location and size + + + + + A MouseMessageFilter that receives mouse messages before they + are dispatched to their destination + + + + + A KeyMessageFilter that receives key messages before they + are dispatched to their destination + + + + + Initializes a new instance of the CellEditor class with default settings + + + + + Prepares the CellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Displays the editor to the user and adds it to the Table's Control + collection + + + + + Conceals the editor from the user, but does not remove it from the + Table's Control collection + + + + + Conceals the editor from the user and removes it from the Table's + Control collection + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Filters out a mouse message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Filters out a key message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Gets or sets the Control that is being used to edit the Cell + + + + + Gets the Cell that is being edited + + + + + Gets the Table that contains the Cell being edited + + + + + Gets a CellPos that represents the position of the Cell being edited + + + + + Gets whether the CellEditor is currently editing a Cell + + + + + Raises the BeginEdit event + + A CellEditEventArgs that contains the event data + + + + Raises the EndEdit event + + A CellEditEventArgs that contains the event data + + + + Raises the CancelEdit event + + A CellEditEventArgs that contains the event data + + + + A class for editing Cells that contain Colors + + + + + Occurs when the SelectedIndex property has changed + + + + + A ColorPicker control similar to the ColorPicker found in the + VS.NET property window + + + + + Custom color dialog + + + + + Initializes a new instance of the ColorCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Converts the specified Color to its string representation + + The Color to convert + A string that represents the specified Color + + + + Gets whether the editor should stop editing if a mouse click occurs + outside of the DropDownContainer while it is dropped down + + The Control that will receive the message + The current position of the mouse cursor + true if the editor should stop editing, false otherwise + + + + Gets or sets a value specifying the style of the drop down editor + + + + + Gets or sets the custom color dialog + + + + + Raises the SelectedColorChanged event + + An EventArgs that contains the event data + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ColorPicker.SelectedColorChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + A ColorPicker control similar to the ColorPicker found in the + VS.NET property window + + + + + Occurs when the value of the ColorPicker's SelectedColor property changes + + + + + Required designer variable. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the ColorPicker class with default settings + + + + + Clean up any resources being used. + + + + + + + + + + + + + + + + + + + + + + Gets or sets the currently selected Color + + + + + + + + + + + + + + + Gets the default size of the control + + + + + Raises the SelectedColorChanged event + + An EventArgs that contains the event data + + + + Raises the FontChanged event + + An EventArgs that contains the event data + + + + Raises the GotFocus event + + An EventArgs that contains the event data + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Summary description for frmColorPicker. + + + + + Required designer variable. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + Summary description for ctrl2DColorBox. + + + + + Required designer variable. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + The drawstyle of the contol (Hue, Saturation, Brightness, Red, Green or Blue) + + + + + The HSL color of the control, changing the HSL will automatically change the RGB color for the control. + + + + + The RGB color of the control, changing the RGB will automatically change the HSL color for the control. + + + + + Redraws only the content over the marker + + + + + Draws the marker (circle) inside the box + + + + + + + + Draws the border around the control. + + + + + Evaluates the DrawStyle of the control and calls the appropriate + drawing function for content + + + + + Draws the content of the control filling in all color values with the provided Hue value. + + + + + Draws the content of the control filling in all color values with the provided Saturation value. + + + + + Draws the content of the control filling in all color values with the provided Luminance or Brightness value. + + + + + Draws the content of the control filling in all color values with the provided Red value. + + + + + Draws the content of the control filling in all color values with the provided Green value. + + + + + Draws the content of the control filling in all color values with the provided Blue value. + + + + + Calls all the functions neccessary to redraw the entire control. + + + + + Resets the marker position of the slider to match the controls color. Gives the option of redrawing the slider. + + Set to true if you want the function to redraw the slider after determining the best position + + + + Resets the controls color (both HSL and RGB variables) based on the current marker position + + + + + Kindof self explanitory, I really need to look up the .NET function that does this. + + double value to be rounded to an integer + + + + + Returns the graphed color at the x,y position on the control + + + + + + + + A vertical slider control that shows a range for a color property (a.k.a. Hue, Saturation, Brightness, + Red, Green, Blue) and sends an event when the slider is changed. + + + + + Clean up any resources being used. + + + + + Required method for Designer support - do not modify + the contents of this method with the code editor. + + + + + The drawstyle of the contol (Hue, Saturation, Brightness, Red, Green or Blue) + + + + + The HSL color of the control, changing the HSL will automatically change the RGB color for the control. + + + + + The RGB color of the control, changing the RGB will automatically change the HSL color for the control. + + + + + Redraws the background over the slider area on both sides of the control + + + + + Draws the slider arrows on both sides of the control. + + position value of the slider, lowest being at the bottom. The range + is between 0 and the controls height-9. The values will be adjusted if too large/small + If Unconditional is true, the slider is drawn, otherwise some logic + is performed to determine is drawing is really neccessary. + + + + Draws the border around the control, in this case the border around the content area between + the slider arrows. + + + + + Evaluates the DrawStyle of the control and calls the appropriate + drawing function for content + + + + + Fills in the content of the control showing all values of Hue (from 0 to 360) + + + + + Fills in the content of the control showing all values of Saturation (0 to 100%) for the given + Hue and Luminance. + + + + + Fills in the content of the control showing all values of Luminance (0 to 100%) for the given + Hue and Saturation. + + + + + Fills in the content of the control showing all values of Red (0 to 255) for the given + Green and Blue. + + + + + Fills in the content of the control showing all values of Green (0 to 255) for the given + Red and Blue. + + + + + Fills in the content of the control showing all values of Blue (0 to 255) for the given + Red and Green. + + + + + Calls all the functions neccessary to redraw the entire control. + + + + + Resets the vertical position of the slider to match the controls color. Gives the option of redrawing the slider. + + Set to true if you want the function to redraw the slider after determining the best position + + + + Resets the controls color (both HSL and RGB variables) based on the current slider position + + + + + Kindof self explanitory, I really need to look up the .NET function that does this. + + double value to be rounded to an integer + + + + + Summary description for AdobeColors. + + + + + Sets the absolute brightness of a colour + + Original colour + The luminance level to impose + an adjusted colour + + + + Modifies an existing brightness level + + + To reduce brightness use a number smaller than 1. To increase brightness use a number larger tnan 1 + + The original colour + The luminance delta + An adjusted colour + + + + Sets the absolute saturation level + + Accepted values 0-1 + An original colour + The saturation value to impose + An adjusted colour + + + + Modifies an existing Saturation level + + + To reduce Saturation use a number smaller than 1. To increase Saturation use a number larger tnan 1 + + The original colour + The saturation delta + An adjusted colour + + + + Sets the absolute Hue level + + Accepted values 0-1 + An original colour + The Hue value to impose + An adjusted colour + + + + Modifies an existing Hue level + + + To reduce Hue use a number smaller than 1. To increase Hue use a number larger tnan 1 + + The original colour + The Hue delta + An adjusted colour + + + + Converts a colour from HSL to RGB + + Adapted from the algoritm in Foley and Van-Dam + The HSL value + A Color structure containing the equivalent RGB values + + + + Converts RGB to HSL + + Takes advantage of whats already built in to .NET by using the Color.GetHue, Color.GetSaturation and Color.GetBrightness methods + A Color to convert + An HSL value + + + + Converts RGB to CMYK + + A color to convert. + A CMYK object + + + + Converts CMYK to RGB + + A color to convert + A Color object + + + + Custom rounding function. + + Value to round + Rounded value + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + A class for editing Cells that look like a ComboBox + + + + + Occurs when the SelectedIndex property has changed + + + + + Occurs when a visual aspect of an owner-drawn ComboBoxCellEditor changes + + + + + Occurs each time an owner-drawn ComboBoxCellEditor item needs to be + drawn and when the sizes of the list items are determined + + + + + The ListBox that contains the items to be shown in the + drop-down portion of the ComboBoxCellEditor + + + + + The maximum number of items to be shown in the drop-down + portion of the ComboBoxCellEditor + + + + + The width of the Cell being edited + + + + + Initializes a new instance of the ComboBoxCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Displays the drop down portion to the user + + + + + Gets or sets the maximum number of items to be shown in the drop-down + portion of the ComboBoxCellEditor + + + + + Gets or sets a value indicating whether your code or the operating + system will handle drawing of elements in the list + + + + + Gets or sets a value indicating whether the drop-down portion of the + editor should resize to avoid showing partial items + + + + + Gets or sets the height of an item in the editor + + + + + Gets an object representing the collection of the items contained + in this ComboBoxCellEditor + + + + + Gets or sets the maximum number of characters allowed in the editable + portion of a ComboBoxCellEditor + + + + + Gets or sets the index specifying the currently selected item + + + + + Gets or sets currently selected item in the ComboBoxCellEditor + + + + + Handler for the editors TextBox.KeyDown and ListBox.KeyDown events + + The object that raised the event + A KeyEventArgs that contains the event data + + + + Handler for the editors TextBox.MouseWheel event + + The object that raised the event + A MouseEventArgs that contains the event data + + + + Raises the DrawItem event + + A DrawItemEventArgs that contains the event data + + + + Raises the MeasureItem event + + A MeasureItemEventArgs that contains the event data + + + + Raises the SelectedIndexChanged event + + An EventArgs that contains the event data + + + + Handler for the editors ListBox.Click event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ListBox.SelectedIndexChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ListBox.MouseEnter event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors ListBox.DrawItem event + + The object that raised the event + A DrawItemEventArgs that contains the event data + + + + Handler for the editors ListBox.MeasureItem event + + The object that raised the event + A MeasureItemEventArgs that contains the event data + + + + A class for editing Cells that contain DateTimes + + + + + Occurs when the user makes an explicit date selection using the mouse + + + + + The MonthCalendar that will be shown in the drop-down portion of the + DateTimeCellEditor + + + + + Initializes a new instance of the DateTimeCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Gets or sets a value specifying the style of the drop down editor + + + + + Raises the DateSelected event + + A DateRangeEventArgs that contains the event data + + + + Handler for the editors MonthCalendar.DateSelected events + + The object that raised the event + A DateRangeEventArgs that contains the event data + + + + A base class for editing Cells that contain drop down buttons + + + + + The container that holds the Control displayed when editor is dropped down + + + + + Specifies whether the DropDownContainer is currently displayed + + + + + Specifies the DropDown style + + + + + The user defined width of the DropDownContainer + + + + + Listener for WM_NCACTIVATE and WM_ACTIVATEAPP messages + + + + + The Form that will own the DropDownContainer + + + + + Specifies whether the mouse is currently over the + DropDownContainer + + + + + Initializes a new instance of the DropDownCellEditor class with default settings + + + + + Prepares the CellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Displays the drop down portion to the user + + + + + Conceals the drop down portion from the user + + + + + Gets whether the editor should stop editing if a mouse click occurs + outside of the DropDownContainer while it is dropped down + + The Control that will receive the message + The current position of the mouse cursor + true if the editor should stop editing, false otherwise + + + + Filters out a mouse message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Filters out a key message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Gets the TextBox used to edit the Cells contents + + + + + Gets the container that holds the Control displayed when editor is dropped down + + + + + Gets or sets whether the editor is displaying its drop-down portion + + + + + Gets or sets the width of the of the drop-down portion of the editor + + + + + Gets the user defined width of the of the drop-down portion of the editor + + + + + Gets or sets a value specifying the style of the drop down editor + + + + + Gets or sets the text that is selected in the editable portion of the editor + + + + + Gets or sets the number of characters selected in the editable portion + of the editor + + + + + Gets or sets the starting index of text selected in the editor + + + + + Gets or sets the text associated with the editor + + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors drop down button MouseDown event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors drop down button MouseUp event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors textbox MouseEnter event + + The object that raised the event + An EventArgs that contains the event data + + + + Listener for WM_NCACTIVATE and WM_ACTIVATEAPP messages + + + + + The DropDownCellEditor that owns the listener + + + + + Initializes a new instance of the DropDownCellEditor class with the + specified DropDownCellEditor owner + + The DropDownCellEditor that owns the listener + + + + Gets or sets the DropDownCellEditor that owns the listener + + + + + Processes Windows messages + + The Windows Message to process + + + + Summary description for DropDownContainer. + + + + + The DropDownCellEditor that owns the DropDownContainer + + + + + The Control displayed in the DropDownContainer + + + + + A Panel that provides the black border around the DropDownContainer + + + + + Initializes a new instance of the DropDownContainer class with the + specified DropDownCellEditor owner + + + + + Displays the DropDownContainer to the user + + + + + Hides the DropDownContainer from the user + + + + + Processes any Paint messages in the message queue + + + + + Gets or sets the Control displayed in the DropDownContainer + + + + + Gets the required creation parameters when the control handle is created + + + + + Handler for the DropDownContainer's SizeChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + Specifies the DropDownCellEditor style + + + + + The text portion is editable. The user must click the arrow + button to display the list portion + + + + + The user cannot directly edit the text portion. The user must + click the arrow button to display the list portion + + + + + Specifies the action that causes a Cell to start editing + + + + + A double click will start cell editing + + + + + A single click will start cell editing + + + + + A user defined key press will start cell editing + + + + + Exposes common methods provided by Cell editors + + + + + Prepares the ICellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Specifies that a CellEditor uses the buttons provided by its counter-part + CellRenderer during editing + + + + + Raises the EditorButtonMouseDown event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Raises the EditorButtonMouseUp event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Indicates that an object is interested in receiving key messages + before they are sent to their destination + + + + + Filters out a key message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + Indicates that an object is interested in receiving mouse messages + before they are sent to their destination + + + + + Filters out a mouse message before it is dispatched + + The Control that will receive the message + A WindowMessage that represents the message to process + Specifies the WParam field of the message + Specifies the LParam field of the message + true to filter the message and prevent it from being dispatched; + false to allow the message to continue to the next filter or control + + + + A message filter that filters key messages + + + + + An IKeyMessageFilterClient that wishes to receive key events + + + + + Initializes a new instance of the CellEditor class with the + specified IKeyMessageFilterClient client + + + + + Gets or sets the IKeyMessageFilterClient that wishes to receive + key events + + + + + Filters out a message before it is dispatched + + The message to be dispatched. You cannot modify + this message + true to filter the message and prevent it from being + dispatched; false to allow the message to continue to the next + filter or control + + + + A message filter that filters mouse messages + + + + + An IMouseMessageFilterClient that wishes to receive mouse events + + + + + Initializes a new instance of the CellEditor class with the + specified IMouseMessageFilterClient client + + + + + Gets or sets the IMouseMessageFilterClient that wishes to + receive mouse events + + + + + Filters out a message before it is dispatched + + The message to be dispatched. You cannot modify + this message + true to filter the message and prevent it from being + dispatched; false to allow the message to continue to the next + filter or control + + + + A class for editing Cells that contain numbers + + + + + ID number for the up button + + + + + ID number for the down button + + + + + The current value of the editor + + + + + The value to increment or decrement when the up or down buttons are clicked + + + + + The maximum value for the editor + + + + + The inximum value for the editor + + + + + A string that specifies how editors value is formatted + + + + + The amount the mouse wheel has moved + + + + + Indicates whether the arrow keys should be passed to the editor + + + + + Specifies whether the editors text value is changing + + + + + Initial interval between timer events + + + + + Current interval between timer events + + + + + Indicates whether the user has changed the editors value + + + + + The bounding Rectangle of the up and down buttons + + + + + The id of the button that was pressed + + + + + Timer to to fire button presses at regular intervals while + a button is pressed + + + + + Initializes a new instance of the NumberCellEditor class with default settings + + + + + Prepares the CellEditor to edit the specified Cell + + The Cell to be edited + The Table that contains the Cell + A CellPos representing the position of the Cell + The Rectangle that represents the Cells location and size + Specifies whether the ICellEditors + starting value has already been set by the user + true if the ICellEditor can continue editing the Cell, false otherwise + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Simulates the up button being pressed + + + + + Simulates the down button being pressed + + + + + Updates the editors text value to the current value + + + + + Checks the current value and updates the editors text value + + + + + Converts the editors current value to a number + + + + + Ensures that the specified value is between the editors Maximun and + Minimum values + + The value to be checked + A value is between the editors Maximun and Minimum values + + + + Starts the Timer + + + + + Stops the Timer + + + + + Gets the TextBox used to edit the Cells contents + + + + + Gets or sets the editors current value + + + + + Gets or sets the value to increment or decrement when the up or down + buttons are clicked + + + + + Gets or sets the maximum value for the editor + + + + + Gets or sets the minimum value for the editor + + + + + Gets or sets the string that specifies how the editors contents + are formatted + + + + + Gets or sets whether the editors text is being updated + + + + + Gets or sets whether the arrow keys should be passed to the editor + + + + + Gets or sets whether the user has changed the editors value + + + + + Handler for the editors TextBox.MouseWheel event + + The object that raised the event + A MouseEventArgs that contains the event data + + + + Handler for the editors TextBox.KeyDown event + + The object that raised the event + A KeyEventArgs that contains the event data + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for the editors buttons MouseDown event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors buttons MouseUp event + + The object that raised the event + A CellMouseEventArgs that contains the event data + + + + Handler for the editors Timer event + + The object that raised the event + An EventArgs that contains the event data + + + + A class for editing Cells that contain strings + + + + + Initializes a new instance of the TextCellEditor class with default settings + + + + + Sets the location and size of the CellEditor + + A Rectangle that represents the size and location + of the Cell being edited + + + + Sets the initial value of the editor based on the contents of + the Cell being edited + + + + + Sets the contents of the Cell being edited based on the value + in the editor + + + + + Starts editing the Cell + + + + + Stops editing the Cell and commits any changes + + + + + Stops editing the Cell and ignores any changes + + + + + Gets the TextBox used to edit the Cells contents + + + + + Handler for the editors TextBox.KeyPress event + + The object that raised the event + A KeyPressEventArgs that contains the event data + + + + Handler for the editors TextBox.LostFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Represents the method that will handle the CellButtonClicked event of a Table + + + + + Provides data for the CellButtonClicked event of a Table + + + + + Initializes a new instance of the CellButtonEventArgs class with + the specified Cell source, row index and column index + + The Cell that raised the event + The Column index of the Cell + The Row index of the Cell + + + + Represents the method that will handle the CellCheckChanged event of a Table + + + + + Provides data for the CellCheckChanged event of a Table + + + + + Initializes a new instance of the CellButtonEventArgs class with + the specified Cell source, row index and column index + + The Cell that Raised the event + The Column index of the Cell + The Row index of the Cell + + + + Represents the methods that will handle the BeginEdit, StopEdit and + CancelEdit events of a Table + + + + + Provides data for the BeginEdit, StopEdit and CancelEdit events of a Table + + + + + The CellEditor used to edit the Cell + + + + + The Table the Cell belongs to + + + + + The Cells bounding Rectangle + + + + + Specifies whether the event should be cancelled + + + + + Indicates whether the event was handled + + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index and row index + + The Cell that Raised the event + The CellEditor used to edit the Cell + The Table that the Cell belongs to + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index and row index + + The Cell that Raised the event + The CellEditor used to edit the Cell + The Table that the Cell belongs to + The Column index of the Cell + The Row index of the Cell + + + + + Gets the CellEditor used to edit the Cell + + + + + Gets the Table the Cell belongs to + + + + + Gets the Cells bounding Rectangle + + + + + Gets or sets whether the event should be cancelled + + + + + Gets or sets a value indicating whether the event was handled + + + + + Represents the methods that will handle the PropertyChanged event of a Cell + + + + + Provides data for a Cell's PropertyChanged event + + + + + The type of event + + + + + The old value of the property + + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source and event type + + The Cell that Raised the event + The type of event + The old value of the property + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index, row index and event type + + The Cell that Raised the event + The Column index of the Cell + The Row index of the Cell + The type of event + The old value of the property + + + + Gets or sets the type of event + + + + + Gets the old value of the property + + + + + Base class for classes containing Cell event data + + + + + The Cell that Raised the event + + + + + The Column index of the Cell + + + + + The Row index of the Cell + + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source and event type + + The Cell that Raised the event + + + + Initializes a new instance of the CellEventArgs class with + the specified Cell source, column index and row index + + The Cell that Raised the event + The Column index of the Cell + The Row index of the Cell + + + + Returns the Cell that Raised the event + + + + + Gets the Column index of the Cell + + + + + + + + + + + Gets the Row index of the Cell + + + + + + + + + + + Gets the position of the Cell + + + + + Specifies the type of event generated when the value of a + Cell's property changes + + + + + Occurs when the Cell's property change type is unknown + + + + + Occurs when the value displayed by a Cell has changed + + + + + Occurs when the value of a Cell's Font property changes + + + + + Occurs when the value of a Cell's BackColor property changes + + + + + Occurs when the value of a Cell's ForeColor property changes + + + + + Occurs when the value of a Cell's CellStyle property changes + + + + + Occurs when the value of a Cell's Padding property changes + + + + + Occurs when the value of a Cell's Editable property changes + + + + + Occurs when the value of a Cell's Enabled property changes + + + + + Occurs when the value of a Cell's ToolTipText property changes + + + + + Occurs when the value of a Cell's CheckState property changes + + + + + Occurs when the value of a Cell's ThreeState property changes + + + + + Occurs when the value of a Cell's Image property changes + + + + + Occurs when the value of a Cell's ImageSizeMode property changes + + + + + Represents the method that will handle the CellGotFocus and CellLostFocus + events of a Table + + + + + Provides data for the CellGotFocus and CellLostFocus events of a Table + + + + + The Table the Cell belongs to + + + + + The Cells bounding rectangle + + + + + Initializes a new instance of the CellFocusEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + + + + Gets the Table the Cell belongs to + + + + + Gets the Cell's bounding rectangle + + + + + Represents the method that will handle the CellKeyDown and CellKeyUp + events of a Table + + + + + Provides data for the CellKeyDown and CellKeyUp events of a Table + + + + + The Cell that Raised the event + + + + + The Table the Cell belongs to + + + + + The Row index of the Cell + + + + + The Column index of the Cell + + + + + The Cells bounding rectangle + + + + + Initializes a new instance of the CellKeyEventArgs class with + the specified source Cell, table, row index, column index, cell + bounds and KeyEventArgs + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + + + + + Initializes a new instance of the CellKeyEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + + The Cell's bounding rectangle + + + + + Gets the Cell that Raised the event + + + + + Gets the Table the Cell belongs to + + + + + Gets the Row index of the Cell + + + + + Gets the Column index of the Cell + + + + + Gets the Cells bounding rectangle + + + + + Gets the position of the Cell + + + + + Represents the method that will handle the CellMouseEnter, CellMouseLeave, + CellMouseDown, CellMouseUp, CellMouseMove and CellMouseHover events of a Table + + + + + Provides data for the CellMouseEnter, CellMouseLeave, CellMouseDown, + CellMouseUp and CellMouseMove events of a Table + + + + + The Cell that raised the event + + + + + The Table the Cell belongs to + + + + + The Row index of the Cell + + + + + The Column index of the Cell + + + + + The Cells bounding rectangle + + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + + The Cell's bounding rectangle + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index, cell + bounds and MouseEventArgs + + The Cell that Raised the event + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + The Cell's bounding rectangle + The MouseEventArgs that contains data about the + mouse event + + + + Initializes a new instance of the CellMouseEventArgs class with + the specified source Cell, table, row index, column index and + cell bounds + + The Cell that Raised the event + The Table the Cell belongs to + + The Cell's bounding rectangle + + + + + Gets the Cell that Raised the event + + + + + Gets the Table the Cell belongs to + + + + + Gets the Row index of the Cell + + + + + Gets the Column index of the Cell + + + + + Gets the Cells bounding rectangle + + + + + Gets the position of the Cell + + + + + Represents the methods that will handle the PropertyChanged event of a Column, + or a Table's BeginSort and EndSort events + + + + + Provides data for a Column's PropertyChanged event, or a Table's + BeginSort and EndSort events + + + + + The Column that Raised the event + + + + + The index of the Column in the ColumnModel + + + + + The old value of the property that changed + + + + + The type of event + + + + + Initializes a new instance of the ColumnEventArgs class with + the specified Column source, column index and event type + + The Column that Raised the event + The type of event + The old value of the changed property + + + + Initializes a new instance of the ColumnEventArgs class with + the specified Column source, column index and event type + + The Column that Raised the event + The index of the Column + The type of event + The old value of the changed property + + + + Gets the Column that Raised the event + + + + + + + + + + + Gets the index of the Column + + + + + + + + + + + Gets the type of event + + + + + Gets the old value of the Columns changed property + + + + + Specifies the type of event generated when the value of a + Column's property changes + + + + + 变化的类型未知 + + + + + 名称变化 + + + + + 对齐格式变化 + + + + + 列头对齐格式变化 + + + + + 宽度变化 + + + + + 是否可见变化 + + + + + 图像变化 + + + + + 列Format属性变化,格式变化 + + + + + 状态变化 + + + + + 列Renderer属性变化 + + + + + Editor属性变化 + + + + + 列Comparer属性变化 + + + + + 列Enabled变化 + + + + + 是否可编辑变化 + + + + + 列Selectable属性变化 + + + + + 列Sortable属性变化,是否可排序变化 + + + + + 排序属性变化 + + + + + 提示文本变化 + + + + + 排序 + + + + + 列子名变化 + + + + + Represents the methods that will handle the ColumnInserted, ColumnRemoved + and HeaderHeightChanged event of a ColumnModel + + + + + Provides data for a ColumnModel's ColumnAdded, ColumnRemoved, + and HeaderHeightChanged events + + + + + The ColumnModel that Raised the event + + + + + The affected Column + + + + + The start index of the affected Column(s) + + + + + The end index of the affected Column(s) + + + + + Initializes a new instance of the ColumnModelEventArgs class with + the specified ColumnModel source, start index, end index and affected Column + + The ColumnModel that originated the event + The affected Column + The start index of the affected Column(s) + The end index of the affected Column(s) + + + + Gets the ColumnModel that Raised the event + + + + + Gets the affected Column + + + + + Gets the start index of the affected Column(s) + + + + + Gets the end index of the affected Column(s) + + + + + Represents the method that will handle the HeaderMouseEnter, HeaderMouseLeave, + HeaderMouseDown, HeaderMouseUp, HeaderMouseMove, HeaderClick and HeaderDoubleClick + events of a Table + + + + + Provides data for the HeaderMouseEnter, HeaderMouseLeave, HeaderMouseDown, + HeaderMouseUp, HeaderMouseMove, HeaderClick and HeaderDoubleClick events of a Table + + + + + The Column that raised the event + + + + + The Table the Column belongs to + + + + + The index of the Column + + + + + The column header's bounding rectangle + + + + + Initializes a new instance of the HeaderMouseEventArgs class with + the specified source Column, Table, column index and column header bounds + + The Column that Raised the event + The Table the Column belongs to + The index of the Column + The column header's bounding rectangle + + + + Initializes a new instance of the HeaderMouseEventArgs class with + the specified source Column, Table, column index, column header bounds + and MouseEventArgs + + The Column that Raised the event + The Table the Column belongs to + The index of the Column + The column header's bounding rectangle + The MouseEventArgs that contains data about the + mouse event + + + + Gets the Column that Raised the event + + + + + Gets the Table the Cell belongs to + + + + + Gets the index of the Column + + + + + Gets the column header's bounding rectangle + + + + + Represents the method that will handle the PaintCell events of a Table + + + + + Provides data for the PaintCell event + + + + + The Cell to be painted + + + + + The Table the Cell belongs to + + + + + The Row index of the Cell + + + + + The Column index of the Cell + + + + + Specifies whether the Cell is selected + + + + + Specifies whether the Cell has focus + + + + + Specifies whether the Cell's Column is sorted + + + + + Specifies whether the Cell is editable + + + + + Specifies whether the Cell is enabled + + + + + The rectangle in which to paint the Cell + + + + + Indicates whether the user has done the paining for us + + + + + Initializes a new instance of the PaintCellEventArgs class with + the specified graphics and clipping rectangle + + The Graphics used to paint the Cell + The Rectangle that represents the rectangle + in which to paint + + + + Initializes a new instance of the PaintCellEventArgs class with + the specified graphics, table, row index, column index, selected value, + focused value, mouse value and clipping rectangle + + The Graphics used to paint the Cell + The Cell to be painted + The Table the Cell belongs to + The Row index of the Cell + The Column index of the Cell + Specifies whether the Cell is selected + Specifies whether the Cell has focus + Specifies whether the Cell's Column is sorted + Specifies whether the Cell is able to be edited + Specifies whether the Cell is enabled + The rectangle in which to paint the Cell + + + + Gets the Cell to be painted + + + + + + + + + + + Gets the Table the Cell belongs to + + + + + + + + + + + Gets the Row index of the Cell + + + + + + + + + + + Gets the Column index of the Cell + + + + + + + + + + + Gets whether the Cell is selected + + + + + + + + + + + Gets whether the Cell has focus + + + + + + + + + + + Gets whether the Cell's Column is sorted + + + + + + + + + + + Gets whether the Cell is able to be edited + + + + + + + + + + + Gets whether the Cell is enabled + + + + + + + + + + + Gets the Cells bounding rectangle + + + + + + + + + + + Gets the position of the Cell + + + + + Gets or sets a value indicating whether the BeforePaintCell + event was handled + + + + + Represents the method that will handle the PaintHeader events of a Table + + + + + Provides data for the PaintHeader event + + + + + The Column to be painted + + + + + The Table the Column's ColumnModel belongs to + + + + + The index of the Column in the Table's ColumnModel + + + + + The style of the Column header + + + + + The rectangle in which to paint + + + + + Indicates whether the user has done the paining for us + + + + + Initializes a new instance of the PaintHeaderEventArgs class with + the specified graphics and clipping rectangle + + The Graphics used to paint the Column header + The Rectangle that represents the rectangle + in which to paint + + + + Initializes a new instance of the PaintHeaderEventArgs class with + the specified graphics, column, table, column index, header style + and clipping rectangle + + The Graphics used to paint the Column header + The Column to be painted + The Table the Column's ColumnModel belongs to + The index of the Column in the Table's ColumnModel + The style of the Column's header + The Rectangle that represents the rectangle + in which to paint + + + + Gets the Column to be painted + + + + + + + + + + + Gets the Table the Column's ColumnModel belongs to + + + + + + + + + + + Gets the index of the Column in the Table's ColumnModel + + + + + + + + + + + Gets the style of the Column's header + + + + + + + + + + + Gets the column header's bounding rectangle + + + + + + + + + + + Gets or sets a value indicating whether the BeforePaintHeader + event was handled + + + + + Represents the methods that will handle the PropertyChanged, CellAdded and + CellRemoved events of a Row + + + + + Provides data for a Row's PropertyChanged, CellAdded + and CellRemoved events + + + + + The Row that Raised the event + + + + + The index of the Row + + + + + The affected Cell + + + + + The start index of the affected Cell(s) + + + + + The end index of the affected Cell(s) + + + + + The type of event + + + + + Initializes a new instance of the RowEventArgs class with + the specified Row source, row index, start index, end index + and affected Cell + + The Row that originated the event + The type of event + + + + Initializes a new instance of the RowEventArgs class with + the specified Row source, row index, start index, end index + and affected Cell + + The Row that originated the event + The affected Cell + The start index of the affected Cell(s) + The end index of the affected Cell(s) + + + + Initializes a new instance of the RowEventArgs class with + the specified Row source, row index, start index, end index + and affected Cell + + The Row that originated the event + The index of the Row + The affected Cell + The start index of the affected Cell(s) + The end index of the affected Cell(s) + The type of event + + + + Gets the Row that Raised the event + + + + + Gets the index of the Row + + + + + + + + + + + Gets the affected Cell + + + + + Gets the start index of the affected Cell(s) + + + + + Gets the end index of the affected Cell(s) + + + + + Gets the type of event + + + + + Specifies the type of event generated when the value of a + Row's property changes + + + + + Occurs when the Row's property change type is unknown + + + + + Occurs when the value of a Row's BackColor property changes + + + + + Occurs when the value of a Row's ForeColor property changes + + + + + Occurs when the value of a Row's Font property changes + + + + + Occurs when the value of a Row's RowStyle property changes + + + + + Occurs when the value of a Row's Alignment property changes + + + + + Occurs when the value of a Row's Enabled property changes + + + + + Occurs when the value of a Row's Editable property changes + + + + + Represents the methods that will handle the SelectionChanged event of a TableModel + + + + + Provides data for a TableModel's SelectionChanged event + + + + + The TableModel that Raised the event + + + + + The previously selected Row indicies + + + + + The newly selected Row indicies + + + + + The Rectangle that bounds the previously selected Rows + + + + + The Rectangle that bounds the newly selected Rows + + + + + Initializes a new instance of the SelectionEventArgs class with + the specified TableModel source, old selected indicies and new + selected indicies + + The TableModel that originated the event + An array of the previously selected Rows + An array of the newly selected Rows + + + + Gets the TableModel that Raised the event + + + + + Gets the previously selected Row indicies + + + + + Gets the newly selected Row indicies + + + + + Gets the Rectangle that bounds the previously selected Rows + + + + + Gets the Rectangle that bounds the newly selected Rows + + + + + Represents the methods that will handle the RowAdded and RowRemoved + events of a TableModel + + + + + Provides data for a TableModel's RowAdded and RowRemoved events + + + + + The TableModel that Raised the event + + + + + The affected Row + + + + + The start index of the affected Row(s) + + + + + The end index of the affected Row(s) + + + + + Initializes a new instance of the TableModelEventArgs class with + the specified TableModel source, start index, end index and affected Column + + The TableModel that originated the event + + + + Initializes a new instance of the TableModelEventArgs class with + the specified TableModel source, start index, end index and affected Column + + The TableModel that originated the event + The start index of the affected Row(s) + The end index of the affected Row(s) + + + + Initializes a new instance of the TableModelEventArgs class with + the specified TableModel source, start index, end index and affected Column + + The TableModel that originated the event + The affected Row + The start index of the affected Row(s) + The end index of the affected Row(s) + + + + Gets the TableModel that Raised the event + + + + + Gets the affected Row + + + + + Gets the start index of the affected Row(s) + + + + + Gets the end index of the affected Row(s) + + + + + Represents a Column whose Cells are displayed as a Button + + + + + Specifies the alignment of the Image displayed on the button + + + + + Creates a new ButtonColumn with default values + + + + + Creates a new ButtonColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ButtonColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ButtonColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ButtonColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ButtonColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ButtonColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ButtonColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the horizontal alignment of the Column's Cell contents + + + + + Gets or sets the alignment of the Image displayed on the buttons + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + Gets or sets a value indicating whether the Column's Cells can be selected + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Represents a Cell that is displayed in a Table + + + + + Occurs when the value of a Cells property changes + + + + + The text displayed in the Cell + + + + + An object that contains data to be displayed in the Cell + + + + + An object that contains data about the Cell + + + + + Stores information used by CellRenderers to record the current + state of the Cell + + + + + The Row that the Cell belongs to + + + + + The index of the Cell + + + + + Contains the current state of the the Cell + + + + + The Cells CellStyle settings + + + + + The Cells CellCheckStyle settings + + + + + The Cells CellImageStyle settings + + + + + The text displayed in the Cells tooltip + + + + + Specifies whether the Cell has been disposed + + + + + Initializes a new instance of the Cell class with default settings + + + + + Initializes a new instance of the Cell class with the specified text + + The text displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified object + + The object displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and object + + The text displayed in the Cell + The object displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and check value + + The text displayed in the Cell + Specifies whether the Cell is Checked + + + + Initializes a new instance of the Cell class with the specified text + and Image value + + The text displayed in the Cell + The Image displayed in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + fore Color, back Color and Font + + The text displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and CellStyle + + The text displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified object, + fore Color, back Color and Font + + The object displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text + and CellStyle + + The object displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified text, + object, fore Color, back Color and Font + + The text displayed in the Cell + The object displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + object and CellStyle + + The text displayed in the Cell + The object displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified text, + check value, fore Color, back Color and Font + + The text displayed in the Cell + Specifies whether the Cell is Checked + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + check value and CellStyle + + The text displayed in the Cell + Specifies whether the Cell is Checked + A CellStyle that specifies the visual appearance + of the Cell + + + + Initializes a new instance of the Cell class with the specified text, + Image, fore Color, back Color and Font + + The text displayed in the Cell + The Image displayed in the Cell + The foreground Color of the Cell + The background Color of the Cell + The Font used to draw the text in the Cell + + + + Initializes a new instance of the Cell class with the specified text, + Image and CellStyle + + The text displayed in the Cell + The Image displayed in the Cell + A CellStyle that specifies the visual appearance + of the Cell + + + + Initialise default values + + + + + Releases all resources used by the Cell + + + + + Returns the state represented by the specified state flag + + A flag that represents the state to return + The state represented by the specified state flag + + + + Sets the state represented by the specified state flag to the specified value + + A flag that represents the state to be set + The new value of the state + + + + 获取或设置单元格内容 + + + + + 获取或设置单元格显示的非文本数据 + + + + + 获取或设置与单元格关联的用户定义数据 + + + + + 获取或设置单元格风格 + + + + + 获取或设置是否选中单元格 + + + + + 设置是否选中单元格 + + 是否选中单元格 + + + + 获取或设置单元格背景色 + + + + + 指定是否应在设计时序列化BackColor属性 + + true if the BackColor property should be serialized, + false otherwise + + + + 获取或设置单元格字体颜色 + + + + + Specifies whether the ForeColor property should be serialized at + design time + + true if the ForeColor property should be serialized, + false otherwise + + + + 获取或设置单元格字体 + + + + + Specifies whether the Font property should be serialized at + design time + + true if the Font property should be serialized, + false otherwise + + + + 获取或设置单元格边框与其内容之间的空间量 + + + + + Specifies whether the Padding property should be serialized at + design time + + true if the Padding property should be serialized, + false otherwise + + + + 获取或设置选中还是取消选中单元格 + + + + + 获取或设置指定单元格的选中状态 + + + + + 获取或设置一个值,该值指示单元格复选框是否允许三种检查状态而不是两种 + + + + + 获取或设置单元格中显示的图标 + + + + + 获取或设置单元格图像在单元格内的大小调整方式 + + + + + 获取或设置一个值,该值指示是否可以编辑单元格内容 + + + + + Specifies whether the Editable property should be serialized at + design time + + true if the Editable property should be serialized, + false otherwise + + + + 获取或设置一个值,该值指示单元格是否可以响应用户交互 + + + + + Specifies whether the Enabled property should be serialized at + design time + + true if the Enabled property should be serialized, + false otherwise + + + + 获取或设置单元格工具提示中显示的文本 + + + + + Gets or sets the information used by CellRenderers to record the current + state of the Cell + + + + + 获取单元格所属的行 + + + + + 获取或设置单元格所属的行 + + + + + 获取其行内单元格的序号 + + + + + 获取或设置其行内单元格的序号 + + + + + Gets whether the Cell is able to raise events + + + + + Raises the PropertyChanged event + + A CellEventArgs that contains the event data + + + + Stores CheckBox related properties for a Cell + + + + + The CheckState of the Cells check box + + + + + Specifies whether the Cells check box supports an indeterminate state + + + + + Initializes a new instance of the CellCheckStyle class with default settings + + + + + Gets or sets whether the Cell is in the checked state + + + + + Gets or sets the state of the Cells check box + + + + + Gets or sets a value indicating whether the Cells check box + will allow three check states rather than two + + + + + Represents a collection of Cell objects + + + + + The Row that owns the CellCollection + + + + + Initializes a new instance of the CellCollection class + that belongs to the specified Row + + A Row representing the row that owns + the Cell collection + + + + Adds the specified Cell to the end of the collection + + The Cell to add + + + + Adds an array of Cell objects to the collection + + An array of Cell objects to add + to the collection + + + + Removes the specified Cell from the model + + The Cell to remove + + + + Removes an array of Cell objects from the collection + + An array of Cell objects to remove + from the collection + + + + Removes the Cell at the specified index from the collection + + The index of the Cell to remove + + + + Removes all Cells from the collection + + + + + Inserts a Cell into the collection at the specified index + + The zero-based index at which the Cell + should be inserted + The Cell to insert + + + + Inserts an array of Cells into the collection at the specified index + + The zero-based index at which the cells should be inserted + An array of Cells to be inserted into the collection + + + + Returns the index of the specified Cell in the model + + The Cell to look for + The index of the specified Cell in the model + + + + 获取指定序号处的单元格 + + + + + 获取指定列处的单元格 + + + + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Stores Image related properties for a Cell + + + + + The Image displayed in the Cell + + + + + Determines how Images are sized in the Cell + + + + + Initializes a new instance of the CellImageStyle class with default settings + + + + + Gets or sets the image that is displayed in the Cell + + + + + Gets or sets how the Cells image is sized within the Cell + + + + + Specifies the amount of space between the border and any contained + items along each edge of an object + + + + + Represents a Padding structure with its properties + left uninitialized + + + + + The width of the left padding + + + + + The width of the right padding + + + + + The width of the top padding + + + + + The width of the bottom padding + + + + + Initializes a new instance of the Padding class + + The width of the left padding value + The height of top padding value + The width of the right padding value + The height of bottom padding value + + + + Tests whether obj is a CellPadding structure with the same values as + this Padding structure + + The Object to test + This method returns true if obj is a CellPadding structure + and its Left, Top, Right, and Bottom properties are equal to + the corresponding properties of this CellPadding structure; + otherwise, false + + + + Returns the hash code for this CellPadding structure + + An integer that represents the hashcode for this + padding + + + + Gets or sets the width of the left padding value + + + + + Gets or sets the width of the right padding value + + + + + Gets or sets the height of the top padding value + + + + + Gets or sets the height of the bottom padding value + + + + + Tests whether all numeric properties of this CellPadding have + values of zero + + + + + Tests whether two CellPadding structures have equal Left, Top, + Right, and Bottom properties + + The CellPadding structure that is to the left + of the equality operator + The CellPadding structure that is to the right + of the equality operator + This operator returns true if the two CellPadding structures + have equal Left, Top, Right, and Bottom properties + + + + Tests whether two CellPadding structures differ in their Left, Top, + Right, and Bottom properties + + The CellPadding structure that is to the left + of the equality operator + The CellPadding structure that is to the right + of the equality operator + This operator returns true if any of the Left, Top, Right, + and Bottom properties of the two CellPadding structures are unequal; + otherwise false + + + + A custom TypeConverter used to help convert CellPadding objects from + one Type to another + + + + + Returns whether this converter can convert an object of the + given type to the type of this converter, using the specified context + + An ITypeDescriptorContext that provides + a format context + A Type that represents the type you + want to convert from + true if this converter can perform the conversion; + otherwise, false + + + + Returns whether this converter can convert the object to the + specified type, using the specified context + + An ITypeDescriptorContext that provides a + format context + A Type that represents the type you + want to convert to + true if this converter can perform the conversion; + otherwise, false + + + + Converts the given object to the type of this converter, using + the specified context and culture information + + An ITypeDescriptorContext that provides a + format context + The CultureInfo to use as the current culture + The Object to convert + An Object that represents the converted value + + + + Converts the given value object to the specified type, using + the specified context and culture information + + An ITypeDescriptorContext that provides + a format context + A CultureInfo object. If a null reference + is passed, the current culture is assumed + The Object to convert + The Type to convert the value + parameter to + An Object that represents the converted value + + + + Creates an instance of the Type that this TypeConverter is associated + with, using the specified context, given a set of property values for + the object + + An ITypeDescriptorContext that provides a format + context + An IDictionary of new property values + An Object representing the given IDictionary, or a null + reference if the object cannot be created + + + + Returns whether changing a value on this object requires a call to + CreateInstance to create a new value, using the specified context + + An ITypeDescriptorContext that provides a + format context + true if changing a property on this object requires a call + to CreateInstance to create a new value; otherwise, false + + + + Returns a collection of properties for the type of array specified + by the value parameter, using the specified context and attributes + + An ITypeDescriptorContext that provides a format + context + An Object that specifies the type of array for + which to get properties + An array of type Attribute that is used as + a filter + A PropertyDescriptorCollection with the properties that are + exposed for this data type, or a null reference if there are no + properties + + + + Returns whether this object supports properties, using the specified context + + An ITypeDescriptorContext that provides a format context + true if GetProperties should be called to find the properties of this + object; otherwise, false + + + + Represents the position of a Cell in a Table + + + + + Repsesents a null CellPos + + + + + The Row index of this CellPos + + + + + The Column index of this CellPos + + + + + Initializes a new instance of the CellPos class with the specified + row index and column index + + The Row index of the CellPos + The Column index of the CellPos + + + + Translates this CellPos by the specified amount + + The amount to offset the row index + The amount to offset the column index + + + + Tests whether obj is a CellPos structure with the same values as + this CellPos structure + + The Object to test + This method returns true if obj is a CellPos structure + and its Row and Column properties are equal to the corresponding + properties of this CellPos structure; otherwise, false + + + + Returns the hash code for this CellPos structure + + An integer that represents the hashcode for this + CellPos + + + + Converts the attributes of this CellPos to a human-readable string + + A string that contains the row and column indexes of this + CellPos structure + + + + Gets or sets the Row index of this CellPos + + + + + Gets or sets the Column index of this CellPos + + + + + Tests whether any numeric properties of this CellPos have + values of -1 + + + + + Tests whether two CellPos structures have equal Row and Column + properties + + The CellPos structure that is to the left + of the equality operator + The CellPos structure that is to the right + of the equality operator + This operator returns true if the two CellPos structures + have equal Row and Column properties + + + + Tests whether two CellPos structures differ in their Row and + Column properties + + The CellPos structure that is to the left + of the equality operator + The CellPos structure that is to the right + of the equality operator + This operator returns true if any of the Row and Column + properties of the two CellPos structures are unequal; otherwise + false + + + + Stores visual appearance related properties for a Cell + + + + + The background color of the Cell + + + + + The foreground color of the Cell + + + + + The font used to draw the text in the Cell + + + + + The amount of space between the Cells border and its contents + + + + + Initializes a new instance of the CellStyle class with default settings + + + + + Gets or sets the Font used by the Cell + + + + + Gets or sets the background color for the Cell + + + + + Gets or sets the foreground color for the Cell + + + + + Gets or sets the amount of space between the Cells Border and its contents + + + + + Represents a Column whose Cells are displayed as a CheckBox + + + + + The size of the checkbox + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + The style of the checkboxes + + + + + Creates a new CheckBoxColumn with default values + + + + + Creates a new CheckBoxColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new CheckBoxColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new CheckBoxColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new CheckBoxColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new CheckBoxColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new CheckBoxColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the CheckBoxColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the size of the checkboxes + + + + + Specifies whether the CheckSize property should be serialized at + design time + + true if the CheckSize property should be serialized, + false otherwise + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Determines the visual appearance of CheckBoxes in a CheckBoxColumn + + + + + Indicates that CheckBoxes will look like CheckBoxes + + + + + Indicates that CheckBoxes will look like RadioButtons + + + + + Represents a Column whose Cells are displayed as a Color + + + + + Specifies whether the Cells should draw their Color value + + + + + Specifies whether the Cells should draw their Color name + + + + + Creates a new ColorColumn with default values + + + + + Creates a new ColorColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ColorColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ColorColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ColorColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ColorColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ColorColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ColorColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets whether the Column's Cells should draw their Color value + + + + + Gets or sets whether the Column's Cells should draw their Color name + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Summary description for Column. + + + + + Occurs when one of the Column's properties changes + + + + + The amount of space on each side of the Column that can + be used as a resizing handle + + + + + The default width of a Column + + + + + The maximum width of a Column + + + + + The minimum width of a Column + + + + + Contains the current state of the the Column + + + + + The text displayed in the Column's header + + + + + A string that specifies how a Column's Cell contents are formatted + + + + + The alignment of the text displayed in the Column's Cells + + + + + The width of the Column + + + + + The Image displayed on the Column's header + + + + + Specifies whether the Image displayed on the Column's header should + be draw on the right hand side of the Column + + + + + The current state of the Column + + + + + The text displayed when a ToolTip is shown for the Column's header + + + + + The ColumnModel that the Column belongs to + + + + + The x-coordinate of the column's left edge in pixels + + + + + The current SortOrder of the Column + + + + + The CellRenderer used to draw the Column's Cells + + + + + The CellEditor used to edit the Column's Cells + + + + + The Type of the IComparer used to compare the Column's Cells + + + + + Creates a new Column with default values + + + + + Creates a new Column with the specified header text + + The text displayed in the column's header + + + + Creates a new Column with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new Column with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new Column with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new Column with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new Column with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initialise default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Returns the state represented by the specified state flag + + A flag that represents the state to return + The state represented by the specified state flag + + + + Sets the state represented by the specified state flag to the specified value + + A flag that represents the state to be set + The new value of the state + + + + 列名 + + + + + 备注 + + + + + 获取或设置列标题显示文本 + + + + + Gets or sets the string that specifies how a Column's Cell contents + are formatted + + + + + Gets or sets the horizontal alignment of the Column's Cell contents + + + + + 获取或设置列宽 + + + + + 指定设计时宽度属性是否应该被序列化 + + true表示被序列化, + false 则不 + + + + 获取或设置列头的图标 + + + + + 获取或设置列头图标是否显示在文本右边 + + + + + 获取列状态 + + + + + Gets or sets the state of the Column + + + + + Gets or sets the whether the Column is displayed + + + + + Gets or sets whether the Column is able to be sorted + + + + + Gets or sets the user specified ICellRenderer that is used to draw the + Column's Cells + + + + + Gets or sets the user specified ICellEditor that is used to edit the + Column's Cells + + + + + Gets or sets the user specified Comparer type that is used to edit the + Column's Cells + + + + + Gets the Type of the default Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Gets the current SortOrder of the Column + + + + + Gets or sets the current SortOrder of the Column + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + Specifies whether the Editable property should be serialized at + design time + + true if the Editable property should be serialized, + false otherwise + + + + Gets or sets a value indicating whether the Column's Cells can respond to + user interaction + + + + + Specifies whether the Enabled property should be serialized at + design time + + true if the Enabled property should be serialized, + false otherwise + + + + Gets or sets a value indicating whether the Column's Cells can be selected + + + + + Gets or sets the ToolTip text associated with the Column + + + + + Gets the x-coordinate of the column's left edge in pixels + + + + + Gets the x-coordinate of the column's left edge in pixels + + + + + Gets the x-coordinate of the column's right edge in pixels + + + + + Gets or sets the ColumnModel the Column belongs to + + + + + Gets the ColumnModel the Column belongs to. This member is not + intended to be used directly from your code + + + + + 获取该列在集合中的位置 + + + + + Gets whether the Column is able to raise events + + + + + Raises the PropertyChanged event + + A ColumnEventArgs that contains the event data + + + + Specifies alignment of a Columns content + + + + + The Columns content is aligned to the left + + + + + The Columns content is aligned to the center + + + + + The Columns content is aligned to the right + + + + + Represents a collection of Column objects + + + + + The ColumnModel that owns the CollumnCollection + + + + + A local cache of the combined width of all columns + + + + + A local cache of the combined width of all visible columns + + + + + A local cache of the number of visible columns + + + + + A local cache of the last visible column in the collection + + + + + Initializes a new instance of the ColumnModel.ColumnCollection class + that belongs to the specified ColumnModel + + A ColumnModel representing the columnModel that owns + the Column collection + + + + 将指定的列添加到集合 + + The Column to add + + + + 将一个列对象数组添加到集合中 + + An array of Column objects to add + to the collection + + + + 删除指定的列 + + The Column to remove + + + + Removes an array of Column objects from the collection + + An array of Column objects to remove + from the collection + + + + Removes the Column at the specified index from the collection + + The index of the Column to remove + + + + Removes all Columns from the collection + + + + + Returns the index of the specified Column in the model + + The Column to look for + The index of the specified Column in the model + + + + Recalculates the total combined width of all columns + + + + + Gets the Column at the specified index + + + + + Gets the ColumnModel that owns this ColumnCollection + + + + + Returns the total width of all the Columns in the model + + + + + Returns the total width of all the visible Columns in the model + + + + + Returns the number of visible Columns in the model + + + + + Returns the index of the last visible Column in the model + + + + + Raises the ColumnAdded event + + A ColumnModelEventArgs that contains the event data + + + + Raises the ColumnRemoved event + + A ColumnModelEventArgs that contains the event data + + + + Summary description for ColumnModel. + + + + + Occurs when a Column has been added to the ColumnModel + + + + + Occurs when a Column is removed from the ColumnModel + + + + + Occurs when the value of the HeaderHeight property changes + + + + + The default height of a column header + + + + + The minimum height of a column header + + + + + The maximum height of a column header + + + + + The collection of Column's contained in the ColumnModel + + + + + The list of all default CellRenderers used by the Columns in the ColumnModel + + + + + The list of all default CellEditors used by the Columns in the ColumnModel + + + + + The Table that the ColumnModel belongs to + + + + + The height of the column headers + + + + + Initializes a new instance of the ColumnModel class with default settings + + + + + Initializes a new instance of the ColumnModel class with an array of strings + representing TextColumns + + An array of strings that represent the Columns of + the ColumnModel + + + + Initializes a new instance of the Row class with an array of Column objects + + An array of Cell objects that represent the Columns + of the ColumnModel + + + + Initialise default settings + + + + + Returns the index of the Column that lies on the specified position + + The x-coordinate to check + The index of the Column or -1 if no Column is found + + + + Returns the Column that lies on the specified position + + The x-coordinate to check + The Column that lies on the specified position, + or null if not found + + + + Returns a rectangle that countains the header of the column + at the specified index in the ColumnModel + + The index of the column + that countains the header of the specified column + + + + Returns a rectangle that countains the header of the specified column + + The column + A rectangle that countains the header of the specified column + + + + Releases the unmanaged resources used by the ColumnModel and optionally + releases the managed resources + + + + + Returns the ICellEditor that is associated with the specified name + + The name thst is associated with an ICellEditor + The ICellEditor that is associated with the specified name, + or null if the name or ICellEditor do not exist + + + + Gets the ICellEditor for the Column at the specified index in the + ColumnModel + + The index of the Column in the ColumnModel for + which an ICellEditor will be retrieved + The ICellEditor for the Column at the specified index, or + null if the editor does not exist + + + + Associates the specified ICellRenderer with the specified name + + The name to be associated with the specified ICellEditor + The ICellEditor to be added to the ColumnModel + + + + Gets whether the ColumnModel contains an ICellEditor with the + specified name + + The name associated with the ICellEditor + true if the ColumnModel contains an ICellEditor with the + specified name, false otherwise + + + + Gets the number of ICellEditors contained in the ColumnModel + + + + + Returns the ICellRenderer that is associated with the specified name + + The name thst is associated with an ICellEditor + The ICellRenderer that is associated with the specified name, + or null if the name or ICellRenderer do not exist + + + + Gets the ICellRenderer for the Column at the specified index in the + ColumnModel + + The index of the Column in the ColumnModel for + which an ICellRenderer will be retrieved + The ICellRenderer for the Column at the specified index, or + null if the renderer does not exist + + + + Associates the specified ICellRenderer with the specified name + + The name to be associated with the specified ICellRenderer + The ICellRenderer to be added to the ColumnModel + + + + Gets whether the ColumnModel contains an ICellRenderer with the + specified name + + The name associated with the ICellRenderer + true if the ColumnModel contains an ICellRenderer with the + specified name, false otherwise + + + + Gets the number of ICellRenderers contained in the ColumnModel + + + + + Returns the index of the first visible Column that is to the + left of the Column at the specified index in the ColumnModel + + The index of the Column for which the first + visible Column that is to the left of the specified Column is to + be found + the index of the first visible Column that is to the + left of the Column at the specified index in the ColumnModel, or + -1 if the Column at the specified index is the first visible column, + or there are no Columns in the Column model + + + + Returns the index of the first visible Column that is to the + right of the Column at the specified index in the ColumnModel + + The index of the Column for which the first + visible Column that is to the right of the specified Column is to + be found + the index of the first visible Column that is to the + right of the Column at the specified index in the ColumnModel, or + -1 if the Column at the specified index is the last visible column, + or there are no Columns in the Column model + + + + A ColumnCollection representing the collection of + Columns contained within the ColumnModel + + + + + 获取或设置列头高 + + + + + Specifies whether the HeaderHeight property should be serialized at + design time + + true if the HeaderHeight property should be serialized, + false otherwise + + + + 获取可见列的Rect + + + + + 获取所有列的宽度总和 + + + + + 获取可见列的宽度总和 + + + + + 获取最后一个可见列序号 + + + + + 获取可见列数量 + + + + + 获取ColumnModel组件所属的Table组件 + + + + + Gets or sets the Table the ColumnModel belongs to + + + + + Gets whether the ColumnModel is able to raise events + + + + + 获取ColumnModel组件是否可用(根据所属Table是否可用来判断) + + + + + Raises the ColumnAdded event + + A ColumnModelEventArgs that contains the event data + + + + Raises the ColumnRemoved event + + A ColumnModelEventArgs that contains the event data + + + + Raises the HeaderHeightChanged event + + An EventArgs that contains the event data + + + + Raises the ColumnPropertyChanged event + + A ColumnEventArgs that contains the event data + + + + Specifies the state of a Column + + + + + Column is in its normal state + + + + + Mouse is over the Column + + + + + Column is being pressed + + + + + Represents a Column whose Cells are displayed as a ComboBox + + + + + Creates a new ComboBoxColumn with default values + + + + + Creates a new ComboBoxColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ComboBoxColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ComboBoxColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ComboBoxColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ComboBoxColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ComboBoxColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Represents a Column whose Cells are displayed as a DateTime + + + + + Default long date format + + + + + Default short date format + + + + + Default time format + + + + + The format of the date and time displayed in the Cells + + + + + The custom date/time format string + + + + + Creates a new DateTimeColumn with default values + + + + + Creates a new DateTimeColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new DateTimeColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new DateTimeColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new DateTimeColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new DateTimeColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new DateTimeColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the DateTimeColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the format of the date and time displayed in the Column's Cells + + + + + Gets or sets the custom date/time format string + + + + + Specifies whether the CustomDateTimeFormat property should be serialized at + design time + + true if the CustomDateTimeFormat property should be serialized, + false otherwise + + + + Gets or sets the string that specifies how the Column's Cell contents + are formatted + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Provides a user interface that can edit collections of Cells + at design time + + + + + The CellCollection being edited + + + + + Initializes a new instance of the CellCollectionEditor class + using the specified collection type + + The type of the collection for this editor to edit + + + + Edits the value of the specified object using the specified + service provider and context + + An ITypeDescriptorContext that can be + used to gain additional context information + A service provider object through which + editing services can be obtained + The object to edit the value of + The new value of the object. If the value of the + object has not changed, this should return the same object + it was passed + + + + Creates a new instance of the specified collection item type + + The type of item to create + A new instance of the specified object + + + + Destroys the specified instance of the object + + The object to destroy + + + + A custom TypeConverter used to help convert Cells from + one Type to another + + + + + Returns whether this converter can convert the object to the + specified type, using the specified context + + An ITypeDescriptorContext that provides a + format context + A Type that represents the type + you want to convert to + true if this converter can perform the conversion; o + therwise, false + + + + Converts the given value object to the specified type, using + the specified context and culture information + + An ITypeDescriptorContext that provides + a format context + A CultureInfo object. If a null reference + is passed, the current culture is assumed + The Object to convert + The Type to convert the value + parameter to + An Object that represents the converted value + + + + Provides a user interface that can edit collections of Columns + at design time + + + + + The ColumnCollection being edited + + + + + Preview table + + + + + ColumnModel for the preview table + + + + + TableModel for the preview table + + + + + + + + + + Initializes a new instance of the ColumnCollectionEditor class + using the specified collection type + + The type of the collection for this editor to edit + + + + Edits the value of the specified object using the specified + service provider and context + + An ITypeDescriptorContext that can be + used to gain additional context information + A service provider object through which + editing services can be obtained + The object to edit the value of + The new value of the object. If the value of the + object has not changed, this should return the same object + it was passed + + + + Gets the data types that this collection editor can contain + + An array of data types that this collection can contain + + + + Creates a new instance of the specified collection item type + + The type of item to create + A new instance of the specified object + + + + Destroys the specified instance of the object + + The object to destroy + + + + Handler for the PropertyGrid's SelectedObjectsChanged event + + The object that raised the event + An EventArgs that contains the event data + + + + Handler for a Column's PropertyChanged event + + The object that raised the event + A ColumnEventArgs that contains the event data + + + + A CollectionEditor that displays the help and command areas of its PropertyGrid + + + + + Initializes a new instance of the HelpfulCollectionEditor class using + the specified collection type + + The type of the collection for this editor to edit + + + + Creates a new form to display and edit the current collection + + An instance of CollectionEditor.CollectionForm to provide as the + user interface for editing the collection + + + + Provides a user interface that can edit collections of Rows + at design time + + + + + The RowCollection being edited + + + + + Initializes a new instance of the RowCollectionEditor class + using the specified collection type + + The type of the collection for this editor to edit + + + + Edits the value of the specified object using the specified + service provider and context + + An ITypeDescriptorContext that can be + used to gain additional context information + A service provider object through which + editing services can be obtained + The object to edit the value of + The new value of the object. If the value of the + object has not changed, this should return the same object + it was passed + + + + Creates a new instance of the specified collection item type + + The type of item to create + A new instance of the specified object + + + + Destroys the specified instance of the object + + The object to destroy + + + + + + + + + + + + + + + + + A custom TypeConverter used to help convert Rows from + one Type to another + + + + + Returns whether this converter can convert the object to the + specified type, using the specified context + + An ITypeDescriptorContext that provides a + format context + A Type that represents the type + you want to convert to + true if this converter can perform the conversion; o + therwise, false + + + + Converts the given value object to the specified type, using + the specified context and culture information + + An ITypeDescriptorContext that provides + a format context + A CultureInfo object. If a null reference + is passed, the current culture is assumed + The Object to convert + The Type to convert the value + parameter to + An Object that represents the converted value + + + + Represents a Column whose Cells are displayed with a drop down + button for editing + + + + + Specifies whether the Cells should draw a drop down button + + + + + Creates a new DropDownColumn with default values + + + + + Creates a new DropDownColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new DropDownColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new DropDownColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new DropDownColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new DropDownColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new DropDownColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the DropDownColumn with default values + + + + + Gets or sets whether the Column's Cells should draw a drop down button + + + + + Specifies how a Table draws grid lines between its rows and columns + + + + + No grid lines are drawn + + + + + Grid lines are only drawn between columns + + + + + Grid lines are only drawn between rows + + + + + Grid lines are drawn between rows and columns + + + + + Specifies the style of the lines drawn when a Table draws its grid lines + + + + + Specifies a solid line + + + + + Specifies a line consisting of dashes + + + + + Specifies a line consisting of dots + + + + + Specifies a line consisting of a repeating pattern of dash-dot + + + + + Specifies a line consisting of a repeating pattern of dash-dot-dot + + + + + A specialized ContextMenu for Column Headers + + + + + The ColumnModel that owns the menu + + + + + Specifies whether the menu is enabled + + + + + More columns menuitem + + + + + Seperator menuitem + + + + + Initializes a new instance of the HeaderContextMenu class with + no menu items specified + + + + + Displays the shortcut menu at the specified position + + A Control object that specifies the control + with which this shortcut menu is associated + A Point object that specifies the coordinates at + which to display the menu. These coordinates are specified relative + to the client coordinates of the control specified in the control + parameter + + + + + + + + + Raises the Popup event + + An EventArgs that contains the event data + + + + + + + + + + + + + + + + + + Summary description for ShowColumnsDialog. + + + + + Required designer variable. + + + + + + + + + + Clean up any resources being used. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents a Column whose Cells are displayed as an Image + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + Creates a new ImageColumn with default values + + + + + Creates a new ImageColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ImageColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ImageColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ImageColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ImageColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ImageColumn with the specified header text, image, width + and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ImageColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets whether any text contained in the Column's Cells should be drawn + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + Specifies how Images are sized within a Cell + + + + + The Image will be displayed normally + + + + + The Image will be stretched/shrunken to fit the Cell + + + + + The Image will be scaled to fit the Cell + + + + + Represents a Column whose Cells are displayed as a numbers + + + + + The value to increment or decrement a Cell when its up or down buttons are clicked + + + + + The maximum value for a Cell + + + + + The minimum value for a Cell + + + + + The alignment of the up and down buttons in the Column + + + + + Specifies whether the up and down buttons should be drawn + + + + + Creates a new NumberColumn with default values + + + + + Creates a new NumberColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new NumberColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new NumberColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new TextColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new TextColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new TextColumn with the specified header text, image, width + and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the NumberColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets the maximum value for Column's Cells + + + + + Specifies whether the Maximum property should be serialized at + design time + + true if the Maximum property should be serialized, + false otherwise + + + + Gets or sets the minimum value for Column's Cells + + + + + Specifies whether the Minimum property should be serialized at + design time + + true if the Minimum property should be serialized, + false otherwise + + + + Gets or sets the value to increment or decrement a Cell when its up or down + buttons are clicked + + + + + Specifies whether the Increment property should be serialized at + design time + + true if the Increment property should be serialized, + false otherwise + + + + Gets or sets whether the Column's Cells should draw up and down buttons + + + + + Gets or sets the alignment of the up and down buttons in the Column + + + + + Gets or sets the string that specifies how a Column's Cell contents + are formatted + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Represents a Column whose Cells are displayed as a ProgressBar + + + + + Specifies whether the ProgressBar's value as a string + should be displayed + + + + + Creates a new ProgressBarColumn with default values + + + + + Creates a new ProgressBarColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new ProgressBarColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new ProgressBarColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new ProgressBarColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new ProgressBarColumn with the specified header text, image + and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new ProgressBarColumn with the specified header text, image, + width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Initializes the ProgressBarColumn with default values + + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets or sets whether a Cell's percantage value should be drawn as a string + + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + Gets or sets a value indicating whether the Column's Cells contents + are able to be edited + + + + + SRepresents a row of Cells displayed in a Table + + + + + Occurs when a Cell is added to the Row + + + + + Occurs when a Cell is removed from the Row + + + + + Occurs when the value of a Row's property changes + + + + + The collection of Cells's contained in the Row + + + + + An object that contains data about the Row + + + + + The TableModel that the Row belongs to + + + + + The index of the Row + + + + + the current state of the Row + + + + + The Row's RowStyle + + + + + The number of Cells in the Row that are selected + + + + + Specifies whether the Row has been disposed + + + + + Initializes a new instance of the Row class with default settings + + + + + Initializes a new instance of the Row class with an array of strings + representing Cells + + An array of strings that represent the Cells of + the Row + + + + Initializes a new instance of the Row class with an array of Cell objects + + An array of Cell objects that represent the Cells of the Row + + + + Initializes a new instance of the Row class with an array of strings + representing Cells and the foreground color, background color, and font + of the Row + + An array of strings that represent the Cells of the Row + The foreground Color of the Row + The background Color of the Row + The Font used to draw the text in the Row's Cells + + + + Initializes a new instance of the Row class with an array of Cell objects and + the foreground color, background color, and font of the Row + + An array of Cell objects that represent the Cells of the Row + The foreground Color of the Row + The background Color of the Row + The Font used to draw the text in the Row's Cells + + + + Initialise default values + + + + + Releases all resources used by the Row + + + + + Returns the state represented by the specified state flag + + A flag that represents the state to return + The state represented by the specified state flag + + + + Sets the state represented by the specified state flag to the specified value + + A flag that represents the state to be set + The new value of the state + + + + A CellCollection representing the collection of + Cells contained within the Row + + + + + Gets or sets the object that contains data about the Row + + + + + Gets or sets the RowStyle used by the Row + + + + + 获取或设置行背景色 + + + + + Specifies whether the BackColor property should be serialized at + design time + + true if the BackColor property should be serialized, + false otherwise + + + + 获取或设置行字体颜色 + + + + + Specifies whether the ForeColor property should be serialized at + design time + + true if the ForeColor property should be serialized, + false otherwise + + + + 获取或设置行字体对齐方式 + + + + + 获取或设置行字体 + + + + + Specifies whether the Font property should be serialized at + design time + + true if the Font property should be serialized, + false otherwise + + + + 获取或设置该行的列内容是否可编辑 + + + + + Specifies whether the Editable property should be serialized at + design time + + true if the Editable property should be serialized, + false otherwise + + + + 指定行的单元格是否可以响应用户交互 + + + + + Specifies whether the Enabled property should be serialized at + design time + + true if the Enabled property should be serialized, + false otherwise + + + + Gets the TableModel the Row belongs to + + + + + Gets or sets the TableModel the Row belongs to + + + + + 获取行序号 + + + + + Gets or sets the index of the Row within its TableModel + + + + + Updates the Cell's Index property so that it matches the Cells + position in the CellCollection + + The index to start updating from + + + + Gets whether the Row is able to raise events + + + + + 获取选中的列数量 + + + + + Gets or sets the number of Cells that are selected within the Row + + + + + 获取是否选定行中的任何单元格 + + + + + 返回是否选择了指定序号的单元格 + + The index of the Cell in the Row's Row.CellCollection + True if the Cell at the specified index is selected, + otherwise false + + + + 清除选定状态 + + + + + 返回包含行中所有选定单元格的单元格数组 + + + + + 返回一个数组,该数组包含行中所有选定单元格的序号 + + + + + Raises the PropertyChanged event + + A RowEventArgs that contains the event data + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Raises the CellPropertyChanged event + + A CellEventArgs that contains the event data + + + + Specifies alignment of a Rows content + + + + + The Rows content is aligned to the top + + + + + The Rows content is aligned to the center + + + + + The Rows content is aligned to the bottom + + + + + Represents a collection of Row objects + + + + + The TableModel that owns the RowCollection + + + + + 初始化属于指定TableModel的RowCollection类的新实例 + + 表示拥有RowCollection的TableModel组件 + + + + 将指定的行添加到集合的末尾 + + 要添加的行 + + + + 将Row对象的数组添加到集合中 + + 要添加到集合中的Row对象的数组 + + + + 删除指定的行 + + 要删除的行 + + + + 从集合中移除Row对象的数组 + + 要从集合中移除的Row对象的数组 + + + + 从集合中移除指定序号处的行 + + 要删除的行序号 + + + + 从集合中移除所有行 + + + + + 在集合中的指定序号处插入行 + + 应插入的行序号(从零开始计算) + 要插入的行 + + + + 在集合中的指定序号处插入行数组 + + 应插入的行序号(从零开始计算) + 要插入到集合中的行数组 + + + + 返回指定行的序号 + + 要查找的行 + 指定行的序号 + + + + 获取指定序号处的行 + + + + + 将指定序号处的行替换为指定的行 + + 要替换的行序号 + 要放置在指定序号处的行 + + + + Raises the RowAdded event + + A TableModelEventArgs that contains the event data + + + + Raises the RowRemoved event + + A TableModelEventArgs that contains the event data + + + + Stores visual appearance related properties for a Row + + + + + The background color of the Row + + + + + The foreground color of the Row + + + + + The font used to draw the text in the Row + + + + + The alignment of the text in the Row + + + + + Initializes a new instance of the RowStyle class with default settings + + + + + 获取或设置用于显示行文本的字体 + + + + + 获取或设置行背景色 + + + + + 获取或设置行字体颜色 + + + + + 获取或设置行文本对齐方式 + + + + + 指定表格绘制选定单元格的方式 + + + + + 选定单元格行中的第一个可见单元格绘制为选定单元格 + + + + + 选定的单元格将绘制为选定的单元格 + + + + + Summary description for Table. + + + + + Occurs when the value of a Cells property changes + + + + + Occurs when a Cell gains focus + + + + + Occurs when a Cell loses focus + + + + + Occurs when a key is pressed when a Cell has focus + + + + + Occurs when a key is released when a Cell has focus + + + + + Occurs when the mouse pointer enters a Cell + + + + + Occurs when the mouse pointer leaves a Cell + + + + + Occurs when a mouse pointer is over a Cell and a mouse button is pressed + + + + + Occurs when a mouse pointer is over a Cell and a mouse button is released + + + + + Occurs when a mouse pointer is moved over a Cell + + + + + Occurs when the mouse pointer hovers over a Cell + + + + + Occurs when a Cell is clicked + + + + + Occurs when a Cell is double-clicked + + + + + Occurs when a Cell's button is clicked + + + + + Occurs when a Cell's Checked value changes + + + + + Occurs when a Column's property changes + + + + + Occurs when the mouse pointer enters a Column Header + + + + + Occurs when the mouse pointer leaves a Column Header + + + + + Occurs when a mouse pointer is over a Column Header and a mouse button is pressed + + + + + Occurs when a mouse pointer is over a Column Header and a mouse button is released + + + + + Occurs when a mouse pointer is moved over a Column Header + + + + + Occurs when the mouse pointer hovers over a Column Header + + + + + Occurs when a Column Header is clicked + + + + + Occurs when a Column Header is double-clicked + + + + + Occurs when the height of the Column Headers changes + + + + + Occurs when the value of the Table's ColumnModel property changes + + + + + Occurs when a Column is added to the ColumnModel + + + + + Occurs when a Column is removed from the ColumnModel + + + + + Occurs when the Table begins editing a Cell + + + + + Occurs when the Table stops editing a Cell + + + + + Occurs when the editing of a Cell is cancelled + + + + + Occurs when a Cell is added to a Row + + + + + Occurs when a Cell is removed from a Row + + + + + Occurs when the value of a Rows property changes + + + + + Occurs when a Column is about to be sorted + + + + + Occurs after a Column has finished sorting + + + + + Occurs before a Cell is painted + + + + + Occurs after a Cell is painted + + + + + Occurs before a Column header is painted + + + + + Occurs after a Column header is painted + + + + + Occurs when the value of the Table's TableModel property changes + + + + + Occurs when a Row is added into the TableModel + + + + + Occurs when a Row is removed from the TableModel + + + + + Occurs when the value of the TableModel Selection property changes + + + + + Occurs when the value of the RowHeight property changes + + + + + Required designer variable. + + + + + The style of the Table's border + + + + + The last known cell position that the mouse was over + + + + + The last known cell position that the mouse's left + button was pressed in + + + + + The position of the Cell that currently has focus + + + + + The Cell that is currently being edited + + + + + The ICellEditor that is currently being used to edit a Cell + + + + + The action that must be performed on a Cell to start editing + + + + + The key that must be pressed for editing to start when + editStartAction is set to EditStartAction.CustomKey + + + + + The amount of time (in milliseconds) that that the + mouse pointer must hover over a Cell or Column Header before + a MouseHover event is raised + + + + + A TRACKMOUSEEVENT used to set the hoverTime + + + + + The ColumnModel of the Table + + + + + Whether the Table supports column resizing + + + + + The index of the column currently being resized + + + + + The x coordinate of the currently resizing column + + + + + The horizontal distance between the resize starting + point and the right edge of the resizing column + + + + + The width that the resizing column will be set to + once column resizing is finished + + + + + The index of the current pressed column + + + + + The index of the current "hot" column + + + + + The index of the last sorted column + + + + + The Color of a sorted Column's background + + + + + Indicates whether grid lines appear between the rows and columns + containing the rows and cells in the Table + + + + + The color of the grid lines + + + + + The line style of the grid lines + + + + + The styles of the column headers + + + + + The Renderer used to paint the column headers + + + + + The font used to draw the text in the column header + + + + + The ContextMenu for the column headers + + + + + The TableModel of the Table + + + + + Indicates whether the Table will allow the user to scroll to any + columns or rows placed outside of its visible boundaries + + + + + The Table's horizontal ScrollBar + + + + + The Table's vertical ScrollBar + + + + + Specifies whether rows and cells can be selected + + + + + Specifies whether multiple rows and cells can be selected + + + + + Specifies whether clicking a row selects all its cells + + + + + Specifies whether the selected rows and cells in the Table remain + highlighted when the Table loses focus + + + + + The background color of selected rows and cells + + + + + The foreground color of selected rows and cells + + + + + The background color of selected rows and cells when the Table + doesn't have focus + + + + + The foreground color of selected rows and cells when the Table + doesn't have focus + + + + + Determines how selected Cells are hilighted + + + + + The state of the table + + + + + Is the Table currently initialising + + + + + The number of times BeginUpdate has been called + + + + + The ToolTip used by the Table to display cell and column tooltips + + + + + The alternating row background color + + + + + The text displayed in the Table when it has no data to display + + + + + Specifies whether the Table is being used as a preview Table + in a ColumnColection editor + + + + + Initializes a new instance of the Table class with default settings + + + + + Computes the location of the specified client point into coordinates + relative to the display rectangle + + The client x coordinate to convert + The client y coordinate to convert + A Point that represents the converted coordinates (x, y), + relative to the display rectangle + + + + Computes the location of the specified client point into coordinates + relative to the display rectangle + + The client coordinate Point to convert + A Point that represents the converted Point, p, + relative to the display rectangle + + + + Converts the location of the specified Rectangle into coordinates + relative to the display rectangle + + The Rectangle to convert whose location is in + client coordinates + A Rectangle that represents the converted Rectangle, rect, + relative to the display rectangle + + + + Computes the location of the specified point relative to the display + rectangle point into client coordinates + + The x coordinate to convert relative to the display rectangle + The y coordinate to convert relative to the display rectangle + A Point that represents the converted coordinates (x, y) relative to + the display rectangle in client coordinates + + + + Computes the location of the specified point relative to the display + rectangle into client coordinates + + The point relative to the display rectangle to convert + A Point that represents the converted Point relative to + the display rectangle, p, in client coordinates + + + + Converts the location of the specified Rectangle relative to the display + rectangle into client coordinates + + The Rectangle to convert whose location is relative to + the display rectangle + A Rectangle that represents the converted Rectangle relative to + the display rectangle, rect, in client coordinates + + + + Returns the Cell at the specified client coordinates + + The client x coordinate of the Cell + The client y coordinate of the Cell + The Cell at the specified client coordinates, or + null if it does not exist + + + + Returns the Cell at the specified client Point + + The point of interest + The Cell at the specified client Point, + or null if not found + + + + Returns a Rectangle that specifies the size and location the cell at + the specified row and column indexes in client coordinates + + The index of the row that contains the cell + The index of the column that contains the cell + A Rectangle that specifies the size and location the cell at + the specified row and column indexes in client coordinates + + + + Returns a Rectangle that specifies the size and location the cell at + the specified cell position in client coordinates + + The position of the cell + A Rectangle that specifies the size and location the cell at + the specified cell position in client coordinates + + + + Returns a Rectangle that specifies the size and location of the + specified cell in client coordinates + + The cell whose bounding rectangle is to be retrieved + A Rectangle that specifies the size and location the specified + cell in client coordinates + + + + Returns whether Cell at the specified row and column indexes + is not null + + The row index of the cell + The column index of the cell + True if the cell at the specified row and column indexes + is not null, otherwise false + + + + Returns whether Cell at the specified cell position is not null + + The position of the cell + True if the cell at the specified cell position is not + null, otherwise false + + + + Returns a CellPos that specifies the next Cell that is visible + and enabled from the specified Cell + + A CellPos that specifies the Cell to start + searching from + Specifies whether to move to the start of the + next Row when the end of the current Row is reached + Specifies whether the search should travel + in a forward direction (top to bottom, left to right) through the Cells + Indicates whether the specified starting + Cell is included in the search + Specifies whether all Cells in + the Row should be included in the search + A CellPos that specifies the next Cell that is visible + and enabled, or CellPos.Empty if there are no Cells that are visible + and enabled + + + + Returns a CellPos that specifies the next Cell that able to be + edited from the specified Cell + + A CellPos that specifies the Cell to start + searching from + Specifies whether to move to the start of the + next Row when the end of the current Row is reached + Specifies whether the search should travel + in a forward direction (top to bottom, left to right) through the Cells + Indicates whether the specified starting + Cell is included in the search + A CellPos that specifies the next Cell that is able to + be edited, or CellPos.Empty if there are no Cells that editable + + + + Returns the index of the Column at the specified client coordinates + + The client x coordinate of the Column + The client y coordinate of the Column + The index of the Column at the specified client coordinates, or + -1 if it does not exist + + + + Returns the index of the Column at the specified client point + + The point of interest + The index of the Column at the specified client point, or + -1 if it does not exist + + + + Returns the bounding rectangle of the specified + column's header in client coordinates + + The index of the column + The bounding rectangle of the specified + column's header + + + + Returns the bounding rectangle of the specified + column's header in client coordinates + + The column + The bounding rectangle of the specified + column's header + + + + Returns the bounding rectangle of the column at the + specified index in client coordinates + + The column + The bounding rectangle of the column at the + specified index + + + + Returns the bounding rectangle of the specified column + in client coordinates + + The column + The bounding rectangle of the specified + column + + + + Returns the index of the Row at the specified client coordinates + + The client x coordinate of the Row + The client y coordinate of the Row + The index of the Row at the specified client coordinates, or + -1 if it does not exist + + + + Returns the index of the Row at the specified client point + + The point of interest + The index of the Row at the specified client point, or + -1 if it does not exist + + + + Returns the bounding rectangle of the row at the + specified index in client coordinates + + The index of the row + The bounding rectangle of the row at the + specified index + + + + Returns the bounding rectangle of the specified row + in client coordinates + + The row + The bounding rectangle of the specified + row + + + + Returns a TableRegions value that represents the table region at + the specified client coordinates + + The client x coordinate + The client y coordinate + A TableRegions value that represents the table region at + the specified client coordinates + + + + Returns a TableRegions value that represents the table region at + the specified client point + + The point of interest + A TableRegions value that represents the table region at + the specified client point + + + + Releases the unmanaged resources used by the Control and optionally + releases the managed resources + + true to release both managed and unmanaged + resources; false to release only unmanaged resources + + + + Removes the ColumnModel and TableModel from the Table + + + + + Records the Cell that is currently being edited and the + ICellEditor used to edit the Cell + + The Cell that is currently being edited + The ICellEditor used to edit the Cell + + + + Records the Cell that is currently being edited and the + ICellEditor used to edit the Cell + + The Cell that is currently being edited + The ICellEditor used to edit the Cell + + + + Starts editing the Cell at the specified row and column indexes + + The row index of the Cell to be edited + The column index of the Cell to be edited + + + + Starts editing the Cell at the specified CellPos + + A CellPos that specifies the Cell to be edited + + + + Stops editing the current Cell and commits any changes + + + + + Cancels editing the current Cell and ignores any changes + + + + + Returns whether the Cell at the specified row and column is able + to be edited by the user + + The row index of the Cell to check + The column index of the Cell to check + True if the Cell at the specified row and column is able + to be edited by the user, false otherwise + + + + Returns whether the Cell at the specified CellPos is able + to be edited by the user + + A CellPos that specifies the Cell to check + True if the Cell at the specified CellPos is able + to be edited by the user, false otherwise + + + + Returns whether the Cell at the specified row and column is able + to respond to user interaction + + The row index of the Cell to check + The column index of the Cell to check + True if the Cell at the specified row and column is able + to respond to user interaction, false otherwise + + + + Returns whether the Cell at the specified CellPos is able + to respond to user interaction + + A CellPos that specifies the Cell to check + True if the Cell at the specified CellPos is able + to respond to user interaction, false otherwise + + + + Invalidates the specified Cell + + The Cell to be invalidated + + + + Invalidates the Cell located at the specified row and column indicies + + The row index of the Cell to be invalidated + The column index of the Cell to be invalidated + + + + Invalidates the Cell located at the specified CellPos + + A CellPos that specifies the Cell to be invalidated + + + + Invalidates the specified Row + + The Row to be invalidated + + + + Invalidates the Row located at the specified row index + + The row index of the Row to be invalidated + + + + Invalidates the Row located at the specified CellPos + + A CellPos that specifies the Row to be invalidated + + + + Determines whether the specified key is reserved for use by the Table + + One of the Keys values + true if the specified key is reserved for use by the Table; + otherwise, false + + + + Determines whether the specified key is a regular input key or a special + key that requires preprocessing + + One of the Keys values + true if the specified key is a regular input key; otherwise, false + + + + Prevents the Table from drawing until the EndUpdate method is called + + + + + Resumes drawing of the Table after drawing is suspended by the + BeginUpdate method + + + + + Signals the object that initialization is starting + + + + + Signals the object that initialization is complete + + + + + Gets whether the Table is currently initializing + + + + + This member supports the .NET Framework infrastructure and is not + intended to be used directly from your code + + + + + Updates the scrollbars to reflect any changes made to the Table + + + + + Scrolls the contents of the Table horizontally to the specified value + + The value to scroll to + + + + Scrolls the contents of the Table vertically to the specified value + + The value to scroll to + + + + Ensures that the Cell at the specified row and column is visible + within the Table, scrolling the contents of the Table if necessary + + The zero-based index of the row to scroll into view + The zero-based index of the column to scroll into view + true if the Table scrolled to the Cell at the specified row + and column, false otherwise + + + + Ensures that the Cell at the specified CellPos is visible within + the Table, scrolling the contents of the Table if necessary + + A CellPos that contains the zero-based index + of the row and column to scroll into view + + + + + Gets the index of the first visible Column currently displayed in the Table + + + + + Gets the index of the last visible Column currently displayed in the Table + + + + + Sorts the last sorted column opposite to its current sort order, + or sorts the currently focused column in ascending order if no + columns have been sorted + + + + + Sorts the last sorted column opposite to its current sort order, + or sorts the currently focused column in ascending order if no + columns have been sorted + + Specifies whether a stable sorting method + should be used to sort the column + + + + Sorts the specified column opposite to its current sort order, + or in ascending order if the column is not sorted + + The index of the column to sort + + + + Sorts the specified column opposite to its current sort order, + or in ascending order if the column is not sorted + + The index of the column to sort + Specifies whether a stable sorting method + should be used to sort the column + + + + Sorts the specified column in the specified sort direction + + The index of the column to sort + The direction the column is to be sorted + + + + Sorts the specified column in the specified sort direction + + The index of the column to sort + The direction the column is to be sorted + Specifies whether a stable sorting method + should be used to sort the column + + + + Sorts the specified column in the specified sort direction + + The index of the column to sort + The column to sort + The direction the column is to be sorted + Specifies whether a stable sorting method + should be used to sort the column + + + + Returns whether a Column exists at the specified index in the + Table's ColumnModel + + The index of the column to check + True if a Column exists at the specified index in the + Table's ColumnModel, false otherwise + + + + 获取或设置Table组件的边框样式 + + + + + 获取Table组件的边框宽度 + + + + + Gets the last known cell position that the mouse was over + + + + + Gets the last known cell position that the mouse's left + button was pressed in + + + + + Gets or sets the position of the Cell that currently has focus + + + + + Gets or sets the amount of time (in milliseconds) that that the + mouse pointer must hover over a Cell or Column Header before + a MouseHover event is raised + + + + + Gets the rectangle that represents the "client area" of the control. + (The rectangle excludes the borders and scrollbars) + + + + + Gets the rectangle that represents the "cell data area" of the control. + (The rectangle excludes the borders, column headers and scrollbars) + + + + + + + + + + 获取或设置包含表中显示的所有列的ColumnModel + + + + + 获取或设置表是否允许用户调整列宽 + + + + + 返回表中的列数 + + + + + 返回当前排序的列的序号 + + + + + 获取或设置当前排序的列的背景颜色 + + + + + Specifies whether the Table's SortedColumnBackColor property + should be serialized at design time + + True if the SortedColumnBackColor property should be + serialized, False otherwise + + + + Gets the rectangle that represents the display area of the Table + + + + + 获取表当前是否正在编辑单元格 + + + + + 获取CellPos,该CellPos指定当前正在编辑的单元格的位置 + + + + + 获取当前用于编辑单元格的ICellEditor + + + + + 获取或设置导致启动编辑的操作 + + + + + 获取或设置用于启动单元格编辑的自定义快捷键 + + + + + 获取或设置网格线在行和列周围的显示方式 + + + + + 获取或设置用于绘制网格的线条的样式 + + + + + 获取或设置网格线的颜色 + + + + + Specifies whether the Table's GridColor property + should be serialized at design time + + True if the GridColor property should be + serialized, False otherwise + + + + + + + + + Specifies whether the Table's BackColor property + should be serialized at design time + + True if the BackColor property should be + serialized, False otherwise + + + + 获取或设置列标题样式 + + + + + 获取列标题的高度 + + + + + 获取一个矩形,该矩形指定表的列标题区域的大小和位置 + + + + + 获取或设置用于在列标题中绘制文本的字体 + + + + + Specifies whether the Table's HeaderFont property + should be serialized at design time + + True if the HeaderFont property should be + serialized, False otherwise + + + + Gets or sets the HeaderRenderer used to draw the Column headers + + + + + 获取用于列标题的菜单控件 + + + + + 获取或设置当用户右键单击列标题时是否能够显示菜单 + + + + + 获取或设置行高 + + + + + 总行高 + + + + + 获取表中所有行的组合高度加上列标题的高度 + + + + + 返回Table组件行数 + + + + + 返回Table组件中可见的行数 + + + + + 获取Table组件中首个可见行的序号 + + + + + 获取Table组件中首个可见行 + + + + + 获取或设置Table组件中奇数行的背景色 + + + + + 在数据超过可见区域时,显示滚动条 + + + + + 获取当前水平滚动条是否可见 + + + + + 获取当前垂直滚动条是否可见 + + + + + 获取或设置列是否允许被选中 + + + + + 获取或设置选中列的风格 + + + + + 获取或设置是否允许多选 + + + + + 获取或设置是否整行选中 + + + + + 当Table组件失去焦点时,选中项是否不再突出显示 + + + + + 选中列的背景色 + + + + + Specifies whether the Table's SelectionBackColor property + should be serialized at design time + + True if the SelectionBackColor property should be + serialized, False otherwise + + + + 选中列的字体颜色 + + + + + Specifies whether the Table's SelectionForeColor property + should be serialized at design time + + True if the SelectionForeColor property should be + serialized, False otherwise + + + + 当Table组件没有获取焦点时,选中列的背景色 + + + + + Specifies whether the Table's UnfocusedSelectionBackColor property + should be serialized at design time + + True if the UnfocusedSelectionBackColor property should be + serialized, False otherwise + + + + 当Table组件没有获取焦点时,选中列的字体颜色 + + + + + Specifies whether the Table's UnfocusedSelectionForeColor property + should be serialized at design time + + True if the UnfocusedSelectionForeColor property should be + serialized, False otherwise + + + + 选中行的集合 + + + + + 选中行的序号集合 + + + + + Gets or sets the TableModel that contains all the Rows + and Cells displayed in the Table + + + + + Gets or sets the text displayed by the Table when it doesn't + contain any items + + + + + Gets or sets the current state of the Table + + + + + Calculates the state of the Table at the specified + client coordinates + + The client x coordinate + The client y coordinate + + + + Gets whether the Table is able to raise events + + + + + Gets or sets whether the Table is being used as a preview Table in + a ColumnCollectionEditor + + + + + 获取内部工具提示组件 + + + + + 获取或设置当前是否为表启用工具提示 + + + + + 获取或设置工具提示的自动延迟 + + + + + 获取或设置当指针在具有指定工具提示文本的控件内保持静止时,工具提示保持可见的时间期限。 + + + + + 获取或设置工具提示显示之前经过的时间。 + + + + + 获取或设置一个值,该值指示是否显示工具提示窗口,甚至是在其父控件不活动的时候。 + + + + + + + + + + Raises the CellPropertyChanged event + + A CellEventArgs that contains the event data + + + + Handler for a Cells PropertyChanged event + + The object that raised the event + A CellEventArgs that contains the event data + + + + Raises the CellButtonClicked event + + A CellButtonEventArgs that contains the event data + + + + Raises the CellCheckChanged event + + A CellCheckChanged that contains the event data + + + + Raises the CellGotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the GotFocus event for the Cell at the specified position + + The position of the Cell that gained focus + + + + Raises the CellLostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event for the Cell at the specified position + + The position of the Cell that lost focus + + + + Raises the CellKeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises a KeyDown event for the Cell at the specified cell position + + The position of the Cell + A KeyEventArgs that contains the event data + + + + Raises the CellKeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises a KeyUp event for the Cell at the specified cell position + + The position of the Cell + A KeyEventArgs that contains the event data + + + + Raises the CellMouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseEnter event for the Cell at the specified cell position + + The position of the Cell + + + + Raises the CellMouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseLeave event for the Cell at the specified cell position + + The position of the Cell + + + + Raises the CellMouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseUp event for the Cell at the specified cell position + + The position of the Cell + A MouseEventArgs that contains the event data + + + + Raises the CellMouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseDown event for the Cell at the specified cell position + + The position of the Cell + A MouseEventArgs that contains the event data + + + + Raises the CellMouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises a MouseMove event for the Cell at the specified cell position + + The position of the Cell + A MouseEventArgs that contains the event data + + + + Resets the last known cell position that the mouse was over to empty + + + + + Raises the CellHover event + + A CellEventArgs that contains the event data + + + + Raises the CellClick event + + A CellEventArgs that contains the event data + + + + Raises the CellDoubleClick event + + A CellEventArgs that contains the event data + + + + Raises the ColumnPropertyChanged event + + A ColumnEventArgs that contains the event data + + + + Raises the HeaderMouseEnter event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseEnter event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + + + + Raises the HeaderMouseLeave event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseLeave event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + + + + Raises the HeaderMouseUp event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseUp event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderMouseDown event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseDown event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderMouseMove event + + A HeaderMouseEventArgs that contains the event data + + + + Raises a MouseMove event for the Column header at the specified colunm + index position + + The index of the column to recieve the event + A HeaderMouseEventArgs that contains the event data + + + + Resets the current "hot" column + + + + + Raises the HeaderMouseHover event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderClick event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the HeaderDoubleClick event + + A HeaderMouseEventArgs that contains the event data + + + + 计算当前列所有数据中最长字符串的宽度 chenbo add 2012-03-14 + + + + + Raises the ColumnModelChanged event + + An EventArgs that contains the event data + + + + Raises the ColumnAdded event + + A ColumnModelEventArgs that contains the event data + + + + Raises the ColumnRemoved event + + A ColumnModelEventArgs that contains the event data + + + + Raises the HeaderHeightChanged event + + An EventArgs that contains the event data + + + + Raises the BeginEditing event + + A CellEditEventArgs that contains the event data + + + + Raises the EditingStopped event + + A CellEditEventArgs that contains the event data + + + + Raises the EditingCancelled event + + A CellEditEventArgs that contains the event data + + + + Raises the GotFocus event + + An EventArgs that contains the event data + + + + Raises the LostFocus event + + An EventArgs that contains the event data + + + + Raises the KeyDown event + + A KeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A KeyEventArgs that contains the event data + + + + Raises the Layout event + + A LayoutEventArgs that contains the event data + + + + Raises the MouseUp event + + A MouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A MouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A MouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + An EventArgs that contains the event data + + + + Raises the MouseWheel event + + A MouseEventArgs that contains the event data + + + + Raises the MouseHover event + + An EventArgs that contains the event data + + + + Raises the Click event + + An EventArgs that contains the event data + + + + Raises the DoubleClick event + + An EventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintEventArgs that contains the event data + + + + Raises the Paint event + + A PaintEventArgs that contains the event data + + + + Draws a reversible line at the specified screen x-coordinate + that is the height of the PseudoClientRect + + The screen x-coordinate of the reversible line + to be drawn + + + + Paints the Table's border + + A PaintEventArgs that contains the event data + + + + Paints the Cell at the specified row and column indexes + + A PaintEventArgs that contains the event data + The index of the row that contains the cell to be painted + The index of the column that contains the cell to be painted + The bounding Rectangle of the Cell + + + + Raises the BeforePaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the AfterPaintCell event + + A PaintCellEventArgs that contains the event data + + + + Paints the Table's grid + + A PaintEventArgs that contains the event data + + + + Paints the Table's Column headers + + A PaintEventArgs that contains the event data + + + + Raises the BeforePaintHeader event + + A PaintCellEventArgs that contains the event data + + + + Raises the AfterPaintHeader event + + A PaintHeaderEventArgs that contains the event data + + + + Paints the Table's Rows + + A PaintEventArgs that contains the event data + + + + Paints the Row at the specified index + + A PaintEventArgs that contains the event data + The index of the Row to be painted + The bounding Rectangle of the Row to be painted + + + + Paints the message that is displayed when the Table doen't + contain any items + + A PaintEventArgs that contains the event data + + + + Raises the RowPropertyChanged event + + A RowEventArgs that contains the event data + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Occurs when the Table's horizontal scrollbar is scrolled + + The object that Raised the event + A ScrollEventArgs that contains the event data + + + + Occurs when the Table's vertical scrollbar is scrolled + + The object that Raised the event + A ScrollEventArgs that contains the event data + + + + Handler for a ScrollBars GotFocus event + + The object that raised the event + An EventArgs that contains the event data + + + + Raises the BeginSort event + + A ColumnEventArgs that contains the event data + + + + Raises the EndSort event + + A ColumnEventArgs that contains the event data + + + + Raises the TableModelChanged event + + An EventArgs that contains the event data + + + + Raises the SelectionChanged event + + A TableModelEventArgs that contains the event data + + + + Raises the RowHeightChanged event + + An EventArgs that contains the event data + + + + Raises the RowAdded event + + A TableModelEventArgs that contains the event data + + + + Raises the RowRemoved event + + A TableModelEventArgs that contains the event data + + + + Represents a collection of Rows and Cells displayed in a Table. + + + + + Occurs when a Row is added to the TableModel + + + + + Occurs when a Row is removed from the TableModel + + + + + Occurs when the value of the TableModel Selection property changes + + + + + Occurs when the value of the RowHeight property changes + + + + + 默认行高 + + + + + 最小行高 + + + + + 最大行高 + + + + + The collection of Rows's contained in the TableModel + + + + + The Table that the TableModel belongs to + + + + + 当前选定的行和列 + + + + + 行高 + + + + + Initializes a new instance of the TableModel class with default settings + + + + + Initializes a new instance of the TableModel class with an array of Row objects + + An array of Row objects that represent the Rows + of the TableModel + + + + Initialise default settings + + + + + Releases the unmanaged resources used by the TableModel and optionally + releases the managed resources + + + + + Returns the index of the Row that lies on the specified position + + The y-coordinate to check + The index of the Row at the specified position or -1 if + no Row is found + + + + Gets the Cell located at the specified row index and column index + + The row index of the Cell + The column index of the Cell + + + + Gets the Cell located at the specified cell position + + The position of the Cell + + + + A TableModel.RowCollection representing the collection of + Rows contained within the TableModel + + + + + A TableModel.Selection representing the collection of selected + Rows and Cells contained within the TableModel + + + + + 获取或设置行高 + + + + + Specifies whether the RowHeight property should be serialized at + design time + + true if the RowHeight property should be serialized, + false otherwise + + + + 总行高,等于列表总行数乘以行高 + + + + + 获取 TableModel 所属的Table组件 + + + + + Gets or sets the Table the TableModel belongs to + + + + + Gets whether the TableModel is able to raise events + + + + + 获取 TableModel组件是否可用(根据所属Table组件进行判断) + + + + + Updates the Row's Index property so that it matches the Rows + position in the RowCollection + + The index to start updating from + + + + Raises the RowAdded event + + A TableModelEventArgs that contains the event data + + + + Raises the RowRemoved event + + A TableModelEventArgs that contains the event data + + + + Raises the SelectionChanged event + + A SelectionEventArgs that contains the event data + + + + Raises the RowHeightChanged event + + An EventArgs that contains the event data + + + + Raises the RowPropertyChanged event + + A RowEventArgs that contains the event data + + + + Raises the CellAdded event + + A RowEventArgs that contains the event data + + + + Raises the CellRemoved event + + A RowEventArgs that contains the event data + + + + Raises the CellPropertyChanged event + + A CellEventArgs that contains the event data + + + + Represents the collection of selected Rows and Cells in a TableModel. + + + + + The TableModel that owns the Selection + + + + + The list of Rows that have selected Cells + + + + + The starting cell of a selection that uses the shift key + + + + + The ending cell of a selection that uses the shift key + + + + + Initializes a new instance of the TableModel.Selection class + that belongs to the specified TableModel + + A TableModel representing the tableModel that owns + the Selection + + + + Replaces the currently selected Cells with the Cell at the specified + row and column indexes + + The row index of the Cell to be selected + The column index of the Cell to be selected + + + + Replaces the currently selected Cells with the Cell at the specified CellPos + + A CellPos thst specifies the row and column indicies of + the Cell to be selected + + + + Replaces the currently selected Cells with the Cells located between the specified + start and end row/column indicies + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + + + + Replaces the currently selected Cells with the Cells located between the specified + start and end CellPos + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + + + + Adds the Cell at the specified row and column indicies to the current selection + + The row index of the Cell to add to the selection + The column index of the Cell to add to the selection + + + + Adds the Cell at the specified row and column indicies to the current selection + + A CellPos that specifies the Cell to add to the selection + + + + Adds the Cells located between the specified start and end row/column indicies + to the current selection + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + + + + Adds the Cells located between the specified start and end CellPos to the + current selection + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + + + + Adds the Cells located between the specified start and end CellPos to the + current selection without raising an event + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + true if any Cells were added, false otherwise + + + + Adds the Cells located between the specified start and end row/column indicies + to the current selection without raising an event + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + true if any Cells were added, false otherwise + + + + Adds the Cells between the last selection start Cell and the Cell at the + specified row/column indicies to the current selection. Any Cells that are + between the last start and end Cells that are not in the new area are + removed from the current selection + + The row index of the shift selected Cell + The column index of the shift selected Cell + + + + Adds the Cells between the last selection start Cell and the Cell at the + specified CellPas to the current selection. Any Cells that are + between the last start and end Cells that are not in the new area are + removed from the current selection + + A CellPos that specifies the shift selected Cell + + + + Ensures that the first index is smaller than the second index, + performing a swap if necessary + + The first index + The second index + + + + Removes all selected Rows and Cells from the selection + + + + + Removes all selected Rows and Cells from the selection without raising an event + + + + + Removes the Cell at the specified row and column indicies from the current selection + + The row index of the Cell to remove from the selection + The column index of the Cell to remove from the selection + + + + Removes the Cell at the specified row and column indicies from the current selection + + A CellPos that specifies the Cell to remove from the selection + + + + Removes the Cells located between the specified start and end row/column indicies + from the current selection + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + + + + Removes the Cells located between the specified start and end CellPos from the + current selection + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + + + + Removes the Cells located between the specified start and end CellPos from the + current selection without raising an event + + A CellPos that specifies the start Cell + A CellPos that specifies the end Cell + true if any Cells were added, false otherwise + + + + Removes the Cells located between the specified start and end row/column indicies + from the current selection without raising an event + + The row index of the start Cell + The column index of the start Cell + The row index of the end Cell + The column index of the end Cell + true if any Cells were added, false otherwise + + + + Removes the specified Row from the selection + + The Row to be removed from the selection + + + + Returns whether the Cell at the specified row and column indicies is + currently selected + + The row index of the specified Cell + The column index of the specified Cell + true if the Cell at the specified row and column indicies is + selected, false otherwise + + + + Returns whether the Cell at the specified CellPos is currently selected + + A CellPos the represents the row and column indicies + of the Cell to check + true if the Cell at the specified CellPos is currently selected, + false otherwise + + + + Returns whether the Row at the specified index in th TableModel is + currently selected + + The index of the Row to check + true if the Row at the specified index is currently selected, + false otherwise + + + + Gets an array that contains the currently selected Rows + + + + + Gets an array that contains the indexes of the currently selected Rows + + + + + Returns a Rectange that bounds the currently selected Rows + + + + + + + + + + + + + Specifies the part of the Table the user has clicked + + + + + A cell in the Table + + + + + A column header in the Table + + + + + The non-client area of a Table, such as the border + + + + + The click occured outside ot the Table + + + + + Specifies the current state of the Table + + + + + The Table is in its normal state + + + + + The Table is selecting a Column + + + + + The Table is resizing a Column + + + + + The Table is editing a Cell + + + + + The Table is sorting a Column + + + + + The Table is selecting Cells + + + + + Summary description for TextColumn. + + + + + Creates a new TextColumn with default values + + + + + Creates a new TextColumn with the specified header text + + The text displayed in the column's header + + + + Creates a new TextColumn with the specified header text and width + + The text displayed in the column's header + The column's width + + + + Creates a new TextColumn with the specified header text, width and visibility + + The text displayed in the column's header + The column's width + Specifies whether the column is visible + + + + Creates a new TextColumn with the specified header text and image + + The text displayed in the column's header + The image displayed on the column's header + + + + Creates a new TextColumn with the specified header text, image and width + + The text displayed in the column's header + The image displayed on the column's header + The column's width + + + + Creates a new TextColumn with the specified header text, image, width and visibility + + The text displayed in the column's header + The image displayed on the column's header + The column's width + Specifies whether the column is visible + + + + Gets a string that specifies the name of the Column's default CellRenderer + + A string that specifies the name of the Column's default + CellRenderer + + + + Gets the Column's default CellRenderer + + The Column's default CellRenderer + + + + Gets a string that specifies the name of the Column's default CellEditor + + A string that specifies the name of the Column's default + CellEditor + + + + Gets the Column's default CellEditor + + The Column's default CellEditor + + + + Gets the Type of the Comparer used to compare the Column's Cells when + the Column is sorting + + + + + A CellRenderer that draws Cell contents as Buttons + + + + + Specifies the alignment of the Image displayed on the button + + + + + Initializes a new instance of the ButtonCellRenderer class with + default settings + + + + + Gets the ButtonCellRenderer specific data used by the Renderer from + the specified Cell + + The Cell to get the ButtonCellRenderer data for + The ButtonCellRenderer data for the specified Cell + + + + Returns a Rectangle that specifies the size and location of the button + + A Rectangle that specifies the size and location of the button + + + + Returns a Rectangle that specifies the size and location of the buttons Image + + The buttons image + The alignment of the image + A Rectangle that specifies the size and location of the buttons Image + + + + Gets or sets the alignment of the Image displayed on the buttons + + + + + Raises the GotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Draws the Image displayed on the button + + The Graphics to draw on + The Image to draw + A Rectangle that specifies the location + of the Image + Specifies whether the Image should be drawn + in an enabled state + + + + Contains information about the current state of a Cell's button + + + + + The current state of the button + + + + + The x coordinate of the last mouse click point + + + + + The y coordinate of the last mouse click point + + + + + Initializes a new instance of the ButtonRendererData class + + + + + Gets or sets the current state of the button + + + + + Gets or sets the Point that the mouse was last clicked in the button + + + + + Base class for Renderers that draw Cells + + + + + A string that specifies how a Cells contents are formatted + + + + + The Brush used to draw disabled text + + + + + The amount of padding for the cell being rendered + + + + + Initializes a new instance of the CellRenderer class with default settings + + + + + Releases the unmanaged resources used by the Renderer and + optionally releases the managed resources + + + + + Gets the renderer specific data used by the Renderer from + the specified Cell + + The Cell to get the renderer data for + The renderer data for the specified Cell + + + + Sets the specified renderer specific data used by the Renderer for + the specified Cell + + The Cell for which the data is to be stored + The renderer specific data to be stored + + + + Overrides Renderer.ClientRectangle + + + + + Gets or sets the string that specifies how a Cells contents are formatted + + + + + Gets the Brush used to draw disabled text + + + + + Gets or sets the amount of padding around the Cell being rendered + + + + + Raises the GotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the Click event + + A CellMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBorder event + + A PaintCellEventArgs that contains the event data + The pen used to draw the border + + + + A CellRenderer that draws Cell contents as CheckBoxes + + + + + The size of the checkbox + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + Initializes a new instance of the CheckBoxCellRenderer class with + default settings + + + + + Gets the Rectangle that specifies the Size and Location of + the check box contained in the current Cell + + A Rectangle that specifies the Size and Location of + the check box contained in the current Cell + + + + Gets the CheckBoxCellRenderer specific data used by the Renderer from + the specified Cell + + The Cell to get the CheckBoxCellRenderer data for + The CheckBoxCellRenderer data for the specified Cell + + + + Corrects any differences between the check state of the specified Cell + and the check state in its rendererData + + The Cell to chech + The CheckBoxRendererData to check + + + + Gets the size of the checkbox + + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Contains information about the current state of a Cell's check box + + + + + The current state of the Cells check box + + + + + Initializes a new instance of the ButtonRendererData class with the + specified CheckBox state + + The current state of the Cells CheckBox + + + + Gets or sets the current state of the Cells checkbox + + + + + A CellRenderer that draws Cell contents as Buttons + + + + + Specifies whether the Cells Color should be drawn + + + + + Specifies whether the Cells Color name should be drawn + + + + + Initializes a new instance of the ColorCellRenderer class with + default settings + + + + + Returns a Rectangle that specifies the size and location of the Color + rectangle + + The alignment of the Cells Row + The alignment of the Cells Column + A Rectangle that specifies the size and location of the Color + rectangle + + + + Gets or sets whether the Cells Color should be drawn + + + + + Gets or sets whether the Cells Color name should be drawn + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + A CellRenderer that draws Cell contents as a ComboBox + + + + + Initializes a new instance of the ComboBoxCellRenderer class with + default settings + + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + A CellRenderer that draws Cell contents as a DateTime + + + + + The format of the date and time displayed in the Cell + + + + + Initializes a new instance of the DateTimeCellRenderer class with + default settings + + + + + Gets or sets the format of the date and time displayed in the Cell + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Draws the DateTime text + + The DateTime value to be drawn + The Graphics to draw on + The Brush to draw the text with + A Rectangle that specifies the bounds of the text + + + + Base class for CellRenderers that Cell contents like ComboBoxes + + + + + The width of the DropDownCellRenderer's dropdown button + + + + + Specifies whether the DropDownCellRenderer dropdown button should be drawn + + + + + Initializes a new instance of the DropDownCellRenderer class with + default settings + + + + + Gets the Rectangle that specifies the Size and Location of + the current Cell's dropdown button + + A Rectangle that specifies the Size and Location of + the current Cell's dropdown button + + + + Gets the DropDownRendererData specific data used by the Renderer from + the specified Cell + + The Cell to get the DropDownRendererData data for + The DropDownRendererData data for the specified Cell + + + + Gets or sets the width of the dropdown button + + + + + Gets or sets whether the DropDownCellRenderer dropdown button should be drawn + + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Paints the Cells background + + A PaintCellEventArgs that contains the event data + + + + Contains information about the current state of a DropDownRenderer's button + + + + + The current state of the button + + + + + The x coordinate of the last mouse click point + + + + + The y coordinate of the last mouse click point + + + + + Initializes a new instance of the DropDownRendererData class + + + + + Gets or sets the current state of the button + + + + + Gets or sets the Point that the mouse was last clicked in the button + + + + + A HeaderRenderer that draws flat Column headers + + + + + Initializes a new instance of the XPHeaderRenderer class + with default settings + + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + A HeaderRenderer that draws gradient Column headers + + + + + The start Color of the gradient + + + + + The ned Color of the gradient + + + + + The Color of the Column header when it is pressed + + + + + Initializes a new instance of the GradientHeaderRenderer class + with default settings + + + + + Gets or sets the start Color of the gradient + + + + + Gets or sets the end Color of the gradient + + + + + Gets or sets the Color of the Column header when it is pressed + + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + Base class for Renderers that draw Column headers + + + + + Initializes a new instance of the HeaderRenderer class with default settings + + + + + Returns a Rectangle that represents the size and location of the Image + displayed on the ColumnHeader + + A Rectangle that represents the size and location of the Image + displayed on the ColumnHeader + + + + Returns a Rectangle that represents the size and location of the sort arrow + + A Rectangle that represents the size and location of the sort arrow + + + + Overrides Renderer.ClientRectangle + + + + + Raises the MouseEnter event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the Click event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the PaintHeader event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + Draws the Image contained in the ColumnHeader + + The Graphics used to paint the Image + The Image to be drawn + A rectangle that specifies the Size and + Location of the Image + Specifies whether the Image should be drawn + in an enabled state + + + + Draws the ColumnHeader's sort arrow + + The Graphics to draw on + A Rectangle that specifies the location + of the sort arrow + The direction of the sort arrow + Specifies whether the sort arrow should be + drawn in an enabled state + + + + Exposes common methods provided by Cell renderers + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the GotFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the LostFocus event + + A CellFocusEventArgs that contains the event data + + + + Raises the KeyDown event + + A CellKeyEventArgs that contains the event data + + + + Raises the KeyUp event + + A CellKeyEventArgs that contains the event data + + + + Raises the MouseEnter event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the Click event + + A CellMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A CellMouseEventArgs that contains the event data + + + + Exposes common methods provided by Column header renderers + + + + + Raises the PaintHeader event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the MouseEnter event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseLeave event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the Click event + + A HeaderMouseEventArgs that contains the event data + + + + Raises the DoubleClick event + + A HeaderMouseEventArgs that contains the event data + + + + A CellRenderer that draws Cell contents as Images + + + + + Specifies whether any text contained in the Cell should be drawn + + + + + Initializes a new instance of the ImageCellRenderer class with + default settings + + + + + Gets the Rectangle that specifies the Size and Location of + the Image contained in the current Cell + + The Image to be drawn + An ImageSizeMode that specifies how the + specified Image is scaled + The alignment of the current Cell's row + The alignment of the current Cell's Column + A Rectangle that specifies the Size and Location of + the Image contained in the current Cell + + + + Gets or sets whether any text contained in the Cell should be drawn + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Draws the Image contained in the Cell + + The Graphics used to paint the Image + The Image to be drawn + A rectangle that specifies the Size and + Location of the Image + Specifies whether the image is to be scaled + Specifies whether the Image should be drawn + in an enabled state + + + + Exposes common methods provided by renderers + + + + + Gets a Rectangle that represents the client area of the object + being rendered + + + + + Gets or sets a Rectangle that represents the size and location + of the object being rendered + + + + + Gets or sets the font of the text displayed by the object being + rendered + + + + + Gets or sets the foreground color of the object being rendered + + + + + Gets or sets the background color for the object being rendered + + + + + Gets or sets how the Renderers contents are aligned horizontally + + + + + Gets or sets how the Renderers contents are aligned vertically + + + + + A base class for drawing Cells contents as numbers + + + + + The width of the ComboBox's dropdown button + + + + + Specifies whether the up and down buttons should be drawn + + + + + The alignment of the up and down buttons in the Cell + + + + + The maximum value for the Cell + + + + + The minimum value for the Cell + + + + + Initializes a new instance of the NumberCellRenderer class with + default settings + + + + + Returns a Rectangle that specifies the size and location of the + up and down buttons + + A Rectangle that specifies the size and location of the + up and down buttons + + + + Returns a Rectangle that specifies the size and location of the up button + + A Rectangle that specifies the size and location of the up button + + + + Returns a Rectangle that specifies the size and location of the down button + + A Rectangle that specifies the size and location of the down button + + + + Gets the NumberRendererData specific data used by the Renderer from + the specified Cell + + The Cell to get the NumberRendererData data for + The NumberRendererData data for the specified Cell + + + + Gets whether the specified Table is using a NumericCellEditor to edit the + Cell at the specified CellPos + + The Table to check + A CellPos that represents the Cell to check + true if the specified Table is using a NumericCellEditor to edit the + Cell at the specified CellPos, false otherwise + + + + Gets or sets the width of the dropdown button + + + + + Gets or sets whether the up and down buttons should be drawn + + + + + Gets or sets the alignment of the up and down buttons in the Cell + + + + + Gets or sets the maximum value for the Cell + + + + + Gets or sets the minimum value for the Cell + + + + + Raises the MouseLeave event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseUp event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseDown event + + A CellMouseEventArgs that contains the event data + + + + Raises the MouseMove event + + A CellMouseEventArgs that contains the event data + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Contains information about the current state of a number Cell's + up and down buttons + + + + + The current state of the up button + + + + + The current state of the down button + + + + + The x coordinate of the last mouse click point + + + + + The y coordinate of the last mouse click point + + + + + Initializes a new instance of the NumberRendererData class + + + + + Gets or sets the current state of the up button + + + + + Gets or sets the current state of the down button + + + + + Gets or sets the Point that the mouse was last clicked in a button + + + + + A CellRenderer that draws Cell contents as a ProgressBar + + + + + Specifies whether the ProgressBar's value as a string + should be displayed + + + + + Initializes a new instance of the ProgressBarCellRenderer class with + default settings + + + + + Gets the rectangle that represents the client area of the Renderer + + + + + Gets or sets whether the ProgressBar's value as a string + should be displayed + + + + + Raises the PaintCell event + + A PaintCellEventArgs that contains the event data + + + + Raises the PaintBackground event + + A PaintCellEventArgs that contains the event data + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + Base class for Renderers + + + + + A StringFormat object that specifies how the Renderers + contents are drawn + + + + + The brush used to draw the Renderers background + + + + + The brush used to draw the Renderers foreground + + + + + A Rectangle that specifies the size and location of the Renderer + + + + + The Font of the text displayed by the Renderer + + + + + The width of a Cells border + + + + + Initializes a new instance of the Renderer class with default settings + + + + + Releases the unmanaged resources used by the Renderer and + optionally releases the managed resources + + + + + Sets the color of the brush used to draw the background + + The color of the brush + + + + Sets the color of the brush used to draw the foreground + + The color of the brush + + + + Gets the rectangle that represents the client area of the Renderer + + + + + Gets or sets the size and location of the Renderer + + + + + Gets or sets the font of the text displayed by the Renderer + + + + + Gets the brush used to draw the Renderers background + + + + + Gets the brush used to draw the Renderers foreground + + + + + Gets or sets the foreground Color of the Renderer + + + + + Gets or sets the background Color of the Renderer + + + + + Gets or sets a StringFormat object that specifies how the Renderers + contents are drawn + + + + + Gets or sets a StringTrimming enumeration that indicates how text that + is drawn by the Renderer is trimmed when it exceeds the edges of the + layout rectangle + + + + + Gets or sets how the Renderers contents are aligned horizontally + + + + + Gets or sets how the Renderers contents are aligned vertically + + + + + Gets whether Visual Styles are enabled for the application + + + + + A CellRenderer that draws Cell contents as strings + + + + + Initializes a new instance of the TextCellRenderer class with + default settings + + + + + Raises the Paint event + + A PaintCellEventArgs that contains the event data + + + + A HeaderRenderer that draws Windows XP themed Column headers + + + + + Initializes a new instance of the XPHeaderRenderer class + with default settings + + + + + Raises the PaintBackground event + + A PaintHeaderEventArgs that contains the event data + + + + Raises the Paint event + + A PaintHeaderEventArgs that contains the event data + + + + An IComparer for sorting Cells that contain CheckBoxes + + + + + Initializes a new instance of the CheckBoxComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + An IComparer for sorting Cells that contain Color information + + + + + Initializes a new instance of the ColorComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Base class for comparers used to sort the Cells contained in a TableModel + + + + + The TableModel that contains the Cells to be sorted + + + + + The index of the Column to be sorted + + + + + Specifies how the Column is to be sorted + + + + + Initializes a new instance of the ComparerBase class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Gets the TableModel that contains the Cells to be sorted + + + + + Gets the index of the Column to be sorted + + + + + Gets how the Column is to be sorted + + + + + An IComparer for sorting Cells that contain DateTime information + + + + + Initializes a new instance of the DateTimeComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + A HeapSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the HeapSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + + + + + + + + An IComparer for sorting Cells that contain Images + + + + + Initializes a new instance of the ImageComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + An InsertionSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the InsertionSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + A MergeSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the MergeSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + + + + + + + + An IComparer for sorting Cells that contain numbers + + + + + Initializes a new instance of the NumberComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + A ShellSort implementation for sorting the Cells contained in a TableModel + + + + + Initializes a new instance of the ShellSorter class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Starts sorting the Cells in the TableModel + + + + + Base class for the sorters used to sort the Cells contained in a TableModel + + + + + The TableModel that contains the Cells to be sorted + + + + + The index of the Column to be sorted + + + + + The IComparer used to sort the Column's Cells + + + + + Specifies how the Column is to be sorted + + + + + Initializes a new instance of the SorterBase class with the specified + TableModel, Column index, IComparer and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + The IComparer used to sort the Column's Cells + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Starts sorting the Cells in the TableModel + + + + + Swaps the Rows in the TableModel at the specified indexes + + The index of the first Row to be swapped + The index of the second Row to be swapped + + + + Replaces the Row in the TableModel located at index a with the Row + located at index b + + The index of the Row that will be replaced + The index of the Row that will be moved to index a + + + + Replaces the Row in the TableModel located at index a with the specified Row + + The index of the Row that will be replaced + The Row that will be moved to index a + + + + Gets the TableModel that contains the Cells to be sorted + + + + + Gets the index of the Column to be sorted + + + + + Gets the IComparer used to sort the Column's Cells + + + + + Gets how the Column is to be sorted + + + + + An IComparer for sorting Cells that contain strings + + + + + Initializes a new instance of the TextComparer class with the specified + TableModel, Column index and SortOrder + + The TableModel that contains the data to be sorted + The index of the Column to be sorted + Specifies how the Column is to be sorted + + + + Compares two objects and returns a value indicating whether one is less + than, equal to or greater than the other + + First object to compare + Second object to compare + -1 if a is less than b, 1 if a is greater than b, or 0 if a equals b + + + + Represents the type of Buttons that can be drawn by the Windows XP theme engine + + + + + A normal Button + + + + + A RadioButton + + + + + A CheckBox button + + + + + Represents the different states of a CheckBox + + + + + The CheckBox is unchecked and in its normal state + + + + + The CheckBox is unchecked and is currently highlighted + + + + + The CheckBox is unchecked and is currently pressed by + the mouse + + + + + The CheckBox is unchecked and is disabled + + + + + The CheckBox is checked and in its normal state + + + + + The CheckBox is checked and is currently highlighted + + + + + The CheckBox is checked and is currently pressed by the + mouse + + + + + The CheckBox is checked and is disabled + + + + + The CheckBox is in an indeterminate state + + + + + The CheckBox is in an indeterminate state and is currently + highlighted + + + + + The CheckBox is in an indeterminate state and is currently + pressed by the mouse + + + + + The CheckBox is in an indeterminate state and is disabled + + + + + Represents the different parts of a Column Header that can be + drawn by the Windows XP theme engine + + + + + A Column Header + + + + + Represents the different states of a Column Header + + + + + The Column Header is in its normal state + + + + + The Column Header is highlighted + + + + + The Column Header is being pressed by the mouse + + + + + Represents the different parts of a ComboBox that can be + drawn by the Windows XP theme engine + + + + + A ComboBox's dropdown arrow button + + + + + Represents the different states of a ComboBox + + + + + The ColumnBox dropdown button is in its normal state + + + + + The ColumnBox dropdown button is highlighted + + + + + The ColumnBox dropdown button is being pressed by the mouse + + + + + The ColumnBox dropdown button is disabled + + + + + Represents the different parts of a ListView that can be + drawn by the Windows XP theme engine + + + + + A ListView's border and background + + + + + Represents the different states of a ListView + + + + + The ListView is in its normal state + + + + + The ListView is highlighted + + + + + The ListView is selected + + + + + The ListView is disabled + + + + + The ListView is selected but does not have focus + + + + + Represents the different parts of a ProgressBar that can be + drawn by the Windows XP theme engine + + + + + The ProgressBar's background and border + + + + + The ProgressBar's contents + + + + + Represents the different states of a Button + + + + + The Button is in its normal state + + + + + The Button is highlighted + + + + + The Button is being pressed by the mouse + + + + + The Button is disabled + + + + + The Button is the default button + + + + + Represents the different states of a RadioButton + + + + + The RadioButton is unchecked and in its normal state + + + + + The RadioButton is unchecked and is currently highlighted + + + + + The RadioButton is unchecked and is currently pressed by + the mouse + + + + + The RadioButton is unchecked and is disabled + + + + + The RadioButton is checked and in its normal state + + + + + The RadioButton is checked and is currently highlighted + + + + + The RadioButton is checked and is currently pressed by the + mouse + + + + + The RadioButton is checked and is disabled + + + + + Represents the different parts of a ScrollBar control that can be + drawn by the Windows XP theme engine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the different states of a ScrollBar control's buttons and track + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Represents the type of Buttons that can be drawn by the Windows XP theme engine + + + + + The body of a TabPage + + + + + Represents the different parts of a TextBox that can be + drawn by the Windows XP theme engine + + + + + The TextBox's border and background + + + + + Represents the different states of a TextBox + + + + + The TextBox is in its normal state + + + + + The TextBox is highlighted + + + + + The TextBox is selected + + + + + The TextBox is disabled + + + + + The TextBox has focus + + + + + The TextBox is readonly + + + + + Represents the different types of objects that can be + drawn by the Windows XP theme engine + + + + + Private constructor so that the class can't be instantiated + + + + + Button objects (Button, CheckBox, RadioButton) + + + + + ComboBox objects + + + + + TextBox objects + + + + + ColumnHeader objects + + + + + ListView objects + + + + + ProgressBar objects + + + + + TabControl objects + + + + + UpDown objects + + + + + A class that contains methods for drawing Windows XP themed Control parts + + + + + Initializes a new instance of the ThemeManager class with default settings + + + + + Draws a push button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the button + A PushButtonStates value that specifies the + state to draw the button in + + + + Draws a push button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the button + The Rectangle that represents the clipping area + A PushButtonStates value that specifies the + state to draw the button in + + + + Converts the specified PushButtonStates value to a ButtonState value + + The PushButtonStates value to be converted + A ButtonState value that represents the specified PushButtonStates + value + + + + Draws a check box in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the check box + A CheckBoxStates value that specifies the + state to draw the check box in + + + + Draws a check box in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the check box + The Rectangle that represents the clipping area + A CheckBoxStates value that specifies the + state to draw the check box in + + + + Converts the specified CheckBoxStates value to a ButtonState value + + The CheckBoxStates value to be converted + A ButtonState value that represents the specified CheckBoxStates + value + + + + Returns whether the specified CheckBoxStates value is in an + indeterminate state + + The CheckBoxStates value to be checked + true if the specified CheckBoxStates value is in an + indeterminate state, false otherwise + + + + Draws a column header in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the column header + A ColumnHeaderStates value that specifies the + state to draw the column header in + + + + Draws a column header in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the column header + The Rectangle that represents the clipping area + A ColumnHeaderStates value that specifies the + state to draw the column header in + + + + Draws a combobox button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the combobox button + A ComboBoxStates value that specifies the + state to draw the combobox button in + + + + Draws a combobox button in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the button + The Rectangle that represents the clipping area + A ComboBoxStates value that specifies the + state to draw the combobox button in + + + + Converts the specified ComboBoxStates value to a ButtonState value + + The ComboBoxStates value to be converted + A ButtonState value that represents the specified ComboBoxStates + value + + + + Draws a ProgressBar on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + + + + Draws a ProgressBar on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + The Rectangle that represents the clipping area + + + + Draws the ProgressBar's chunks on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + + + + Draws the ProgressBar's chunks on the specified graphics surface, and within + the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the ProgressBar + The Rectangle that represents the clipping area + + + + Draws a RadioButton in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the RadioButton + A RadioButtonStates value that specifies the + state to draw the RadioButton in + + + + Draws a RadioButton in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the RadioButton + The Rectangle that represents the clipping area + A RadioButtonStates value that specifies the + state to draw the RadioButton in + + + + Converts the specified RadioButtonStates value to a ButtonState value + + The RadioButtonStates value to be converted + A ButtonState value that represents the specified RadioButtonStates + value + + + + Draws a TabPage body on the specified graphics surface, and within the + specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TabPage body + + + + Draws a TabPage body on the specified graphics surface, and within the + specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TabPage body + The Rectangle that represents the clipping area + + + + Draws a TextBox in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TextBox + A TextBoxStates value that specifies the + state to draw the TextBox in + + + + Draws a TextBox in the specified state, on the specified graphics + surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the TextBox + The Rectangle that represents the clipping area + A TextBoxStates value that specifies the + state to draw the TextBox in + + + + Draws an UpDown's up and down buttons in the specified state, on the specified + graphics surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the up button + An UpDownStates value that specifies the + state to draw the up button in + The Rectangle that represents the dimensions + of the down button + An UpDownStates value that specifies the + state to draw the down button in + + + + Draws an UpDown's up and down buttons in the specified state, on the specified + graphics surface, and within the specified bounds + + The Graphics to draw on + The Rectangle that represents the dimensions + of the up button + The Rectangle that represents the clipping area + for the up button + An UpDownStates value that specifies the + state to draw the up button in + The Rectangle that represents the dimensions + of the down button + The Rectangle that represents the clipping area + for the down button + An UpDownStates value that specifies the + state to draw the down button in + + + + Converts the specified UpDownStates value to a ButtonState value + + The UpDownStates value to be converted + A ButtonState value that represents the specified UpDownStates + value + + + + Draws the background image defined by the visual style for the specified control part + + The Graphics to draw on + The class of the part to draw + The part to draw + The state of the part to draw + The Rectangle in which the part is drawn + + + + Draws the background image defined by the visual style for the specified control part + + The Graphics to draw on + The class of the part to draw + The part to draw + The state of the part to draw + The Rectangle in which the part is drawn + The Rectangle that represents the clipping area for the part + + + + Gets whether Visual Styles are supported by the system + + + + + Gets whether Visual Styles are enabled for the application + + + + + Returns a Version object that contains information about the verion + of the CommonControls that the application is using + + A Version object that contains information about the verion + of the CommonControls that the application is using + + + + Represents the different parts of an UpDown control that can be + drawn by the Windows XP theme engine + + + + + An UpDown control's up arrow button + + + + + An UpDown control's down arrow button + + + + + An UpDown control's left arrow button + + + + + An UpDown control's right arrow button + + + + + Represents the different states of a UpDown control's button + + + + + The UpDown button is in its normal state + + + + + The UpDown button is highlighted + + + + + The UpDown button is being pressed by the mouse + + + + + The UpDown button disabled + + + + + Represents the Ascii character values. + + + + + Null character (NUL) + + + + + Start of heading character (SOH) + + + + + Start of text character (STX) + + + + + End of text character (ETX) + + + + + End of transmission character (EOT) + + + + + Enquiry character (ENQ) + + + + + Acknowledge character (ACK) + + + + + Bell character (BEL) + + + + + Backspace character (BS) + + + + + Horizontal tab character (HT) + + + + + Line Feed character (LF) + + + + + Vertical tab character (VT) + + + + + Form Feed character (FF) + + + + + Carriage Return character (CR) + + + + + Shift Out character (SO) + + + + + Shift In character (SI) + + + + + Data link escape character (DLE) + + + + + XON character (DC1) + + + + + Device control 2 character (DC2) + + + + + XOFF character (DC3) + + + + + Device control 4 character (DC4) + + + + + Negative acknowledge character (NAK) + + + + + Synchronous idle character (SYN) + + + + + End transmission block character (ETB) + + + + + Cancel line character (CAN) + + + + + End of medium character (EM) + + + + + Substitute character (SUB) + + + + + Escape character (ESC) + + + + + File separator character (FS) + + + + + Group separator character (GS) + + + + + Record separator character (RS) + + + + + Unit separator character (US) + + + + + Space character (SP) + + + + + Exclamation mark character (!) + + + + + Quotation mark character (") + + + + + Cross hatch character (#) + + + + + Dollar sign character ($) + + + + + Percent sign character (%) + + + + + Ampersand character (&) + + + + + Closing single quote or Apostrophe character (') + + + + + Opening parentheses character (() + + + + + Closing parentheses character ()) + + + + + Asterisk character (*) + + + + + Plus character (+) + + + + + Comma character (,) + + + + + Hyphen character (-) + + + + + FullStop character (.) + + + + + Forward slash character (/) + + + + + Zero (0) + + + + + One character (1) + + + + + Two (2) + + + + + Three (3) + + + + + Four (4) + + + + + Five (5) + + + + + Six (6) + + + + + Seven (7) + + + + + Eight (8) + + + + + Nine (9) + + + + + Colon character (:) + + + + + Semicolon character (;) + + + + + Less than character (<) + + + + + Equals character (=) + + + + + Greater than character (>) + + + + + Question mark character (?) + + + + + At-sign character (@) + + + + + Uppercase A + + + + + Uppercase B + + + + + Uppercase C + + + + + Uppercase D + + + + + Uppercase E + + + + + Uppercase F + + + + + Uppercase G + + + + + Uppercase H + + + + + Uppercase I + + + + + Uppercase J + + + + + Uppercase K + + + + + Uppercase L + + + + + Uppercase M + + + + + Uppercase N + + + + + Uppercase O + + + + + Uppercase P + + + + + Uppercase Q + + + + + Uppercase R + + + + + Uppercase S + + + + + Uppercase T + + + + + Uppercase U + + + + + Uppercase V + + + + + Uppercase W + + + + + Uppercase X + + + + + Uppercase Y + + + + + Uppercase Z + + + + + Opening square bracket character ([) + + + + + Backslash character (\) + + + + + Closing square bracket character (]) + + + + + Caret (Circumflex) character (^) + + + + + Underscore character (_) + + + + + Opening single quote character (`) + + + + + Lowercase a + + + + + Lowercase b + + + + + Lowercase c + + + + + Lowercase d + + + + + Lowercase e + + + + + Lowercase f + + + + + Lowercase g + + + + + Lowercase h + + + + + Lowercase i + + + + + Lowercase j + + + + + Lowercase k + + + + + Lowercase l + + + + + Lowercase m + + + + + Lowercase n + + + + + Lowercase o + + + + + Lowercase p + + + + + Lowercase q + + + + + Lowercase r + + + + + Lowercase s + + + + + Lowercase t + + + + + Lowercase u + + + + + Lowercase v + + + + + Lowercase w + + + + + Lowercase x + + + + + Lowercase y + + + + + Lowercase z + + + + + Opening curly brace character ({) + + + + + Vertical line character (|) + + + + + Closing curly brace character (}) + + + + + Tilde character (~) + + + + + Delete character (DEL) + + + + + Receives dynamic-link library (DLL)-specific version information. + It is used with the DllGetVersion function + + + + + Size of the structure, in bytes. This member must be filled + in before calling the function + + + + + Major version of the DLL. If the DLL's version is 4.0.950, + this value will be 4 + + + + + Minor version of the DLL. If the DLL's version is 4.0.950, + this value will be 0 + + + + + Build number of the DLL. If the DLL's version is 4.0.950, + this value will be 950 + + + + + Identifies the platform for which the DLL was built + + + + + Specifies the flags used with the keybd_event function + + + + + If specified, the scan code was preceded by a prefix byte having the value 0xE0 (224) + + + + + If specified, the key is being released. If not specified, the key is being depressed + + + + + A class that contains methods for P/Invoking the Win32 API + + + + + Implemented by many of the Microsoft?Windows?Shell dynamic-link libraries + (DLLs) to allow applications to obtain DLL-specific version information + + Pointer to a DLLVERSIONINFO structure that receives the + version information. The cbSize member must be filled in before calling + the function + Returns NOERROR if successful, or an OLE-defined error value otherwise + + + + Tests if a visual style for the current application is active + + TRUE if a visual style is enabled, and windows with + visual styles applied should call OpenThemeData to start using + theme drawing services, FALSE otherwise + + + + Reports whether the current application's user interface + displays using visual styles + + TRUE if the application has a visual style applied, + FALSE otherwise + + + + Opens the theme data for a window and its associated class + + Handle of the window for which theme data + is required + Pointer to a string that contains + a semicolon-separated list of classes + OpenThemeData tries to match each class, one at a + time, to a class data section in the active theme. If a match + is found, an associated HTHEME handle is returned. If no match + is found NULL is returned + + + + Closes the theme data handle + + Handle to a window's specified theme data. + Use OpenThemeData to create an HTHEME + Returns S_OK if successful, or an error value otherwise + + + + Draws the background image defined by the visual style for the + specified control part + + Handle to a window's specified theme data. + Use OpenThemeData to create an HTHEME + Handle to a device context (HDC) used for + drawing the theme-defined background image + Value of type int that specifies the part + to draw + Value of type int that specifies the state + of the part to draw + Pointer to a RECT structure that contains the + rectangle, in logical coordinates, in which the background image + is drawn + Pointer to a RECT structure that contains + a clipping rectangle. This parameter may be set to NULL + Returns S_OK if successful, or an error value otherwise + + + + The SendMessage function sends the specified message to a + window or windows. It calls the window procedure for the + specified window and does not return until the window + procedure has processed the message + + Handle to the window whose window procedure will + receive the message + Specifies the message to be sent + Specifies additional message-specific information + Specifies additional message-specific information + The return value specifies the result of the message processing; + it depends on the message sent + + + + The TrackMouseEvent function posts messages when the mouse pointer + leaves a window or hovers over a window for a specified amount of time + + A TRACKMOUSEEVENT structure that contains tracking + information + true if the function succeeds, false otherwise + + + + The PostMessage function places (posts) a message in the message queue associated + with the thread that created the specified window and returns without waiting for + the thread to process the message + + Handle to the window whose window procedure is to receive the + message + Specifies the message to be posted + Specifies additional message-specific information + Specifies additional message-specific information + If the function succeeds, the return value is nonzero. If the function + fails, the return value is zero + + + + The MessageBeep function plays a waveform sound. The waveform sound for each + sound type is identified by an entry in the registry + + Sound type, as identified by an entry in the registry + If the function succeeds, the return value is nonzero. If the function + fails, the return value is zero + + + + The NotifyWinEvent function signals the system that a predefined event occurred. + If any client applications have registered a hook function for the event, the + system calls the client's hook function + + Specifies the event that occurred + Handle to the window that contains the object that generated + the event + Identifies the kind of object that generated the event + Identifies whether the event was generated by an object or + by a child element of the object. If this value is CHILDID_SELF, the event was + generated by the object itself. If not, this value is the child ID of the element + that generated the event + + + + The ScrollWindow function scrolls the contents of the specified window's client area + + Handle to the window where the client area is to be scrolled + Specifies the amount, in device units, of horizontal scrolling. + This parameter must be a negative value to scroll the content of the window to the left + Specifies the amount, in device units, of vertical scrolling. + This parameter must be a negative value to scroll the content of the window up + Pointer to the RECT structure specifying the portion of the + client area to be scrolled. If this parameter is NULL, the entire client area is + scrolled + Pointer to the RECT structure containing the coordinates + of the clipping rectangle. Only device bits within the clipping rectangle are affected. + Bits scrolled from the outside of the rectangle to the inside are painted; bits scrolled + from the inside of the rectangle to the outside are not painted + If the function succeeds, the return value is nonzero. If the function fails, + the return value is zero + + + + The keybd_event function synthesizes a keystroke. The system can use such a synthesized + keystroke to generate a WM_KEYUP or WM_KEYDOWN message. The keyboard driver's interrupt + handler calls the keybd_event function + + Specifies a virtual-key code + This parameter is not used + Specifies various aspects of function operation + + + + + The PeekMessage function dispatches incoming sent messages, checks the thread message + queue for a posted message, and retrieves the message (if any exist). + + Pointer to an MSG structure that receives message information + Handle to the window whose messages are to be examined. The window + must belong to the current thread. If hWnd is NULL, PeekMessage retrieves messages for + any window that belongs to the current thread. If hWnd is INVALID_HANDLE_VALUE, + PeekMessage retrieves messages whose hWnd value is NULL, as posted by the PostThreadMessage + function + Specifies the value of the first message in the range of messages + to be examined. Use WM_KEYFIRST to specify the first keyboard message or WM_MOUSEFIRST + to specify the first mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, + PeekMessage returns all available messages (that is, no range filtering is performed). + Specifies the value of the last message in the range of messages + to be examined. Use WM_KEYLAST to specify the first keyboard message or WM_MOUSELAST + to specify the last mouse message. If wMsgFilterMin and wMsgFilterMax are both zero, + PeekMessage returns all available messages (that is, no range filtering is performed). + Specifies how messages are handled + If a message is available, the return value is nonzero. If no messages are + available, the return value is zero + + + + The TranslateMessage function translates virtual-key messages into character messages. + The character messages are posted to the calling thread's message queue, to be read the + next time the thread calls the GetMessage or PeekMessage function + + Pointer to an MSG structure that contains message information retrieved + from the calling thread's message queue by using the GetMessage or PeekMessage function + If the message is translated (that is, a character message is posted to the + thread's message queue), the return value is nonzero.If the message is WM_KEYDOWN, + WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP, the return value is nonzero, regardless of + the translation. If the message is not translated (that is, a character message is not + posted to the thread's message queue), the return value is zero + + + + The DispatchMessage function dispatches a message to a window procedure. It is typically + used to dispatch a message retrieved by the GetMessage funct + + Pointer to an MSG structure that contains the message + The return value specifies the value returned by the window procedure. Although + its meaning depends on the message being dispatched, the return value generally is ignored + + + + Summary description for NativeWindow + + + + + + + + + + Prevents the delegate being collected + + + + + + + + + + + + + + + + + + + + Initializes a new instance of the NativeWindow class + + + + + Assigns a handle to this window + + The handle to assign to this window + + + + Releases the handle associated with this window + + + + + Invokes the default window procedure associated with this window + + A Message that is associated with the current Windows message + + + + Invokes the default window procedure associated with this window. + It is an error to call this method when the Handle property is 0 + + A Message that is associated with the current Windows message + + + + Handler for the WndProcDelegate + + Handle to the window procedure to receive the message + Specifies the message + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + The return value specifies the result of the message processing and depends + on the message sent + + + + The SetWindowLong function changes an attribute of the specified window. The + function also sets the 32-bit (long) value at the specified offset into the + extra window memory + + Handle to the window and, indirectly, the class to which + the window belongs + Specifies the zero-based offset to the value to be set. + Specifies the replacement value + If the function succeeds, the return value is the previous value of + the specified 32-bit integer. If the function fails, the return value is zero + + + + The SetWindowLong function changes an attribute of the specified window. The + function also sets the 32-bit (long) value at the specified offset into the + extra window memory + + Handle to the window and, indirectly, the class to which + the window belongs + Specifies the zero-based offset to the value to be set. + Specifies the replacement value + If the function succeeds, the return value is the previous value of + the specified 32-bit integer. If the function fails, the return value is zero + + + + The CallWindowProc function passes message information to the specified window + procedure + + Pointer to the previous window procedure. If this value + is obtained by calling the GetWindowLong function with the nIndex parameter set to + GWL_WNDPROC or DWL_DLGPROC, it is actually either the address of a window or dialog + box procedure, or a special internal value meaningful only to CallWindowProc + Handle to the window procedure to receive the message + Specifies the message + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + Specifies additional message-specific information. The contents + of this parameter depend on the value of the Msg parameter + The return value specifies the result of the message processing and depends + on the message sent + + + + Gets the handle for this window + + + + + The POINT structure defines the x- and y- coordinates of a point + + + + + Specifies the x-coordinate of the point + + + + + Specifies the y-coordinate of the point + + + + + Creates a new RECT struct with the specified x and y coordinates + + The x-coordinate of the point + The y-coordinate of the point + + + + Creates a new POINT struct from the specified Point + + The Point to create the POINT from + A POINT struct with the same x and y coordinates as + the specified Point + + + + Returns a Point with the same x and y coordinates as the POINT + + A Point with the same x and y coordinates as the POINT + + + + The RECT structure defines the coordinates of the upper-left + and lower-right corners of a rectangle + + + + + Specifies the x-coordinate of the upper-left corner of the RECT + + + + + Specifies the y-coordinate of the upper-left corner of the RECT + + + + + Specifies the x-coordinate of the lower-right corner of the RECT + + + + + Specifies the y-coordinate of the lower-right corner of the RECT + + + + + Creates a new RECT struct with the specified location and size + + The x-coordinate of the upper-left corner of the RECT + The y-coordinate of the upper-left corner of the RECT + The x-coordinate of the lower-right corner of the RECT + The y-coordinate of the lower-right corner of the RECT + + + + Creates a new RECT struct from the specified Rectangle + + The Rectangle to create the RECT from + A RECT struct with the same location and size as + the specified Rectangle + + + + Creates a new RECT struct with the specified location and size + + The x-coordinate of the upper-left corner of the RECT + The y-coordinate of the upper-left corner of the RECT + The width of the RECT + The height of the RECT + A RECT struct with the specified location and size + + + + Returns a Rectangle with the same location and size as the RECT + + A Rectangle with the same location and size as the RECT + + + + The SIZE structure specifies the width and height of a rectangle + + + + + Specifies the x-coordinate of the point + + + + + Specifies the y-coordinate of the point + + + + + Creates a new SIZE struct with the specified width and height + + The width component of the new SIZE + The height component of the new SIZE + + + + Creates a new SIZE struct from the specified Size + + The Size to create the SIZE from + A SIZE struct with the same width and height values as + the specified Point + + + + Returns a Point with the same width and height values as the SIZE + + A Point with the same width and height values as the SIZE + + + + The TRACKMOUSEEVENT structure is used by the TrackMouseEvent function + to track when the mouse pointer leaves a window or hovers over a window + for a specified amount of time + + + + + Specifies the size of the TRACKMOUSEEVENT structure + + + + + Specifies the services requested + + + + + Specifies a handle to the window to track + + + + + Specifies the hover time-out in milliseconds + + + + + Creates a new TRACKMOUSEEVENT struct with default settings + + + + + Specifies the extended window style of the window being created + + + + + Creates a window that has a double border; the window can, optionally, be + created with a title bar by specifying the WS_CAPTION style in the dwStyle + parameter + + + + + Specifies that a child window created with this style does not send the + WM_PARENTNOTIFY message to its parent window when it is created or destroyed + + + + + Specifies that a window created with this style should be placed above all + non-topmost windows and should stay above them, even when the window is + deactivated. To add or remove this style, use the SetWindowPos function + + + + + Specifies that a window created with this style accepts drag-drop files + + + + + Specifies that a window created with this style should not be painted until + siblings beneath the window (that were created by the same thread) have been + painted. The window appears transparent because the bits of underlying sibling + windows have already been painted. To achieve transparency without these + restrictions, use the SetWindowRgn function + + + + + Creates a multiple-document interface (MDI) child window + + + + + Creates a tool window; that is, a window intended to be used as a floating + toolbar. A tool window has a title bar that is shorter than a normal title + bar, and the window title is drawn using a smaller font. A tool window does + not appear in the taskbar or in the dialog that appears when the user presses + ALT+TAB. If a tool window has a system menu, its icon is not displayed on the + title bar. However, you can display the system menu by right-clicking or by + typing ALT+SPACE + + + + + Specifies that a window has a border with a raised edge + + + + + Specifies that a window has a border with a sunken edge + + + + + Includes a question mark in the title bar of the window. When the user + clicks the question mark, the cursor changes to a question mark with a + pointer. If the user then clicks a child window, the child receives a + WM_HELP message. The child window should pass the message to the parent + window procedure, which should call the WinHelp function using the + HELP_WM_HELP command. The Help application displays a pop-up window that + typically contains help for the child window. WS_EX_CONTEXTHELP cannot be + used with the WS_MAXIMIZEBOX or WS_MINIMIZEBOX styles + + + + + The window has generic "right-aligned" properties. This depends on the window + class. This style has an effect only if the shell language is Hebrew, Arabic, + or another language that supports reading-order alignment; otherwise, the style + is ignored. Using the WS_EX_RIGHT style for static or edit controls has the + same effect as using the SS_RIGHT or ES_RIGHT style, respectively. Using this + style with button controls has the same effect as using BS_RIGHT and BS_RIGHTBUTTON + styles + + + + + Creates a window that has generic left-aligned properties. This is the default + + + + + If the shell language is Hebrew, Arabic, or another language that supports + reading-order alignment, the window text is displayed using right-to-left + reading-order properties. For other languages, the style is ignored + + + + + The window text is displayed using left-to-right reading-order properties. + This is the default + + + + + If the shell language is Hebrew, Arabic, or another language that supports + reading order alignment, the vertical scroll bar (if present) is to the left + of the client area. For other languages, the style is ignored + + + + + Vertical scroll bar (if present) is to the right of the client area. This + is the default + + + + + The window itself contains child windows that should take part in dialog + box navigation. If this style is specified, the dialog manager recurses + into children of this window when performing navigation operations such + as handling the TAB key, an arrow key, or a keyboard mnemonic + + + + + Creates a window with a three-dimensional border style intended to be used + for items that do not accept user input + + + + + Forces a top-level window onto the taskbar when the window is visible + + + + + Windows 2000/XP: Creates a layered window. Note that this cannot be used + for child windows. Also, this cannot be used if the window has a class + style of either CS_OWNDC or CS_CLASSDC + + + + + Windows 2000/XP: A window created with this style does not pass its window + layout to its child windows + + + + + Arabic and Hebrew versions of Windows 98/Me, Windows 2000/XP: Creates a window + whose horizontal origin is on the right edge. Increasing horizontal values + advance to the left + + + + + Windows XP: Paints all descendants of a window in bottom-to-top painting order + using double-buffering. This cannot be used if the window has a class style of + either CS_OWNDC or CS_CLASSDC + + + + + Windows 2000/XP: A top-level window created with this style does not become the + foreground window when the user clicks it. The system does not bring this window + to the foreground when the user minimizes or closes the foreground window. To + activate the window, use the SetActiveWindow or SetForegroundWindow function. + The window does not appear on the taskbar by default. To force the window to + appear on the taskbar, use the WS_EX_APPWINDOW style + + + + + Combines the WS_EX_CLIENTEDGE and WS_EX_WINDOWEDGE styles + + + + + Combines the WS_EX_WINDOWEDGE, WS_EX_TOOLWINDOW, and WS_EX_TOPMOST styles + + + + + The WindowMessage enemeration contains Windows messages that the + XPTable may be interested in listening for + + + + + The WM_ACTIVATE message is sent to both the window being activated and the + window being deactivated. If the windows use the same input queue, the message + is sent synchronously, first to the window procedure of the top-level window + being deactivated, then to the window procedure of the top-level window being + activated. If the windows use different input queues, the message is sent + asynchronously, so the window is activated immediately + + + + + The WM_PAINT message is sent when the system or another application makes a request + to paint a portion of an application's window. The message is sent when the + UpdateWindow or RedrawWindow function is called, or by the DispatchMessage + function when the application obtains a WM_PAINT message by using the GetMessage + or PeekMessage function. A window receives this message through its WindowProc + function + + + + + The WM_CLOSE message is sent as a signal that a window or an application + should terminate + + + + + The WM_ACTIVATEAPP message is sent when a window belonging to a different + application than the active window is about to be activated. The message is + sent to the application whose window is being activated and to the application + whose window is being deactivated + + + + + The WM_MOUSEACTIVATE message is sent when the cursor is in an inactive window + and the user presses a mouse button. The parent window receives this message + only if the child window passes it to the DefWindowProc function + + + + + The WM_NCACTIVATE message is sent to a window when its nonclient area needs to + be changed to indicate an active or inactive state + + + + + The WM_NCMOUSEMOVE message is posted to a window when the cursor is moved + within the nonclient area of the window. This message is posted to the window + that contains the cursor. If a window has captured the mouse, this message + is not posted + + + + + The WM_NCLBUTTONDOWN message is posted when the user presses the left mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCLBUTTONUP message is posted when the user releases the left mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCLBUTTONDBLCLK message is posted when the user double-clicks the + left mouse button while the cursor is within the nonclient area of a window. + This message is posted to the window that contains the cursor. If a window + has captured the mouse, this message is not posted + + + + + The WM_NCRBUTTONDOWN message is posted when the user presses the right mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCRBUTTONUP message is posted when the user releases the right mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured + the mouse, this message is not posted + + + + + The WM_NCRBUTTONDBLCLK message is posted when the user double-clicks the right + mouse button while the cursor is within the nonclient area of a window. This + message is posted to the window that contains the cursor. If a window has + captured the mouse, this message is not posted + + + + + The WM_NCMBUTTONDOWN message is posted when the user presses the middle mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured the + mouse, this message is not posted + + + + + The WM_NCMBUTTONUP message is posted when the user releases the middle mouse + button while the cursor is within the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured the + mouse, this message is not posted + + + + + The WM_NCMBUTTONDBLCLK message is posted when the user double-clicks the middle + mouse button while the cursor is within the nonclient area of a window. This + message is posted to the window that contains the cursor. If a window has + captured the mouse, this message is not posted + + + + + The WM_NCXBUTTONDOWN message is posted when the user presses the first or second X + button while the cursor is in the nonclient area of a window. This message is posted + to the window that contains the cursor. If a window has captured the mouse, this + message is not posted + + + + + The WM_NCXBUTTONUP message is posted when the user releases the first or second + X button while the cursor is in the nonclient area of a window. This message is + posted to the window that contains the cursor. If a window has captured the mouse, + this message is not posted + + + + + The WM_NCXBUTTONDBLCLK message is posted when the user double-clicks the first or + second X button while the cursor is in the nonclient area of a window. This message + is posted to the window that contains the cursor. If a window has captured the mouse, + this message is not posted + + + + + The WM_KEYDOWN message is posted to the window with the keyboard focus when a + nonsystem key is pressed. A nonsystem key is a key that is pressed when the ALT + key is not pressed + + + + + The WM_KEYUP message is posted to the window with the keyboard focus when a + nonsystem key is released. A nonsystem key is a key that is pressed when the ALT + key is not pressed, or a keyboard key that is pressed when a window has the + keyboard focus + + + + + The WM_CHAR message is posted to the window with the keyboard focus when a + WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR + message contains the character code of the key that was pressed + + + + + The WM_DEADCHAR message is posted to the window with the keyboard focus when a + WM_KEYUP message is translated by the TranslateMessage function. WM_DEADCHAR + specifies a character code generated by a dead key. A dead key is a key that + generates a character, such as the umlaut (double-dot), that is combined with + another character to form a composite character. For example, the umlaut-O + character (? is generated by typing the dead key for the umlaut character, + and then typing the O key + + + + + The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when + the user presses the F10 key (which activates the menu bar) or holds down the + ALT key and then presses another key. It also occurs when no window currently + has the keyboard focus; in this case, the WM_SYSKEYDOWN message is sent to the + active window. The window that receives the message can distinguish between + these two contexts by checking the context code in the lParam parameter + + + + + The WM_SYSKEYUP message is posted to the window with the keyboard focus when + the user releases a key that was pressed while the ALT key was held down. It + also occurs when no window currently has the keyboard focus; in this case, the + WM_SYSKEYUP message is sent to the active window. The window that receives the + message can distinguish between these two contexts by checking the context code + in the lParam parameter + + + + + The WM_MOUSEMOVE message is posted to a window when the cursor moves. If the mouse + is not captured, the message is posted to the window that contains the cursor. + Otherwise, the message is posted to the window that has captured the mouse + + + + + The WM_LBUTTONDOWN message is posted when the user presses the left mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_LBUTTONUP message is posted when the user releases the left mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_LBUTTONDBLCLK message is posted when the user double-clicks the left mouse + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_RBUTTONDOWN message is posted when the user presses the right mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_RBUTTONUP message is posted when the user releases the right mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_RBUTTONDBLCLK message is posted when the user double-clicks the right mouse + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_MBUTTONDOWN message is posted when the user presses the middle mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_MBUTTONUP message is posted when the user releases the middle mouse button + while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_MBUTTONDBLCLK message is posted when the user double-clicks the middle mouse + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_XBUTTONDOWN message is posted when the user presses the first or second X + button while the cursor is in the client area of a window. If the mouse is not captured, + the message is posted to the window beneath the cursor. Otherwise, the message is + posted to the window that has captured the mouse + + + + + The WM_XBUTTONUP message is posted when the user releases the first or second X + button while the cursor is in the client area of a window. If the mouse is not + captured, the message is posted to the window beneath the cursor. Otherwise, the + message is posted to the window that has captured the mouse + + + + + The WM_XBUTTONDBLCLK message is posted when the user double-clicks the first or + second X button while the cursor is in the client area of a window. If the mouse + is not captured, the message is posted to the window beneath the cursor. Otherwise, + the message is posted to the window that has captured the mouse + + + + + The WM_MOUSEWHEEL message is sent to the focus window when the mouse wheel is + rotated. The DefWindowProc function propagates the message to the window's parent. + There should be no internal forwarding of the message, since DefWindowProc propagates + it up the parent chain until it finds a window that processes it + + + + + Specifies the extended window style of the window being created + + + + + Creates an overlapped window. An overlapped window has a title bar and a + border. Same as the WS_TILED style + + + + + Creates a pop-up window. This style cannot be used with the WS_CHILD style + + + + + Creates a child window. A window with this style cannot have a menu bar. + This style cannot be used with the WS_POPUP style + + + + + Creates a window that is initially minimized. Same as the WS_ICONIC style + + + + + Creates a window that is initially visible. This style can be turned on and + off by using ShowWindow or SetWindowPos + + + + + Creates a window that is initially disabled. A disabled window cannot + receive input from the user. To change this after a window has been created, + use EnableWindow + + + + + Clips child windows relative to each other; that is, when a particular + child window receives a WM_PAINT message, the WS_CLIPSIBLINGS style clips + all other overlapping child windows out of the region of the child window + to be updated. If WS_CLIPSIBLINGS is not specified and child windows overlap, + it is possible, when drawing within the client area of a child window, to + draw within the client area of a neighboring child window + + + + + Excludes the area occupied by child windows when drawing occurs within + the parent window. This style is used when creating the parent window + + + + + Creates a window that is initially maximized + + + + + Creates a window that has a title bar (includes the WS_BORDER style) + + + + + Creates a window that has a thin-line border + + + + + Creates a window that has a border of a style typically used with dialog + boxes. A window with this style cannot have a title bar + + + + + Creates a window that has a vertical scroll bar + + + + + Creates a window that has a horizontal scroll bar + + + + + Creates a window that has a window menu on its title bar. The WS_CAPTION style + must also be specified + + + + + Creates a window that has a sizing border. Same as the WS_SIZEBOX style + + + + + Specifies the first control of a group of controls. The group consists of this + first control and all controls defined after it, up to the next control with + the WS_GROUP style. The first control in each group usually has the WS_TABSTOP + style so that the user can move from group to group. The user can subsequently + change the keyboard focus from one control in the group to the next control in + the group by using the direction keys. You can turn this style on and off to + change dialog box navigation. To change this style after a window has been + created, use SetWindowLong + /// + + + + Specifies a control that can receive the keyboard focus when the user presses + the TAB key. Pressing the TAB key changes the keyboard focus to the next control + with the WS_TABSTOP style. You can turn this style on and off to change dialog + box navigation. To change this style after a window has been created, use + SetWindowLong + + + + + Creates a window that has a minimize button. Cannot be combined with the + WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified + + + + + Creates a window that has a maximize button. Cannot be combined with the + WS_EX_CONTEXTHELP style. The WS_SYSMENU style must also be specified + + + + + Creates an overlapped window. An overlapped window has a title bar and a + border. Same as the WS_OVERLAPPED style + + + + + Creates a window that is initially minimized. Same as the WS_MINIMIZE style + + + + + Creates a window that has a sizing border. Same as the WS_THICKFRAME style + + + + + Creates a pop-up window with WS_BORDER, WS_POPUP, and WS_SYSMENU styles. The + WS_CAPTION and WS_POPUPWINDOW styles must be combined to make the window menu + visible + + + + + Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, + WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles. Same as the + WS_TILEDWINDOW style + + + + + Creates an overlapped window with the WS_OVERLAPPED, WS_CAPTION, WS_SYSMENU, + WS_THICKFRAME, WS_MINIMIZEBOX, and WS_MAXIMIZEBOX styles. Same as the + WS_OVERLAPPEDWINDOW style + + + + + Same as the WS_CHILD style + + + + diff --git a/Bin/Debug/SuperDesign/app.config b/Bin/Debug/SuperDesign/app.config new file mode 100644 index 0000000..3b0aa69 --- /dev/null +++ b/Bin/Debug/SuperDesign/app.config @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/Bin/Debug/SuperDesign/ryControls.dll b/Bin/Debug/SuperDesign/ryControls.dll new file mode 100644 index 0000000..e8a9dc9 Binary files /dev/null and b/Bin/Debug/SuperDesign/ryControls.dll differ diff --git a/Bin/Debug/SuperDesign/zxing.dll b/Bin/Debug/SuperDesign/zxing.dll new file mode 100644 index 0000000..fb165ab Binary files /dev/null and b/Bin/Debug/SuperDesign/zxing.dll differ diff --git a/Bin/Debug/SuperDesign/测试.txt b/Bin/Debug/SuperDesign/测试.txt new file mode 100644 index 0000000..e69de29 diff --git a/Bin/混淆_Debug.nrproj b/Bin/混淆_Debug.nrproj new file mode 100644 index 0000000..cd406e5 --- /dev/null +++ b/Bin/混淆_Debug.nrproj @@ -0,0 +1,124 @@ + + Debug\SuperDesign\SuperDesign.exe + + Debug\SuperDesign\ryControls.dll + + + Debug\SuperDesign\MyDb_SQLite.dll + + + Debug\SuperDesign\MyDb.dll + + + true + true + false + + + + http://timestamp.verisign.com/scripts/timstamp.dll + http://sha256timestamp.ws.symantec.com/sha256/timestamp + false + true + false + false + true + false + + + <AssemblyLocation>\Secure\<AssemblyFileName> + true + + + true + true + false + false + 9 + true + false + false + false + true + false + false + false + false + false + false + false + false + false + + false + false + false + false + + false + false + false + false + false + true + true + All + + false + + + true + false + Trial_Days + 14 + false + 20180503 + false + 10 + false + 5 + + true + true + + + + true + You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. Your trial period is expired! You need to purchase a license to run this software. + true + Your expiration date is reached! You need to purchase a license file to run this software. + true + You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. Your trial period is expired! You need to purchase a license to run this software. + true + You can only run maximal [max_processes] instances of this software at the same time. + true + This software won't run without a valid license file. Either a valid license file could not be found or your license file is expired. + false + Nag Screen! This message will disappear when a valid license file is installed. You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. You have [minutes_days_left] days left. You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. + -1 + + Lock System + 255255255 + 157211252 + + + false + false + Trial_Days + 1 + false + 20180503 + false + true + true + false + true + ####-####-####-####-#### + false + 10 + false + 5 + + Hr7YPNVEOuGLGJrWzxt2hKWI0xXn4h31i5nGAghNonQ=|<RSAKeyValue><Modulus>twxUWoRvbb2N6CMXQL36TBij9G7nxvU6rTULmVnbS1jYTvPQSKohB2o95vJvdlxjw7KBxYhIFqj9yEn5xvD4GVhj8+MEvG4lNqN1e1FErGin9YYYr4dTZHFe73aG5xxoscKZIg3YYdoBp0lgE2xwfaHyYe03M3mbhQx6axyf7Ak=</Modulus><Exponent>AQAB</Exponent><P>6OP29NbAV7sOKvOFRIeBbnJLh4fOiAjGtqiBlHLyOHt6w1s8N4o4Kr3N2KPVcpj82655KRzRlVDkwQika4eZ9w==</P><Q>yTY83K4a/WpcifMvuAFEuM9wVfXtbQUpV0MSSNgCmWcd6G3+GYShmPUW1gWMv+4H59iiPef1pnXvuzPYnQMp/w==</Q><DP>J/h4Oi1hda01EUoaZVicbkhPjkNQvyhCcrcZBlF0IR2QRFc0TpP6b9uDqNr1l2WKgGnBgbzge7AWksrY7VuooQ==</DP><DQ>PtmhQzFjHts1UqXStwA2bh/lsAQkiJQ/KJG7yWMn1LEAB5Ur9N6X94Y+/tU29NCuSX5Cl2G4OqnGG0yDke/mEw==</DQ><InverseQ>jiKqvwfWSUpKybcT3ucAedpT+kKuB/Qs1xJ0Z6bYOE8EsljxGbq8428Cma5rp33WMP6ybq2HwOddm/73ZFZZKQ==</InverseQ><D>bYP46/cUW8nvHxXvkZKYL/MGFPZNwaFyq7Jy8BrssxXCxOnmkbMH89HCm2ws99mq7qjcL3yr9LLCs5Re1oHRTQT2Vu2hXuGAGVjvHwYPLWGvcYvIuTWoTEw79m+lh/7CYDxfwzwWL095a8D40OvfHauk7xrXDB+qIsEJ7Gkjh0k=</D></RSAKeyValue> + + \ No newline at end of file diff --git a/Bin/混淆_Release.nrproj b/Bin/混淆_Release.nrproj new file mode 100644 index 0000000..e0b84fe --- /dev/null +++ b/Bin/混淆_Release.nrproj @@ -0,0 +1,124 @@ + + Release\SuperDesign\SuperDesign.exe + + Release\SuperDesign\ryControls.dll + + + Release\SuperDesign\MyDb_SQLite.dll + + + Release\SuperDesign\MyDb.dll + + + true + true + false + + + + http://timestamp.verisign.com/scripts/timstamp.dll + http://sha256timestamp.ws.symantec.com/sha256/timestamp + false + true + false + false + true + false + + + <AssemblyLocation>\Secure\<AssemblyFileName> + true + + + true + true + false + false + 9 + true + false + false + false + true + false + false + false + false + false + false + false + false + false + + false + false + false + false + + false + false + false + false + false + true + true + All + + false + + + true + false + Trial_Days + 14 + false + 20180503 + false + 10 + false + 5 + + true + true + + + + true + You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. Your trial period is expired! You need to purchase a license to run this software. + true + Your expiration date is reached! You need to purchase a license file to run this software. + true + You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. Your trial period is expired! You need to purchase a license to run this software. + true + You can only run maximal [max_processes] instances of this software at the same time. + true + This software won't run without a valid license file. Either a valid license file could not be found or your license file is expired. + false + Nag Screen! This message will disappear when a valid license file is installed. You are on day [current_minutes_days] of your [max_minutes_days] day evaluation period. You have [minutes_days_left] days left. You have used this software [current_uses] times out of a maximum of [max_uses]. You have [uses_left] uses left. + -1 + + Lock System + 255255255 + 157211252 + + + false + false + Trial_Days + 1 + false + 20180503 + false + true + true + false + true + ####-####-####-####-#### + false + 10 + false + 5 + + Hr7YPNVEOuGLGJrWzxt2hKWI0xXn4h31i5nGAghNonQ=|<RSAKeyValue><Modulus>twxUWoRvbb2N6CMXQL36TBij9G7nxvU6rTULmVnbS1jYTvPQSKohB2o95vJvdlxjw7KBxYhIFqj9yEn5xvD4GVhj8+MEvG4lNqN1e1FErGin9YYYr4dTZHFe73aG5xxoscKZIg3YYdoBp0lgE2xwfaHyYe03M3mbhQx6axyf7Ak=</Modulus><Exponent>AQAB</Exponent><P>6OP29NbAV7sOKvOFRIeBbnJLh4fOiAjGtqiBlHLyOHt6w1s8N4o4Kr3N2KPVcpj82655KRzRlVDkwQika4eZ9w==</P><Q>yTY83K4a/WpcifMvuAFEuM9wVfXtbQUpV0MSSNgCmWcd6G3+GYShmPUW1gWMv+4H59iiPef1pnXvuzPYnQMp/w==</Q><DP>J/h4Oi1hda01EUoaZVicbkhPjkNQvyhCcrcZBlF0IR2QRFc0TpP6b9uDqNr1l2WKgGnBgbzge7AWksrY7VuooQ==</DP><DQ>PtmhQzFjHts1UqXStwA2bh/lsAQkiJQ/KJG7yWMn1LEAB5Ur9N6X94Y+/tU29NCuSX5Cl2G4OqnGG0yDke/mEw==</DQ><InverseQ>jiKqvwfWSUpKybcT3ucAedpT+kKuB/Qs1xJ0Z6bYOE8EsljxGbq8428Cma5rp33WMP6ybq2HwOddm/73ZFZZKQ==</InverseQ><D>bYP46/cUW8nvHxXvkZKYL/MGFPZNwaFyq7Jy8BrssxXCxOnmkbMH89HCm2ws99mq7qjcL3yr9LLCs5Re1oHRTQT2Vu2hXuGAGVjvHwYPLWGvcYvIuTWoTEw79m+lh/7CYDxfwzwWL095a8D40OvfHauk7xrXDB+qIsEJ7Gkjh0k=</D></RSAKeyValue> + + \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..3d7573c --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,24 @@ +### 2020-11-28更新 +------ +#### SuperDesign V2.0.2011.2801 +*.[改进]更新日志和自述文件名更符合git备份规范。 + +------ +### 2019-12-13更新 +------ +#### SupperDesign V2.0.1911.2801 +暂无 + +------ +### 2019-09-19更新 +------ +#### SupperDesign V2.0.1909.1901 +*.[新增]支持多项目。 + +*.[新增]支持文件关联。 + +*.[新增]新版一键打包功能,支持一键复制打包好的文件到历史版本区域。 + +*.[新增]支持快速创建毕方标准文件夹。 + +*.[改进]其它一些细节改进。 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..1fc9a0b --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# 开发辅助工具 + +#### 介绍 +开发辅助工具是一款专为开发人员设计的工具,内置了多种开发人员常见工具。 +- 支持各种编码解码 +- 支持时间戳转换 +- 更好用的网页抓取工具。 +- XPath测试工具 +- 正则表达式测试工具。 +- 字符串转代码工具 +- Json格式化工具 +- 二维码生成与解析工具 +- 字符串统计工具 +- 颜色转换工具 +- 毕方架构解析和辅助工具。 \ No newline at end of file diff --git a/Source/.vs/开发辅助工具/DesignTimeBuild/.dtbcache b/Source/.vs/开发辅助工具/DesignTimeBuild/.dtbcache new file mode 100644 index 0000000..0570b78 Binary files /dev/null and b/Source/.vs/开发辅助工具/DesignTimeBuild/.dtbcache differ diff --git a/Source/.vs/开发辅助工具/v15/.suo b/Source/.vs/开发辅助工具/v15/.suo new file mode 100644 index 0000000..17a8c04 Binary files /dev/null and b/Source/.vs/开发辅助工具/v15/.suo differ diff --git a/Source/.vs/开发辅助工具/v15/Server/sqlite3/db.lock b/Source/.vs/开发辅助工具/v15/Server/sqlite3/db.lock new file mode 100644 index 0000000..e69de29 diff --git a/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide b/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide new file mode 100644 index 0000000..a0b936a Binary files /dev/null and b/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide differ diff --git a/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide-shm b/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide-shm new file mode 100644 index 0000000..04497da Binary files /dev/null and b/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide-shm differ diff --git a/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide-wal b/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide-wal new file mode 100644 index 0000000..cefb438 Binary files /dev/null and b/Source/.vs/开发辅助工具/v15/Server/sqlite3/storage.ide-wal differ diff --git a/Source/.vs/开发辅助工具/v16/.suo b/Source/.vs/开发辅助工具/v16/.suo new file mode 100644 index 0000000..b1c154e Binary files /dev/null and b/Source/.vs/开发辅助工具/v16/.suo differ diff --git a/Source/.vs/开发辅助工具/v16/Server/sqlite3/db.lock b/Source/.vs/开发辅助工具/v16/Server/sqlite3/db.lock new file mode 100644 index 0000000..e69de29 diff --git a/Source/.vs/开发辅助工具/v16/Server/sqlite3/storage.ide b/Source/.vs/开发辅助工具/v16/Server/sqlite3/storage.ide new file mode 100644 index 0000000..66ef8db Binary files /dev/null and b/Source/.vs/开发辅助工具/v16/Server/sqlite3/storage.ide differ diff --git a/Source/开发辅助工具.sln b/Source/开发辅助工具.sln new file mode 100644 index 0000000..3da1ce9 --- /dev/null +++ b/Source/开发辅助工具.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30717.126 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SuperDesign", "开发辅助工具\SuperDesign.csproj", "{8177CFD1-097C-4D4E-919D-8B519289496E}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {8177CFD1-097C-4D4E-919D-8B519289496E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8177CFD1-097C-4D4E-919D-8B519289496E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8177CFD1-097C-4D4E-919D-8B519289496E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8177CFD1-097C-4D4E-919D-8B519289496E}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E0BE1590-8E11-4498-84CF-0D53B57B720C} + EndGlobalSection +EndGlobal diff --git a/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.Designer.cs b/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.Designer.cs new file mode 100644 index 0000000..123ac34 --- /dev/null +++ b/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.Designer.cs @@ -0,0 +1,42 @@ +namespace ryProcessManager.hezuo +{ + partial class ContextMenuStripHighlightText + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ContextMenuStripRichText + // + this.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripRichText_Opening); + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.cs b/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.cs new file mode 100644 index 0000000..c5d2752 --- /dev/null +++ b/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.cs @@ -0,0 +1,142 @@ +using ICSharpCode.TextEditor; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using XmlPad; + +namespace ryProcessManager.hezuo +{ + public partial class ContextMenuStripHighlightText : ContextMenuStrip + { + public ContextMenuStripHighlightText() + { + InitializeComponent(); + AddMenu("撤销", "undo").Click += Undo_Click; + AddMenu("重做", "redo").Click += Redo_Click; + AddSeparatorMenu(); + AddMenu("剪切", "cut").Click += Cut_Click; + AddMenu("复制", "copy").Click += Copy_Click; + AddMenu("粘贴", "paste").Click += Paste_Click; + AddMenu("删除", "del").Click += Del_Click; + AddMenu("全选", "selectall").Click += SelectAll_Click; + AddMenu("查找", "find").Click += Find_Click; + } + private void Find_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + FindAndReplaceForm _findForm = new FindAndReplaceForm(); + TextEditorControl editor = rich_txt; + if (editor == null) return; + _findForm.ShowFor(editor, false); + _findForm.ReplaceMode = false; + } + private void SelectAll_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + //var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + Thread th = new Thread(sendkey); + th.Start(); + void sendkey() + { + Thread.Sleep(100); + this.Invoke(new Action(() => + { + SendKeys.SendWait("^a"); + })); + } + } + private void Undo_Click(object sender, EventArgs e) + { + if(!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + rich_txt.Undo(); + } + private void Redo_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + rich_txt.Redo(); + } + private void Cut_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + ryCommon.RyFiles.CopyToClip(rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText); + rich_txt.ActiveTextAreaControl.TextArea.InsertString(""); + } + private void Copy_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + ryCommon.RyFiles.CopyToClip(rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText); + } + private void Paste_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + rich_txt.ActiveTextAreaControl.TextArea.InsertString(Clipboard.GetText().Replace("\r\n", "\r").Replace("\r", "\r\n")); + } + private void Del_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + rich_txt.ActiveTextAreaControl.TextArea.InsertString(""); + } + public ToolStripSeparator AddSeparatorMenu() + { + ToolStripSeparator item = new ToolStripSeparator(); + base.Items.Add(item); + return item; + } + public ToolStripMenuItem AddMenu(string name, string tag) + { + ToolStripMenuItem item = new ToolStripMenuItem(name) + { + Tag = tag + }; + base.Items.Add(item); + return item; + } + + private void ContextMenuStripRichText_Opening(object sender, CancelEventArgs e) + { + if (!(base.SourceControl is ICSharpCode.TextEditor.TextEditorControl)) { return; } + var rich_txt = (ICSharpCode.TextEditor.TextEditorControl)base.SourceControl; + for (int i = 0; i < base.Items.Count; i++) + { + var item = base.Items[i]; + if (item.Tag == null) { continue; } + switch(item.Tag.ToString()) + { + case "undo": + item.Enabled = rich_txt.EnableUndo; + break; + case "redo": + item.Enabled = rich_txt.EnableRedo; + break; + case "cut": + item.Enabled = (rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText != "" && !rich_txt.IsReadOnly) ? true : false; + break; + case "copy": + item.Enabled = rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText != "" ? true : false; + break; + case "paste": + item.Enabled = !rich_txt.IsReadOnly; + break; + case "del": + item.Enabled =(rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText != "" && !rich_txt.IsReadOnly) ? true : false; + break; + case "selectall": + item.Enabled = rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText != rich_txt.Text ? true : false; + break; + } + } + } + } +} diff --git a/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.resx b/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/Source/开发辅助工具/Controls/ContextMenuStripHighlightText.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/ContextMenuStripRichText.Designer.cs b/Source/开发辅助工具/Controls/ContextMenuStripRichText.Designer.cs new file mode 100644 index 0000000..8b0f067 --- /dev/null +++ b/Source/开发辅助工具/Controls/ContextMenuStripRichText.Designer.cs @@ -0,0 +1,42 @@ +namespace ryProcessManager.hezuo +{ + partial class ContextMenuStripRichText + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // ContextMenuStripRichText + // + this.Opening += new System.ComponentModel.CancelEventHandler(this.ContextMenuStripRichText_Opening); + this.ResumeLayout(false); + + } + + #endregion + } +} diff --git a/Source/开发辅助工具/Controls/ContextMenuStripRichText.cs b/Source/开发辅助工具/Controls/ContextMenuStripRichText.cs new file mode 100644 index 0000000..c9f4e73 --- /dev/null +++ b/Source/开发辅助工具/Controls/ContextMenuStripRichText.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace ryProcessManager.hezuo +{ + public partial class ContextMenuStripRichText : ContextMenuStrip + { + public ContextMenuStripRichText() + { + InitializeComponent(); + AddMenu("撤销", "undo").Click += Undo_Click; + AddMenu("重做", "redo").Click += Redo_Click; + AddSeparatorMenu(); + AddMenu("剪切", "cut").Click += Cut_Click; + AddMenu("复制", "copy").Click += Copy_Click; + AddMenu("粘贴", "paste").Click += Paste_Click; + AddMenu("删除", "del").Click += Del_Click; + AddMenu("全选", "selectall").Click += SelectAll_Click; + } + private void SelectAll_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.SelectAll(); + } + private void Undo_Click(object sender, EventArgs e) + { + if(!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Undo(); + } + private void Redo_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Redo(); + } + private void Cut_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Cut(); + } + private void Copy_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Copy(); + } + private void Paste_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.Paste(); + } + private void Del_Click(object sender, EventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + rich_txt.SelectedText=""; + } + private ToolStripSeparator AddSeparatorMenu() + { + ToolStripSeparator item = new ToolStripSeparator(); + base.Items.Add(item); + return item; + } + private ToolStripMenuItem AddMenu(string name, string tag) + { + ToolStripMenuItem item = new ToolStripMenuItem(name) + { + Tag = tag + }; + base.Items.Add(item); + return item; + } + + private void ContextMenuStripRichText_Opening(object sender, CancelEventArgs e) + { + if (!(base.SourceControl is RichTextBox)) { return; } + var rich_txt = (RichTextBox)base.SourceControl; + for (int i = 0; i < base.Items.Count; i++) + { + var item = base.Items[i]; + if (item.Tag == null) { continue; } + switch(item.Tag.ToString()) + { + case "undo": + item.Enabled = rich_txt.CanUndo; + break; + case "redo": + item.Enabled = rich_txt.CanRedo; + break; + case "cut": + item.Enabled = (rich_txt.SelectedText != "" && !rich_txt.ReadOnly) ? true : false; + break; + case "copy": + item.Enabled = rich_txt.SelectedText != "" ? true : false; + break; + case "paste": + item.Enabled = rich_txt.CanPaste(DataFormats.GetFormat(DataFormats.Text)); + break; + case "del": + item.Enabled =(rich_txt.SelectedText != "" && !rich_txt.ReadOnly) ? true : false; + break; + case "selectall": + item.Enabled = rich_txt.SelectedText != rich_txt.Text ? true : false; + break; + } + } + } + } +} diff --git a/Source/开发辅助工具/Controls/ContextMenuStripRichText.resx b/Source/开发辅助工具/Controls/ContextMenuStripRichText.resx new file mode 100644 index 0000000..e5858cc --- /dev/null +++ b/Source/开发辅助工具/Controls/ContextMenuStripRichText.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FindAndReplaceForm.cs b/Source/开发辅助工具/Controls/FindAndReplaceForm.cs new file mode 100644 index 0000000..9e9d836 --- /dev/null +++ b/Source/开发辅助工具/Controls/FindAndReplaceForm.cs @@ -0,0 +1,520 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Text; +using System.Windows.Forms; +using ICSharpCode.TextEditor.Document; +using ICSharpCode.TextEditor; +using System.Diagnostics; +using System.IO; + +namespace XmlPad +{ + public partial class FindAndReplaceForm : Form + { + public FindAndReplaceForm() + { + InitializeComponent(); + _search = new TextEditorSearcher(); + } + + TextEditorSearcher _search; + TextEditorControl _editor; + TextEditorControl Editor + { + get { return _editor; } + set + { + _editor = value; + _search.Document = _editor.Document; + UpdateTitleBar(); + } + } + + private void UpdateTitleBar() + { + string text = ReplaceMode ? "查找和替换" : "查找"; + if (_editor != null && _editor.FileName != null) + text += " - " + Path.GetFileName(_editor.FileName); + if (_search.HasScanRegion) + text += " (只可选)"; + this.Text = text; + } + + public void ShowFor(TextEditorControl editor, bool replaceMode) + { + Editor = editor; + + _search.ClearScanRegion(); + SelectionManager sm = editor.ActiveTextAreaControl.SelectionManager; + if (sm.HasSomethingSelected && sm.SelectionCollection.Count == 1) + { + ISelection sel = sm.SelectionCollection[0]; + if (sel.StartPosition.Y == sel.EndPosition.Y) + txtLookFor.Text = sm.SelectedText; + else + _search.SetScanRegion(sel); + } + else + { + // Get the current word that the caret is on + Caret caret = editor.ActiveTextAreaControl.Caret; + int start = TextUtilities.FindWordStart(editor.Document, caret.Offset); + int endAt = TextUtilities.FindWordEnd(editor.Document, caret.Offset); + txtLookFor.Text = editor.Document.GetText(start, endAt - start); + } + + ReplaceMode = replaceMode; + + this.Owner = (Form)editor.TopLevelControl; + this.Show(); + + txtLookFor.SelectAll(); + txtLookFor.Focus(); + } + + public bool ReplaceMode + { + get { return txtReplaceWith.Visible; } + set + { + btnReplace.Visible = btnReplaceAll.Visible = value; + lblReplaceWith.Visible = txtReplaceWith.Visible = value; + btnFindAllHighlightAll.Visible = !value; + this.AcceptButton = value ? btnReplace : btnFindNext; + UpdateTitleBar(); + } + } + + private void BtnFindPrevious_Click(object sender, EventArgs e) + { + FindNext(false, true, "内容没有找到!"); + } + private void BtnFindNext_Click(object sender, EventArgs e) + { + FindNext(false, false, "内容没有找到"); + } + + public bool _lastSearchWasBackward = false; + public bool _lastSearchLoopedAround; + + public TextRange FindNext(bool viaF3, bool searchBackward, string messageIfNotFound) + { + if (string.IsNullOrEmpty(txtLookFor.Text)) + { + MessageBox.Show("没有指定要查找的内容!", "提示"); + return null; + } + _lastSearchWasBackward = searchBackward; + _search.LookFor = txtLookFor.Text; + _search.MatchCase = chkMatchCase.Checked; + _search.MatchWholeWordOnly = chkMatchWholeWord.Checked; + + Caret caret = _editor.ActiveTextAreaControl.Caret; + if (viaF3 && _search.HasScanRegion && !Globals.IsInRange(caret.Offset, _search.BeginOffset, _search.EndOffset)) + { + // user moved outside of the originally selected region + _search.ClearScanRegion(); + UpdateTitleBar(); + } + + int startFrom = caret.Offset - (searchBackward ? 1 : 0); + TextRange range = _search.FindNext(startFrom, searchBackward, out _lastSearchLoopedAround); + if (range != null) + SelectResult(range); + else if (messageIfNotFound != null) + MessageBox.Show(messageIfNotFound, "提示"); + return range; + } + + private void SelectResult(TextRange range) + { + TextLocation p1 = _editor.Document.OffsetToPosition(range.Offset); + TextLocation p2 = _editor.Document.OffsetToPosition(range.Offset + range.Length); + _editor.ActiveTextAreaControl.SelectionManager.SetSelection(p1, p2); + //_editor.ActiveTextAreaControl.ScrollTo(p1.Line, p1.Column); + // Also move the caret to the end of the selection, because when the user + // presses F3, the caret is where we start searching next time. + _editor.ActiveTextAreaControl.Caret.Position = + _editor.Document.OffsetToPosition(range.Offset + range.Length); + } + + Dictionary _highlightGroups = new Dictionary(); + + private void btnHighlightAll_Click(object sender, EventArgs e) + { + if (!_highlightGroups.ContainsKey(_editor)) + _highlightGroups[_editor] = new HighlightGroup(_editor); + HighlightGroup group = _highlightGroups[_editor]; + + if (string.IsNullOrEmpty(LookFor)) + // Clear highlights + group.ClearMarkers(); + else + { + _search.LookFor = txtLookFor.Text; + _search.MatchCase = chkMatchCase.Checked; + _search.MatchWholeWordOnly = chkMatchWholeWord.Checked; + + bool looped = false; + int offset = 0, count = 0; + for (; ; ) + { + TextRange range = _search.FindNext(offset, false, out looped); + if (range == null || looped) + break; + offset = range.Offset + range.Length; + count++; + + TextMarker m = new TextMarker(range.Offset, range.Length, + TextMarkerType.SolidBlock, Color.Yellow, Color.Black); + group.AddMarker(m); + } + if (count == 0) + MessageBox.Show("没有找到你要查找的内容", "提示"); + else + Close(); + } + } + + private void FindAndReplaceForm_FormClosing(object sender, FormClosingEventArgs e) + { // Prevent dispose, as this form can be re-used + if (e.CloseReason != CloseReason.FormOwnerClosing) + { + if (this.Owner != null) + this.Owner.Select(); // prevent another app from being activated instead + + e.Cancel = true; + Hide(); + + // Discard search region + _search.ClearScanRegion(); + _editor.Refresh(); // must repaint manually + } + } + + private void btnCancel_Click(object sender, EventArgs e) + { + Close(); + } + + private void btnReplace_Click(object sender, EventArgs e) + { + SelectionManager sm = _editor.ActiveTextAreaControl.SelectionManager; + if (string.Equals(sm.SelectedText, txtLookFor.Text, StringComparison.OrdinalIgnoreCase)) + InsertText(txtReplaceWith.Text); + FindNext(false, _lastSearchWasBackward, "内容没有找到!"); + } + + private void btnReplaceAll_Click(object sender, EventArgs e) + { + int count = 0; + // BUG FIX: if the replacement string contains the original search string + // (e.g. replace "red" with "very red") we must avoid looping around and + // replacing forever! To fix, start replacing at beginning of region (by + // moving the caret) and stop as soon as we loop around. + _editor.ActiveTextAreaControl.Caret.Position = + _editor.Document.OffsetToPosition(_search.BeginOffset); + + //_editor.Document.UndoStack.StartUndoGroup(); + //try + //{ + lock (_editor.Document.UndoStack) + { + while (FindNext(false, false, null) != null) + { + if (_lastSearchLoopedAround) + break; + + // Replace + count++; + InsertText(txtReplaceWith.Text); + } + } + //} + //finally + //{ + // _editor.Document.UndoStack.EndUndoGroup(); + //} + if (count == 0) + MessageBox.Show(string.Format("没有找到目标内容: {0}!", txtLookFor.Text), "提示"); + else + { + MessageBox.Show(string.Format("替换了 {0} 处内容!", count), "提示"); + Close(); + } + } + + private void InsertText(string text) + { + TextArea textArea = _editor.ActiveTextAreaControl.TextArea; + //textArea.Document.UndoStack.StartUndoGroup(); + //try + //{ + lock (textArea.Document.UndoStack) + { + if (textArea.SelectionManager.HasSomethingSelected) + { + textArea.Caret.Position = textArea.SelectionManager.SelectionCollection[0].StartPosition; + textArea.SelectionManager.RemoveSelectedText(); + } + textArea.InsertString(text); + } + //} + //finally + //{ + // textArea.Document.UndoStack.EndUndoGroup(); + //} + } + + public string LookFor { get { return txtLookFor.Text; } } + } + + public class TextRange : AbstractSegment + { + IDocument _document; + public TextRange(IDocument document, int offset, int length) + { + _document = document; + this.offset = offset; + this.length = length; + } + } + + /// This class finds occurrances of a search string in a text + /// editor's IDocument... it's like Find box without a GUI. + public class TextEditorSearcher : IDisposable + { + IDocument _document; + public IDocument Document + { + get { return _document; } + set + { + if (_document != value) + { + ClearScanRegion(); + _document = value; + } + } + } + + // I would have used the TextAnchor class to represent the beginning and + // end of the region to scan while automatically adjusting to changes in + // the document--but for some reason it is sealed and its constructor is + // internal. Instead I use a TextMarker, which is perhaps even better as + // it gives me the opportunity to highlight the region. Note that all the + // markers and coloring information is associated with the text document, + // not the editor control, so TextEditorSearcher doesn't need a reference + // to the TextEditorControl. After adding the marker to the document, we + // must remember to remove it when it is no longer needed. + TextMarker _region = null; + /// Sets the region to search. The region is updated + /// automatically as the document changes. + public void SetScanRegion(ISelection sel) + { + SetScanRegion(sel.Offset, sel.Length); + } + /// Sets the region to search. The region is updated + /// automatically as the document changes. + public void SetScanRegion(int offset, int length) + { + Color bkgColor = _document.HighlightingStrategy.GetColorFor("Default").BackgroundColor; + _region = new TextMarker(offset, length, TextMarkerType.SolidBlock, + Globals.HalfMix(bkgColor, Color.FromArgb(160, 160, 160))); + _document.MarkerStrategy.AddMarker(_region); + } + public bool HasScanRegion + { + get { return _region != null; } + } + public void ClearScanRegion() + { + if (_region != null) + { + _document.MarkerStrategy.RemoveMarker(_region); + _region = null; + } + } + public void Dispose() { ClearScanRegion(); GC.SuppressFinalize(this); } + ~TextEditorSearcher() { Dispose(); } + + /// Begins the start offset for searching + public int BeginOffset + { + get + { + if (_region != null) + return _region.Offset; + else + return 0; + } + } + /// Begins the end offset for searching + public int EndOffset + { + get + { + if (_region != null) + return _region.EndOffset; + else + return _document.TextLength; + } + } + + public bool MatchCase; + + public bool MatchWholeWordOnly; + + string _lookFor; + string _lookFor2; // uppercase in case-insensitive mode + public string LookFor + { + get { return _lookFor; } + set { _lookFor = value; } + } + + /// Finds next instance of LookFor, according to the search rules + /// (MatchCase, MatchWholeWordOnly). + /// Offset in Document at which to begin the search + /// If there is a match at beginAtOffset precisely, it will be returned. + /// Region of document that matches the search string + public TextRange FindNext(int beginAtOffset, bool searchBackward, out bool loopedAround) + { + Debug.Assert(!string.IsNullOrEmpty(_lookFor)); + loopedAround = false; + + int startAt = BeginOffset, endAt = EndOffset; + int curOffs = Globals.InRange(beginAtOffset, startAt, endAt); + + _lookFor2 = MatchCase ? _lookFor : _lookFor.ToUpperInvariant(); + + TextRange result; + if (searchBackward) + { + result = FindNextIn(startAt, curOffs, true); + if (result == null) + { + loopedAround = true; + result = FindNextIn(curOffs, endAt, true); + } + } + else + { + result = FindNextIn(curOffs, endAt, false); + if (result == null) + { + loopedAround = true; + result = FindNextIn(startAt, curOffs, false); + } + } + return result; + } + + public delegate TResult Func(T1 arg1, T2 arg2); + public delegate TResult Func(T arg); + + private TextRange FindNextIn(int offset1, int offset2, bool searchBackward) + { + Debug.Assert(offset2 >= offset1); + offset2 -= _lookFor.Length; + + // Make behavior decisions before starting search loop + Func matchFirstCh; + Func matchWord; + if (MatchCase) + matchFirstCh = delegate(char lookFor, char c) + { + return lookFor == c; + }; + else + matchFirstCh = delegate(char lookFor, char c) + { + return lookFor == Char.ToUpperInvariant(c); + }; + + if (MatchWholeWordOnly) + matchWord = IsWholeWordMatch; + else + matchWord = IsPartWordMatch; + + // Search + char lookForCh = _lookFor2[0]; + if (searchBackward) + { + for (int offset = offset2; offset >= offset1; offset--) + { + if (matchFirstCh(lookForCh, _document.GetCharAt(offset)) + && matchWord(offset)) + return new TextRange(_document, offset, _lookFor.Length); + } + } + else + { + for (int offset = offset1; offset <= offset2; offset++) + { + if (matchFirstCh(lookForCh, _document.GetCharAt(offset)) + && matchWord(offset)) + return new TextRange(_document, offset, _lookFor.Length); + } + } + return null; + } + private bool IsWholeWordMatch(int offset) + { + if (IsWordBoundary(offset) && IsWordBoundary(offset + _lookFor.Length)) + return IsPartWordMatch(offset); + else + return false; + } + private bool IsWordBoundary(int offset) + { + return offset <= 0 || offset >= _document.TextLength || + !IsAlphaNumeric(offset - 1) || !IsAlphaNumeric(offset); + } + private bool IsAlphaNumeric(int offset) + { + char c = _document.GetCharAt(offset); + return Char.IsLetterOrDigit(c) || c == '_'; + } + private bool IsPartWordMatch(int offset) + { + string substr = _document.GetText(offset, _lookFor.Length); + if (!MatchCase) + substr = substr.ToUpperInvariant(); + return substr == _lookFor2; + } + } + + /// Bundles a group of markers together so that they can be cleared + /// together. + public class HighlightGroup : IDisposable + { + List _markers = new List(); + TextEditorControl _editor; + IDocument _document; + public HighlightGroup(TextEditorControl editor) + { + _editor = editor; + _document = editor.Document; + } + public void AddMarker(TextMarker marker) + { + _markers.Add(marker); + _document.MarkerStrategy.AddMarker(marker); + } + public void ClearMarkers() + { + foreach (TextMarker m in _markers) + _document.MarkerStrategy.RemoveMarker(m); + _markers.Clear(); + _editor.Refresh(); + } + public void Dispose() { ClearMarkers(); GC.SuppressFinalize(this); } + ~HighlightGroup() { Dispose(); } + + public IList Markers { get { return _markers.AsReadOnly(); } } + } +} diff --git a/Source/开发辅助工具/Controls/FindAndReplaceForm.designer.cs b/Source/开发辅助工具/Controls/FindAndReplaceForm.designer.cs new file mode 100644 index 0000000..587758f --- /dev/null +++ b/Source/开发辅助工具/Controls/FindAndReplaceForm.designer.cs @@ -0,0 +1,235 @@ +namespace XmlPad +{ + partial class FindAndReplaceForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.lblReplaceWith = new System.Windows.Forms.Label(); + this.txtLookFor = new System.Windows.Forms.TextBox(); + this.txtReplaceWith = new System.Windows.Forms.TextBox(); + this.btnFindNext = new System.Windows.Forms.Button(); + this.btnReplace = new System.Windows.Forms.Button(); + this.btnReplaceAll = new System.Windows.Forms.Button(); + this.chkMatchWholeWord = new System.Windows.Forms.CheckBox(); + this.chkMatchCase = new System.Windows.Forms.CheckBox(); + this.btnFindAllHighlightAll = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnFindPrevious = new System.Windows.Forms.Button(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(77, 12); + this.label1.TabIndex = 0; + this.label1.Text = "查找内容(&N):"; + // + // lblReplaceWith + // + this.lblReplaceWith.AutoSize = true; + this.lblReplaceWith.Location = new System.Drawing.Point(12, 36); + this.lblReplaceWith.Name = "lblReplaceWith"; + this.lblReplaceWith.Size = new System.Drawing.Size(65, 12); + this.lblReplaceWith.TabIndex = 2; + this.lblReplaceWith.Text = "替换为(&P):"; + // + // txtLookFor + // + this.txtLookFor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtLookFor.Location = new System.Drawing.Point(95, 6); + this.txtLookFor.Name = "txtLookFor"; + this.txtLookFor.Size = new System.Drawing.Size(232, 21); + this.txtLookFor.TabIndex = 1; + // + // txtReplaceWith + // + this.txtReplaceWith.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.txtReplaceWith.Location = new System.Drawing.Point(95, 33); + this.txtReplaceWith.Name = "txtReplaceWith"; + this.txtReplaceWith.Size = new System.Drawing.Size(232, 21); + this.txtReplaceWith.TabIndex = 3; + // + // btnFindNext + // + this.btnFindNext.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnFindNext.Location = new System.Drawing.Point(228, 137); + this.btnFindNext.Name = "btnFindNext"; + this.btnFindNext.Size = new System.Drawing.Size(100, 30); + this.btnFindNext.TabIndex = 6; + this.btnFindNext.Text = "查找下一个(&F)"; + this.btnFindNext.UseVisualStyleBackColor = true; + this.btnFindNext.Click += new System.EventHandler(this.BtnFindNext_Click); + // + // btnReplace + // + this.btnReplace.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnReplace.Location = new System.Drawing.Point(12, 174); + this.btnReplace.Name = "btnReplace"; + this.btnReplace.Size = new System.Drawing.Size(100, 30); + this.btnReplace.TabIndex = 7; + this.btnReplace.Text = "替换(&R)"; + this.btnReplace.UseVisualStyleBackColor = true; + this.btnReplace.Click += new System.EventHandler(this.btnReplace_Click); + // + // btnReplaceAll + // + this.btnReplaceAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnReplaceAll.Location = new System.Drawing.Point(119, 174); + this.btnReplaceAll.Name = "btnReplaceAll"; + this.btnReplaceAll.Size = new System.Drawing.Size(100, 30); + this.btnReplaceAll.TabIndex = 9; + this.btnReplaceAll.Text = "全部替换(&A)"; + this.btnReplaceAll.UseVisualStyleBackColor = true; + this.btnReplaceAll.Click += new System.EventHandler(this.btnReplaceAll_Click); + // + // chkMatchWholeWord + // + this.chkMatchWholeWord.AutoSize = true; + this.chkMatchWholeWord.Location = new System.Drawing.Point(145, 27); + this.chkMatchWholeWord.Name = "chkMatchWholeWord"; + this.chkMatchWholeWord.Size = new System.Drawing.Size(90, 16); + this.chkMatchWholeWord.TabIndex = 5; + this.chkMatchWholeWord.Text = "全字匹配(&W)"; + this.chkMatchWholeWord.UseVisualStyleBackColor = true; + // + // chkMatchCase + // + this.chkMatchCase.AutoSize = true; + this.chkMatchCase.Location = new System.Drawing.Point(22, 27); + this.chkMatchCase.Name = "chkMatchCase"; + this.chkMatchCase.Size = new System.Drawing.Size(102, 16); + this.chkMatchCase.TabIndex = 4; + this.chkMatchCase.Text = "大小写匹配(&C)"; + this.chkMatchCase.UseVisualStyleBackColor = true; + // + // btnFindAllHighlightAll + // + this.btnFindAllHighlightAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnFindAllHighlightAll.Location = new System.Drawing.Point(66, 174); + this.btnFindAllHighlightAll.Name = "btnFindAllHighlightAll"; + this.btnFindAllHighlightAll.Size = new System.Drawing.Size(150, 30); + this.btnFindAllHighlightAll.TabIndex = 8; + this.btnFindAllHighlightAll.Text = "查找全部并高亮显示(&H)"; + this.btnFindAllHighlightAll.UseVisualStyleBackColor = true; + this.btnFindAllHighlightAll.Visible = false; + this.btnFindAllHighlightAll.Click += new System.EventHandler(this.btnHighlightAll_Click); + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnCancel.Location = new System.Drawing.Point(228, 173); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(100, 30); + this.btnCancel.TabIndex = 6; + this.btnCancel.Text = "取消(&C)"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // btnFindPrevious + // + this.btnFindPrevious.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnFindPrevious.Location = new System.Drawing.Point(118, 138); + this.btnFindPrevious.Name = "btnFindPrevious"; + this.btnFindPrevious.Size = new System.Drawing.Size(100, 30); + this.btnFindPrevious.TabIndex = 6; + this.btnFindPrevious.Text = "查找上一个(&P)"; + this.btnFindPrevious.UseVisualStyleBackColor = true; + this.btnFindPrevious.Click += new System.EventHandler(this.BtnFindPrevious_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.chkMatchCase); + this.groupBox1.Controls.Add(this.chkMatchWholeWord); + this.groupBox1.Location = new System.Drawing.Point(14, 64); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(313, 63); + this.groupBox1.TabIndex = 10; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "查找选项"; + // + // FindAndReplaceForm + // + this.AcceptButton = this.btnReplace; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(339, 215); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.btnReplaceAll); + this.Controls.Add(this.btnReplace); + this.Controls.Add(this.btnFindAllHighlightAll); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnFindPrevious); + this.Controls.Add(this.btnFindNext); + this.Controls.Add(this.txtReplaceWith); + this.Controls.Add(this.txtLookFor); + this.Controls.Add(this.lblReplaceWith); + this.Controls.Add(this.label1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FindAndReplaceForm"; + this.ShowIcon = false; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "查找和替换"; + this.TopMost = true; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FindAndReplaceForm_FormClosing); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label lblReplaceWith; + private System.Windows.Forms.TextBox txtLookFor; + private System.Windows.Forms.TextBox txtReplaceWith; + private System.Windows.Forms.Button btnFindNext; + private System.Windows.Forms.Button btnReplace; + private System.Windows.Forms.Button btnReplaceAll; + private System.Windows.Forms.CheckBox chkMatchWholeWord; + private System.Windows.Forms.CheckBox chkMatchCase; + private System.Windows.Forms.Button btnFindAllHighlightAll; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Button btnFindPrevious; + private System.Windows.Forms.GroupBox groupBox1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FindAndReplaceForm.resx b/Source/开发辅助工具/Controls/FindAndReplaceForm.resx new file mode 100644 index 0000000..d58980a --- /dev/null +++ b/Source/开发辅助工具/Controls/FindAndReplaceForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FrmInsertUnixTime.Designer.cs b/Source/开发辅助工具/Controls/FrmInsertUnixTime.Designer.cs new file mode 100644 index 0000000..0ee232c --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmInsertUnixTime.Designer.cs @@ -0,0 +1,78 @@ + +namespace SuperDesign.Controls +{ + partial class FrmInsertUnixTime + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.dateTimePickerEX1 = new ryControls.DateTimePickerEX(); + this.BtnOK = new ryControls.ButtonEx(); + this.SuspendLayout(); + // + // dateTimePickerEX1 + // + this.dateTimePickerEX1.CustomFormat = "yyyy年MM月dd日 dddd HH:mm:ss"; + this.dateTimePickerEX1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dateTimePickerEX1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dateTimePickerEX1.Location = new System.Drawing.Point(12, 25); + this.dateTimePickerEX1.Name = "dateTimePickerEX1"; + this.dateTimePickerEX1.Size = new System.Drawing.Size(277, 23); + this.dateTimePickerEX1.TabIndex = 6; + // + // BtnOK + // + this.BtnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnOK.Location = new System.Drawing.Point(222, 80); + this.BtnOK.Name = "BtnOK"; + this.BtnOK.Size = new System.Drawing.Size(67, 26); + this.BtnOK.TabIndex = 113; + this.BtnOK.Text = "确定"; + this.BtnOK.UseVisualStyleBackColor = true; + this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // FrmInsertUnixTime + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(303, 112); + this.Controls.Add(this.BtnOK); + this.Controls.Add(this.dateTimePickerEX1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FrmInsertUnixTime"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "插入时间戳"; + this.ResumeLayout(false); + + } + + #endregion + private ryControls.ButtonEx BtnOK; + public ryControls.DateTimePickerEX dateTimePickerEX1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FrmInsertUnixTime.cs b/Source/开发辅助工具/Controls/FrmInsertUnixTime.cs new file mode 100644 index 0000000..340c599 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmInsertUnixTime.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SuperDesign.Controls +{ + public partial class FrmInsertUnixTime : Form + { + public FrmInsertUnixTime() + { + InitializeComponent(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + } + } +} diff --git a/Source/开发辅助工具/Controls/FrmInsertUnixTime.resx b/Source/开发辅助工具/Controls/FrmInsertUnixTime.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmInsertUnixTime.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FrmText.Designer.cs b/Source/开发辅助工具/Controls/FrmText.Designer.cs new file mode 100644 index 0000000..ddab037 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmText.Designer.cs @@ -0,0 +1,103 @@ +namespace 开发辅助工具.Controls +{ + partial class FrmText + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.panelEx1 = new ryControls.PanelEx(); + this.BtnSave = new ryControls.ButtonEx(); + this.richTextBox1 = new System.Windows.Forms.RichTextBox(); + this.contextMenuStripRichText1 = new ryProcessManager.hezuo.ContextMenuStripRichText(); + this.panelEx1.SuspendLayout(); + this.SuspendLayout(); + // + // panelEx1 + // + this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx1.Controls.Add(this.richTextBox1); + this.panelEx1.Location = new System.Drawing.Point(12, 36); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx1.Size = new System.Drawing.Size(725, 467); + this.panelEx1.TabIndex = 0; + this.panelEx1.TileBackColor = System.Drawing.Color.White; + // + // BtnSave + // + this.BtnSave.ForeColor = System.Drawing.Color.White; + this.BtnSave.Location = new System.Drawing.Point(12, 6); + this.BtnSave.Name = "BtnSave"; + this.BtnSave.Size = new System.Drawing.Size(65, 26); + this.BtnSave.TabIndex = 1; + this.BtnSave.Text = "保存"; + this.BtnSave.UseVisualStyleBackColor = true; + this.BtnSave.Click += new System.EventHandler(this.BtnSave_Click); + // + // richTextBox1 + // + this.richTextBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.richTextBox1.ContextMenuStrip = this.contextMenuStripRichText1; + this.richTextBox1.Location = new System.Drawing.Point(3, 7); + this.richTextBox1.Name = "richTextBox1"; + this.richTextBox1.Size = new System.Drawing.Size(719, 455); + this.richTextBox1.TabIndex = 0; + this.richTextBox1.Text = ""; + // + // contextMenuStripRichText1 + // + this.contextMenuStripRichText1.Name = "contextMenuStripRichText1"; + this.contextMenuStripRichText1.Size = new System.Drawing.Size(101, 164); + // + // FrmText + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(749, 515); + this.Controls.Add(this.BtnSave); + this.Controls.Add(this.panelEx1); + this.Name = "FrmText"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "文本编辑 "; + this.panelEx1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private ryControls.PanelEx panelEx1; + private ryControls.ButtonEx BtnSave; + private ryProcessManager.hezuo.ContextMenuStripRichText contextMenuStripRichText1; + public System.Windows.Forms.RichTextBox richTextBox1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FrmText.cs b/Source/开发辅助工具/Controls/FrmText.cs new file mode 100644 index 0000000..545e4ee --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmText.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 开发辅助工具.Controls +{ + public partial class FrmText : Form + { + public FrmText() + { + InitializeComponent(); + } + + private void BtnSave_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + } + } +} diff --git a/Source/开发辅助工具/Controls/FrmText.resx b/Source/开发辅助工具/Controls/FrmText.resx new file mode 100644 index 0000000..c7a51b2 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmText.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FrmTitle.Designer.cs b/Source/开发辅助工具/Controls/FrmTitle.Designer.cs new file mode 100644 index 0000000..803c4f5 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmTitle.Designer.cs @@ -0,0 +1,91 @@ + +namespace SuperDesign.Controls +{ + partial class FrmTitle + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.TxtTitle = new ryControls.TextBoxEx2(); + this.BtnOK = new ryControls.ButtonEx(); + this.SuspendLayout(); + // + // TxtTitle + // + this.TxtTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtTitle.BackColor = System.Drawing.Color.White; + this.TxtTitle.EmptyText = "请输入标题"; + this.TxtTitle.ImeMode = System.Windows.Forms.ImeMode.Close; + this.TxtTitle.Location = new System.Drawing.Point(12, 23); + this.TxtTitle.MaxLength = 999999999; + this.TxtTitle.Multiline = false; + this.TxtTitle.Name = "TxtTitle"; + this.TxtTitle.OnlyNumeric = false; + this.TxtTitle.PasswordChar = '\0'; + this.TxtTitle.ReadOnly = false; + this.TxtTitle.SelectedText = ""; + this.TxtTitle.SelectionLength = 0; + this.TxtTitle.SelectionStart = 0; + this.TxtTitle.Size = new System.Drawing.Size(363, 23); + this.TxtTitle.TabIndex = 111; + this.TxtTitle.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtTitle.ToolTip = ""; + this.TxtTitle.WordWrap = true; + // + // BtnOK + // + this.BtnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnOK.Location = new System.Drawing.Point(292, 78); + this.BtnOK.Name = "BtnOK"; + this.BtnOK.Size = new System.Drawing.Size(82, 26); + this.BtnOK.TabIndex = 112; + this.BtnOK.Text = "确定"; + this.BtnOK.UseVisualStyleBackColor = true; + this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // FrmTitle + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(383, 116); + this.Controls.Add(this.BtnOK); + this.Controls.Add(this.TxtTitle); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "FrmTitle"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "请输入标题"; + this.ResumeLayout(false); + + } + + #endregion + private ryControls.ButtonEx BtnOK; + public ryControls.TextBoxEx2 TxtTitle; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/FrmTitle.cs b/Source/开发辅助工具/Controls/FrmTitle.cs new file mode 100644 index 0000000..0d84953 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmTitle.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace SuperDesign.Controls +{ + public partial class FrmTitle : Form + { + public FrmTitle() + { + InitializeComponent(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if(TxtTitle.Text.Length<2) + { + MessageBox.Show("标题输入太短。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + DialogResult = DialogResult.OK; + } + } +} diff --git a/Source/开发辅助工具/Controls/FrmTitle.resx b/Source/开发辅助工具/Controls/FrmTitle.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/开发辅助工具/Controls/FrmTitle.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Controls/MenuRight.Designer.cs b/Source/开发辅助工具/Controls/MenuRight.Designer.cs new file mode 100644 index 0000000..8d62f59 --- /dev/null +++ b/Source/开发辅助工具/Controls/MenuRight.Designer.cs @@ -0,0 +1,36 @@ +namespace ryPaiban.Model +{ + partial class MenuRight + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region 组件设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} diff --git a/Source/开发辅助工具/Controls/MenuRight.cs b/Source/开发辅助工具/Controls/MenuRight.cs new file mode 100644 index 0000000..c58aced --- /dev/null +++ b/Source/开发辅助工具/Controls/MenuRight.cs @@ -0,0 +1,161 @@ +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using 开发辅助工具.Manager; + +namespace ryPaiban.Model +{ + [Description("子标签右键菜单")] + public partial class MenuRight : System.Windows.Forms.ContextMenuStrip + { + public MenuRight() + { + InitializeComponent(); + LoadMenu(); + } + private DockContent _SourceContent = null; + [Description("菜单所属的子窗体")] + public DockContent SourceContent + { + get { return _SourceContent; } + set + { + if (_SourceContent != value) + { + if (_SourceContent != null) + { + _SourceContent.FormClosing -= _SourceContent_FormClosing; + } + _SourceContent = value; + if (value != null) + { + _SourceContent.FormClosing += _SourceContent_FormClosing; + _SourceContent.TabPageContextMenuStrip = this; + } + } + } + + } + + private void _SourceContent_FormClosing(object sender, FormClosingEventArgs e) + { + if (Itrycn_Db.IsCloseConfirm) + { + switch (MessageBox.Show("是否确定要关闭?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)) + { + case DialogResult.Cancel: + e.Cancel = true; + break; + } + } + } + ToolStripMenuItem menu_start = null; + private void LoadMenu() + { + base.Items.Add("关闭本标签").Click += OnClose_Click; + base.Items.Add("除此之外全部关闭").Click += OnCloseAllNoMe_Click; + base.Items.Add("临时重命名").Click += OnRename_Click; + menu_start = (ToolStripMenuItem)base.Items.Add("软件启动时自动打开"); + menu_start.Click += OnStart_Click; + base.Opening += MenuRight_Opening; + } + + private void MenuRight_Opening(object sender, CancelEventArgs e) + { + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + RyQuickSQL mySQL = new RyQuickSQL("Starts"); + mySQL.AddField("Addr", SourceContent.GetType().ToString()); + DataSet ds = db.ReadData("select * from Starts where Addr=@Addr", mySQL); + menu_start.Checked = mydb.HaveData(ds); + } + db.Free(); + } + + private void OnStart_Click(object sender, EventArgs e) + { + if (SourceContent == null) { return; } + ToolStripMenuItem item = (ToolStripMenuItem)sender; + item.Checked = !item.Checked; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + RyQuickSQL mySQL = new RyQuickSQL("Starts"); + mySQL.AddField("Name", SourceContent.Text); + mySQL.AddField("Addr", SourceContent.GetType().ToString()); + mySQL.AddField("EditTime", DateTime.Now); + if (item.Checked) + { + DataSet ds = db.ReadData("select * from Starts where Addr=@Addr", mySQL); + if (!mydb.HaveData(ds)) + { + mySQL.AddField("AddTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(),mySQL); + } + } + else + { + db.ExecuteNonQuery("delete from Starts where Addr=@Addr", mySQL); + } + } + db.Free(); + } + private void OnClose_Click(object sender, EventArgs e) + { + if (SourceContent == null) { return; } + SourceContent.Close(); + } + private void OnCloseAllNoMe_Click(object sender, EventArgs e) + { + if (SourceContent == null) { return; } + switch (MessageBox.Show("是否确定要关闭?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)) + { + case DialogResult.Cancel: + return; + } + Itrycn_Db.IsCloseConfirm = false; + DockContentCollection contents = SourceContent.DockPanel.Contents; + int num = 0; + while (num < contents.Count) + { + if (contents[num].DockHandler.DockState == DockState.Document && SourceContent.DockPanel.ActiveContent != contents[num]) + { + contents[num].DockHandler.Close(); + } + else + { + num++; + } + } + Itrycn_Db.IsCloseConfirm = true; + } + private void OnRename_Click(object sender, EventArgs e) + { + if (SourceContent == null) { return; } + SuperDesign.Controls.FrmTitle frm = new SuperDesign.Controls.FrmTitle(); + frm.TxtTitle.Text = SourceContent.Text; + frm.Icon = SourceContent.Icon; + if(frm.ShowDialog()==DialogResult.OK) + { + SourceContent.Text = frm.TxtTitle.Text; + } + frm.Dispose(); + } + public MenuRight(IContainer container) + { + container.Add(this); + InitializeComponent(); + LoadMenu(); + } + } +} diff --git a/Source/开发辅助工具/Form1.Designer.cs b/Source/开发辅助工具/Form1.Designer.cs new file mode 100644 index 0000000..dad24d2 --- /dev/null +++ b/Source/开发辅助工具/Form1.Designer.cs @@ -0,0 +1,203 @@ +namespace 开发辅助工具 +{ + partial class Form1 + { + /// + /// 必需的设计器变量。 + /// + private System.ComponentModel.IContainer components = null; + + /// + /// 清理所有正在使用的资源。 + /// + /// 如果应释放托管资源,为 true;否则为 false。 + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows 窗体设计器生成的代码 + + /// + /// 设计器支持所需的方法 - 不要修改 + /// 使用代码编辑器修改此方法的内容。 + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.vS2015LightTheme1 = new WeifenLuo.WinFormsUI.Docking.VS2015LightTheme(); + this.dockPanel1 = new WeifenLuo.WinFormsUI.Docking.DockPanel(); + this.panel1 = new System.Windows.Forms.Panel(); + this.BtnCreateProject = new ryControls.ButtonEx(); + this.BtnSetting = new ryControls.ButtonEx(); + this.BtnTools = new ryControls.ButtonEx(); + this.rySearch1 = new ryControls.rySearch(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.textColumn4 = new XPTable.Models.TextColumn(); + this.textColumn5 = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.SuspendLayout(); + // + // dockPanel1 + // + this.dockPanel1.BackColor = System.Drawing.Color.White; + this.dockPanel1.DefaultFloatWindowSize = new System.Drawing.Size(970, 700); + this.dockPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.dockPanel1.DockBackColor = System.Drawing.Color.FromArgb(((int)(((byte)(238)))), ((int)(((byte)(238)))), ((int)(((byte)(242))))); + this.dockPanel1.Location = new System.Drawing.Point(0, 30); + this.dockPanel1.Name = "dockPanel1"; + this.dockPanel1.Padding = new System.Windows.Forms.Padding(6); + this.dockPanel1.ShowAutoHideContentOnHover = false; + this.dockPanel1.ShowDocumentIcon = true; + this.dockPanel1.Size = new System.Drawing.Size(964, 675); + this.dockPanel1.TabIndex = 12; + this.dockPanel1.Theme = this.vS2015LightTheme1; + this.dockPanel1.Enter += new System.EventHandler(this.DockPanel1_Enter); + // + // panel1 + // + this.panel1.Controls.Add(this.BtnCreateProject); + this.panel1.Controls.Add(this.BtnSetting); + this.panel1.Controls.Add(this.BtnTools); + this.panel1.Controls.Add(this.rySearch1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(964, 30); + this.panel1.TabIndex = 15; + this.panel1.Click += new System.EventHandler(this.Panel1_Click); + // + // BtnCreateProject + // + this.BtnCreateProject.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnCreateProject.Location = new System.Drawing.Point(533, 3); + this.BtnCreateProject.Name = "BtnCreateProject"; + this.BtnCreateProject.Size = new System.Drawing.Size(59, 25); + this.BtnCreateProject.TabIndex = 3; + this.BtnCreateProject.Text = "创建项目"; + this.BtnCreateProject.UseVisualStyleBackColor = true; + this.BtnCreateProject.Click += new System.EventHandler(this.BtnCreateProject_Click); + // + // BtnSetting + // + this.BtnSetting.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnSetting.Location = new System.Drawing.Point(468, 3); + this.BtnSetting.Name = "BtnSetting"; + this.BtnSetting.Size = new System.Drawing.Size(59, 25); + this.BtnSetting.TabIndex = 2; + this.BtnSetting.Text = "设置"; + this.BtnSetting.UseVisualStyleBackColor = true; + this.BtnSetting.Click += new System.EventHandler(this.BtnSetting_Click); + // + // BtnTools + // + this.BtnTools.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnTools.Location = new System.Drawing.Point(403, 3); + this.BtnTools.Name = "BtnTools"; + this.BtnTools.Size = new System.Drawing.Size(59, 25); + this.BtnTools.TabIndex = 1; + this.BtnTools.Text = "工具管理"; + this.BtnTools.UseVisualStyleBackColor = true; + this.BtnTools.Click += new System.EventHandler(this.BtnTools_Click); + // + // rySearch1 + // + this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch1.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.rySearch1.EmptyText = "请输入工具名称、名称拼音首字母、工具描述进行搜索"; + this.rySearch1.ImeMode = System.Windows.Forms.ImeMode.Close; + this.rySearch1.Location = new System.Drawing.Point(9, 3); + this.rySearch1.Name = "rySearch1"; + this.rySearch1.Size = new System.Drawing.Size(388, 25); + this.rySearch1.TabIndex = 0; + this.rySearch1.OnTextChanged += new System.EventHandler(this.RySearch1_OnTextChanged); + this.rySearch1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.RySearch1_KeyDown); + this.rySearch1.Leave += new System.EventHandler(this.RySearch1_Leave); + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.Location = new System.Drawing.Point(9, 30); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(442, 347); + this.table1.TabIndex = 19; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.Visible = false; + this.table1.Click += new System.EventHandler(this.Table1_Click); + this.table1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Table1_KeyDown); + this.table1.Leave += new System.EventHandler(this.Table1_Leave); + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.textColumn4, + this.textColumn5}); + // + // textColumn4 + // + this.textColumn4.Editable = false; + this.textColumn4.Tag = null; + this.textColumn4.Text = "工具名称"; + this.textColumn4.Width = 180; + // + // textColumn5 + // + this.textColumn5.Editable = false; + this.textColumn5.Tag = null; + this.textColumn5.Text = "备注"; + this.textColumn5.Width = 230; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(964, 705); + this.Controls.Add(this.table1); + this.Controls.Add(this.dockPanel1); + this.Controls.Add(this.panel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.IsMdiContainer = true; + this.Name = "Form1"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "睿元开发辅助工具"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); + this.Load += new System.EventHandler(this.Form1_Load); + this.panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.ToolTip toolTip1; + private WeifenLuo.WinFormsUI.Docking.VS2015LightTheme vS2015LightTheme1; + private WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel1; + private System.Windows.Forms.Panel panel1; + private ryControls.rySearch rySearch1; + private ryControls.ButtonEx BtnTools; + private XPTable.Models.Table table1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn textColumn4; + private XPTable.Models.TextColumn textColumn5; + private XPTable.Models.TableModel tableModel1; + private ryControls.ButtonEx BtnSetting; + private ryControls.ButtonEx BtnCreateProject; + } +} + diff --git a/Source/开发辅助工具/Form1.cs b/Source/开发辅助工具/Form1.cs new file mode 100644 index 0000000..0e55b71 --- /dev/null +++ b/Source/开发辅助工具/Form1.cs @@ -0,0 +1,280 @@ +using DotNet4.Utilities; +using HtmlAgilityPack; +using ICSharpCode.TextEditor.Document; +using Microsoft.Win32; +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Threading; +using System.Windows.Forms; +using System.Xml; +using WeifenLuo.WinFormsUI.Docking; +using 开发辅助工具.Manager; +using 开发辅助工具.Tools; + +namespace 开发辅助工具 +{ + public partial class Form1 : Form + { + string _ProjectPath = ""; + public Form1(string ProjectPath,string mode) + { + _ProjectPath = ProjectPath; + InitializeComponent(); + if(ProjectPath!="") + { + if (mode == "get") + { + FrmProject frm = new FrmProject(ProjectPath); + frm.Show(dockPanel1); + } + else if (mode == "open") + { + FrmPathInfo frm = new FrmPathInfo(ProjectPath); + frm.Show(dockPanel1); + } + } + Manager.Itrycn_Db.CreateSysTable(); + Manager.Itrycn_Db.CreateUserTable(); + LoadBaseTools(); + } + public void HideDownList() + { + table1.Visible = false; + } + private void LoadBaseTools() + { + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + DataSet ds = db.ReadData("select * from Starts order by ClickCount desc,editTime desc"); + if(mydb.HaveData(ds)) + { + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + Type type = Type.GetType(row["Addr"].ToString()); + if (type == null) { continue; } + ShowForm(type); + } + } + else + { + ShowForm(typeof(FrmWebGet)); + ShowForm(typeof(FrmXpath)); + ShowForm(typeof(FrmRegex)); + ShowForm(typeof(FrmEncode)); + } + } + db.Free(); + //ShowForm(Type.GetType("开发辅助工具.Tools.FrmWebGet")); + //ShowForm(typeof(FrmToolsBox)); + //FrmProject frm = new FrmProject(ProjectPath); + //frm.Show(dockPanel1); + } + private void ShowForm(Type type) + { + DockContent frm = (DockContent)Activator.CreateInstance(type); + frm.Click += Frm_Click; + frm.Show(dockPanel1); + } + + private void Frm_Click(object sender, EventArgs e) + { + HideDownList(); + } + + private void Form1_Load(object sender, EventArgs e) + { + Text = "开发辅助工具 V"+ryCommon.RySoft.VersionStr; + bool test_mode = false; + if (System.IO.File.Exists(Application.StartupPath + "\\测试.txt")){test_mode = true;} + BtnTools.Visible = test_mode; + BtnSetting.Visible = test_mode; + BtnCreateProject.Visible = test_mode; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + RyQuickSQL mySQL = new RyQuickSQL("Urls"); + mySQL.AddField("editTime",DateTime.Now.AddDays(-10)); + db.ExecuteNonQuery("DELETE FROM Urls WHERE id IN (SELECT id FROM Urls ORDER BY ClickCount desc,editTime desc LIMIT 1000,50) and editTime<=@editTime", mySQL); + } + db.Free(); + } + + private void BtnTools_Click(object sender, EventArgs e) + { + FrmToolsSearch frm = new FrmToolsSearch(); + frm.ShowDialog(); + } + + private void RySearch1_OnTextChanged(object sender, EventArgs e) + { + string sql_where = ""; + if (rySearch1.Text != ""){ sql_where = " where (Name like @SearchText or Des like @SearchText or Keys like @SearchText or PY like @SearchText)"; } + #region 重新载入数据 + tableModel1.Rows.Clear(); + tableModel1.Selections.Clear(); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + db.AddParameter("SearchText", "%" + rySearch1.Text + "%"); + DataSet ds = db.ReadData("select * from Tools"+ sql_where+ " order by sort desc, addTime desc", db.GetParameter()); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = row["Addr"].ToString() + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(row["Name"].ToString()));//示例 + var cell = new XPTable.Models.Cell(row["Des"].ToString()); + cell.ForeColor = Color.Gray; + itemList.Cells.Add(cell); + tableModel1.Rows.Add(itemList); + } + db.Free(); + textColumn4.Text = "工具名称("+ tableModel1.Rows.Count+ ")"; + table1.Visible = tableModel1.Rows.Count!=0; + } + #endregion + } + + private void RySearch1_KeyDown(object sender, KeyEventArgs e) + { + if(e.KeyCode==Keys.Down) + { + if (table1.Visible) + { + table1.TableModel.Selections.Clear(); + table1.TableModel.Selections.AddCells(0, 0, 0, columnModel1.Columns.Count - 1); + table1.Focus(); + } + } + } + + private void Table1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up) + { + if (table1.SelectedItems.Length>0 && table1.SelectedItems[0].Index==0) + { + table1.TableModel.Selections.Clear(); + rySearch1.Select(); + } + } + else if(e.KeyCode==Keys.Enter) + { + ClickItem(); + } + } + + private void DockPanel1_Enter(object sender, EventArgs e) + { + table1.Visible = false; + } + + private void Panel1_Click(object sender, EventArgs e) + { + table1.Visible = false; + } + private void ClickItem() + { + if (table1.SelectedItems.Length > 0) + { + table1.Visible = false; + Application.DoEvents(); + string addr = table1.SelectedItems[0].Tag.ToString(); + Type type = Type.GetType("开发辅助工具." + addr); + if (type == null) + { + MessageBox.Show("无法找到工具", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + ShowForm(type); + } + } + } + private void Table1_Click(object sender, EventArgs e) + { + ClickItem(); + } + private const int WM_COPYDATA = 0x004A; + protected override void WndProc(ref Message m) + { + //Console.WriteLine(m.Msg); + const int WM_SYSCOMMAND = 0x0112; + const int SC_CLOSE = 0xF060; + #region 关闭软件时 + if (m.Msg == WM_SYSCOMMAND && (int)m.WParam == SC_CLOSE) + { + //捕捉关闭窗体消息 + //用户点击关闭窗体控制按钮 注释为最小化窗体 + //this.WindowState = FormWindowState.Minimized; + if (Itrycn_Db.IsCloseConfirm) + { + switch (MessageBox.Show("是否确定要关闭所有窗口?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)) + { + case DialogResult.Cancel: + RyForm.SetActiveWindow(Handle); + return; + case DialogResult.OK: + Itrycn_Db.IsCloseConfirm = false; + break; + } + } + } + #endregion + base.WndProc(ref m); + } + private void Form1_FormClosing(object sender, FormClosingEventArgs e) + { + Itrycn_Db.IsCloseConfirm = false; + } + + private void RySearch1_Leave(object sender, EventArgs e) + { + if (!table1.Focused) + { + table1.Visible = false; + } + } + + private void Table1_Leave(object sender, EventArgs e) + { + if (!rySearch1.Focused) + { + table1.Visible = false; + } + } + + private void BtnSetting_Click(object sender, EventArgs e) + { + FrmSetting frm = new FrmSetting(); + frm.Icon = Icon; + frm.ShowDialog(); + } + + private void BtnCreateProject_Click(object sender, EventArgs e) + { + FrmCreateProject frm = new FrmCreateProject(); + frm.Icon = Icon; + frm.StartPosition = FormStartPosition.CenterParent; + frm.ShowDialog(); + } + } + +} diff --git a/Source/开发辅助工具/Form1.resx b/Source/开发辅助工具/Form1.resx new file mode 100644 index 0000000..f978e4d --- /dev/null +++ b/Source/开发辅助工具/Form1.resx @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 130, 32 + + + 428, 32 + + + 301, 32 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABILAAASCwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAKAAAAGgAAABAAAAADBBIdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAESLMAAAMJAAczXgADGjIAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAABQo8WmEdY4GrGFFpkgckNWAAAAAsAAAACg5OgQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNQAAAAAAAAAAALAAINOwAABDIAAAAJAAMOAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ3XgAAGTUkKJvI0FPf+v9L1/H9QbnV7y+FoMUTQVd+AAAJMwAA + AAkDFigAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBgAAAAAAAAAABBA5U1xAmrTXN42nzBAz + SXEAAAAiAAAAAwAAAAACFy8AAAAAAAAAAAABAAAAAAAAAAtVhmkwxO/6Rej//0nr//9O7f//V+n9/1PO + 5fg4jqrLEDtRdgAAACIAAAABAAAAAAABAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQFHjRKSaXA1mHv + //9V7f7/QcDa8htnibMBGTBMAAAABQAAAAAAAAAAAAAAAAATJwAAAAQSFHm8uDHM/v882///QeD//0Xl + //9I6f//Te3//1rq/f9Wxt70KXKOqwANGjIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAIAxsxTkiY + tM9h6vv/UfD//0/u//9K6f//Rc33/x93wcUAF1AYAythAAAAAAAAAAAAA0iTAAc8fDQdkeTpLsP//zXI + //88z///O9X//z3c//9D4v//R+j//1Lt//9a3fP+MYaiuAERHzEAAAAAAAAAAAAAAAAV//8AAAAAFggu + RmlOobzYaOn7/07t//9L6v//ROT//0vd//9r1P//M43nzgAohhQFPo4AAAAAAAAAAAAKWrYAClOqMxqJ + 7OYuqPz/S73//2PN//9n1P//U9X//z3W//8+3f//Q+P//0jq//9M3PT+KIGfsAADDyMMPGIAAAAABwAA + CjQbV3OWV7jS7Gnq/v9K6f//ReX//0Hg//841f//Vc///1y09/sWaMxtx///AAQ7ewAAAAAAAAAAAAdL + mQAERpEGDF/GQhpw2YM9jujIc7j2+KDa//+f4f//ddv//0LV//872v//P9///0Ll//880e77GGqLlgAA + ADcLM0pvNYqoyWLU7Ptc6f//Q+T//0Dg//892v//NdH//yzD//88s/z/J4LcpgAwgw0CSp8ABDyAAAAA + AAAAAAAABkuaAARGkgAPZ9YAav3/AAA6nhMsbcpaa6Hmxq7X+v6p4///atf//zjT//862f//PNz//0ji + //9GweLzK4Wp0lG83PFc4v3/R+P//z3e//872v//N9T//zHM//8owP//Iaz+/xaD5cgEUKkjCWDCAAhe + xQAAAAAAAAAAAAAAAAAAAAAAAR81AAJLngAANWIABUyoAFGR9AAAN6EZUYrZlZTJ+PuA1///Ps7//zXU + //842P//Q9r//2zi//9z4v//ZuP//0Db//831///NdL//zDM//8rxP//ML7//yeu//8WhuvZCVq6OBJ1 + 6ACO//8AAS1NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQ4kA////AA5TtQAAF38MPIHbome9 + /P8+x///Mc///zbV//821f//P9b//0nY//881P//MtD//y7K//8tw///QcP//2bK//9qwP7/J4nr3Qda + vkYblf8AACBAAAE/dQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHP2wADljFAA5W + vgADRaomKofo1C23//8uyv//M9L//zPT//8y0v//MdD//y/N//8pxf//M73//2bI//+h2v//ns38/0qN + 58wIU70+LbT/AAAuYwACQX0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAADK1QAAAgNACCc/wALW8RuH5/4/SvF//8wzv//MdD//zHQ//8vzv//KMX//ym4//9Wvf//i8r//4O1 + 9/U/fN6gAEO2IxZRrwAADR0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAEP4MACVG9AARGqz8slPLzQcf//y3J//8uzf//L87//yzL//8kvv//K6z+/0Sc + 8vs5ds3cDjuKgAAACS4AAAAaAAAADwAAAAQAChoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGQ6UAADedLTKI7eheyv//McX//yrJ//8ry///Ksr//yXB + //8bjeb6EVei3Rhll8sneZzCL3yawjBwirUjUmmXDCQ2ZAAAACkAAAAGAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ4hwAAJoIXKHbl0WTE//86w///JsT//yfH + //8nyP//Kcn//yu++P4zv/T8QdP9/0ne/v9Q4f7/WuL7/2Da8v5WvdbwNX2Yvw4qP14AAAAMAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAy5mAAAAAAUaYteoYbj+/0PD + //8jvv//IsD//yLA//8oxv//Mc7//zbT//831v//Otj//z3b//9A3f//ROD//0vk//9O4Pv/OqzN4xFO + dUMeg7oAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIDgAEmn/AApN + wWRRoff9TcP//yK6//8tvP//RML//1zM//9k0f//WdD//0PK//8sxf//JsX//yrI//8wy///ONH//0XY + //86yPf9GYHBWSOm7AAAAQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQt + XAADQKcAADKdHzF96NZBs///Nbv//1vG//+A0v//mtz//6De//+F0v//U7b//yij/v8Wov7/LrH//2XK + //+N2v//fM/+/zGT48MATaMaClywAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAItWgBK//8ACVPMdBuH+P1Euf//dM7//6Hf///G6///vuT//0KM7vsJTcHWCFC+oAxp + 3Jwff+nGX6b08ZvN/f9pp+/qFlq9RCqA6gA0//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAzZ8AANApwAAM5QQD17bpz2Y+/95yP//m9r//6bk//+Q0vz/SZDY9zVw + ndEUQGSWAAYWQgAVVRgUWMRENnnbiyJnyloAAAECACx5AAM0bgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACER0ABk7OAAU/ugAAK5YYGkzNrEGM8f9azf7/euf//4jr + //+D7P//beL+/0nH7/0nhbLTCShFVQAAAAHt//8AaK3/AAAshwADQZMAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACI0kAAAAAAAAAAAMKRoB8La/p/FXl + //+B7f//q/X//632//+B7f//WuX//zzZ/f8hj8DSBR88NBV30AABHjsAAkmVAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFMmAAABk/IhmR + zNA13f//Wuf//4nu//+79///xfn//5Xw//9n6P//P+X//yTJ9v8OZp6NAAAABQAHDgAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAx/ + 4AAIUZJMF7Pu9S3h//9O5///c+r//5Hu//+V7v//fer//1vm//844///Idf//xCM0cwAED8XAidTAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAEav/AAtqt2MWuvf9I9z//zji//9S5P//Y+X//2Xk//9Y4///QeH//ynd//8c0///EJfn3wI1 + gCIEP4cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAMhvcACmrAWxKt+Pwa0P//I9n//zPe//9E4P//SOH//zzf//8p2v//HtP//xfE + //8Ni+jaAjWKHQNAjgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdfwQAHV7Q1DZHx7BO8//8jy///S9r//2/k//935f//YeD//zrU + //8bw///EKv//whw2rUAD1IJATJ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkuUAAU1eAoHbt6sEJz9/zy///962f//qun//7bt + //+X4///X87//yWw//8Jg/X4BFLDWwdy/wAAGUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHaO4ABVnWAANQvDMKb+rWQqX+/5XU + ///V8P//5/f//7rl//9xwf//JYr5/wNZ2JgAKX4KATmXAAEqZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAc8YgAEJSwABnf/AABH + vDYfa+G0Z6H08q7O+//C2vz/lb/5/UqM7+QQWdSFADSdEgFDtQACRbEAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ/ + gwABIjAAA1XeAAArlRAOS8NPNWnVh0Nz2ZgpYNB0BUG3NQAAFAMAQLMAAUrKAAE1fAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAA/wBwAD4AMAAcADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAHgAAAB/AA + AA/4AAAf/AAAD/4AAAf+AAAD/gAAA/8AAAP/AAAD/wAAA/8AAAf/gAAH/4AAD//AAB//wAA//8AAP//A + AD//wAA//8AAP//AAD//4AA//+AAf//wAH8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/FrmMessageBox.Designer.cs b/Source/开发辅助工具/FrmMessageBox.Designer.cs new file mode 100644 index 0000000..23eeb63 --- /dev/null +++ b/Source/开发辅助工具/FrmMessageBox.Designer.cs @@ -0,0 +1,566 @@ +namespace 开发辅助工具 +{ + partial class FrmMessageBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.RbIconError = new System.Windows.Forms.RadioButton(); + this.RbIconWarning = new System.Windows.Forms.RadioButton(); + this.RbIconQuestion = new System.Windows.Forms.RadioButton(); + this.RbIconInformation = new System.Windows.Forms.RadioButton(); + this.RbIconNone = new System.Windows.Forms.RadioButton(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.ChkTitleIsPram = new System.Windows.Forms.CheckBox(); + this.CbbTitle = new ryControls.RyComboBox(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.TxtContent = new ryControls.TextBoxEx2(); + this.ChkContentIsPram = new System.Windows.Forms.CheckBox(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.RbBtnAbortRetryIgnore = new System.Windows.Forms.RadioButton(); + this.RbBtnRetryCancel = new System.Windows.Forms.RadioButton(); + this.RbBtnYesNoCancel = new System.Windows.Forms.RadioButton(); + this.RbBtnYesNo = new System.Windows.Forms.RadioButton(); + this.RbBtnOKCancel = new System.Windows.Forms.RadioButton(); + this.RbBtnOK = new System.Windows.Forms.RadioButton(); + this.GroupResult = new System.Windows.Forms.GroupBox(); + this.ChkResultNo = new System.Windows.Forms.CheckBox(); + this.ChkResultYes = new System.Windows.Forms.CheckBox(); + this.ChkResultIgnore = new System.Windows.Forms.CheckBox(); + this.ChkResultRetry = new System.Windows.Forms.CheckBox(); + this.ChkResultAbort = new System.Windows.Forms.CheckBox(); + this.ChkResultCancel = new System.Windows.Forms.CheckBox(); + this.ChkResultOK = new System.Windows.Forms.CheckBox(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.ChkTopMost = new System.Windows.Forms.CheckBox(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.RbDefaultButton3 = new System.Windows.Forms.RadioButton(); + this.RbDefaultButton2 = new System.Windows.Forms.RadioButton(); + this.RbDefaultButton1 = new System.Windows.Forms.RadioButton(); + this.BtnCreate = new ryControls.ButtonEx(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.radioButton6 = new System.Windows.Forms.RadioButton(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.groupBox4.SuspendLayout(); + this.GroupResult.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.groupBox7.SuspendLayout(); + this.groupBox5.SuspendLayout(); + this.SuspendLayout(); + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.RbIconError); + this.groupBox1.Controls.Add(this.RbIconWarning); + this.groupBox1.Controls.Add(this.RbIconQuestion); + this.groupBox1.Controls.Add(this.RbIconInformation); + this.groupBox1.Controls.Add(this.RbIconNone); + this.groupBox1.Location = new System.Drawing.Point(12, 12); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(111, 215); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "显示图标"; + // + // RbIconError + // + this.RbIconError.AutoSize = true; + this.RbIconError.Location = new System.Drawing.Point(18, 174); + this.RbIconError.Name = "RbIconError"; + this.RbIconError.Size = new System.Drawing.Size(47, 16); + this.RbIconError.TabIndex = 4; + this.RbIconError.Text = "错误"; + this.RbIconError.UseVisualStyleBackColor = true; + // + // RbIconWarning + // + this.RbIconWarning.AutoSize = true; + this.RbIconWarning.Location = new System.Drawing.Point(18, 137); + this.RbIconWarning.Name = "RbIconWarning"; + this.RbIconWarning.Size = new System.Drawing.Size(47, 16); + this.RbIconWarning.TabIndex = 3; + this.RbIconWarning.Text = "警告"; + this.RbIconWarning.UseVisualStyleBackColor = true; + // + // RbIconQuestion + // + this.RbIconQuestion.AutoSize = true; + this.RbIconQuestion.Location = new System.Drawing.Point(18, 100); + this.RbIconQuestion.Name = "RbIconQuestion"; + this.RbIconQuestion.Size = new System.Drawing.Size(47, 16); + this.RbIconQuestion.TabIndex = 2; + this.RbIconQuestion.Text = "询问"; + this.RbIconQuestion.UseVisualStyleBackColor = true; + // + // RbIconInformation + // + this.RbIconInformation.AutoSize = true; + this.RbIconInformation.Checked = true; + this.RbIconInformation.Location = new System.Drawing.Point(18, 63); + this.RbIconInformation.Name = "RbIconInformation"; + this.RbIconInformation.Size = new System.Drawing.Size(47, 16); + this.RbIconInformation.TabIndex = 1; + this.RbIconInformation.TabStop = true; + this.RbIconInformation.Text = "提示"; + this.RbIconInformation.UseVisualStyleBackColor = true; + // + // RbIconNone + // + this.RbIconNone.AutoSize = true; + this.RbIconNone.Location = new System.Drawing.Point(18, 26); + this.RbIconNone.Name = "RbIconNone"; + this.RbIconNone.Size = new System.Drawing.Size(35, 16); + this.RbIconNone.TabIndex = 0; + this.RbIconNone.Text = "无"; + this.RbIconNone.UseVisualStyleBackColor = true; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.ChkTitleIsPram); + this.groupBox2.Controls.Add(this.CbbTitle); + this.groupBox2.Location = new System.Drawing.Point(129, 12); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(424, 71); + this.groupBox2.TabIndex = 1; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "对话框标题"; + // + // ChkTitleIsPram + // + this.ChkTitleIsPram.AutoSize = true; + this.ChkTitleIsPram.Location = new System.Drawing.Point(6, 48); + this.ChkTitleIsPram.Name = "ChkTitleIsPram"; + this.ChkTitleIsPram.Size = new System.Drawing.Size(96, 16); + this.ChkTitleIsPram.TabIndex = 1; + this.ChkTitleIsPram.Text = "标题为变量名"; + this.ChkTitleIsPram.UseVisualStyleBackColor = true; + // + // CbbTitle + // + this.CbbTitle.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbTitle.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbTitle.FormattingEnabled = true; + this.CbbTitle.Location = new System.Drawing.Point(6, 20); + this.CbbTitle.Name = "CbbTitle"; + this.CbbTitle.Size = new System.Drawing.Size(412, 22); + this.CbbTitle.TabIndex = 0; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.TxtContent); + this.groupBox3.Controls.Add(this.ChkContentIsPram); + this.groupBox3.Location = new System.Drawing.Point(129, 89); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(424, 138); + this.groupBox3.TabIndex = 2; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "文本信息"; + // + // TxtContent + // + this.TxtContent.BackColor = System.Drawing.Color.White; + this.TxtContent.EmptyText = ""; + this.TxtContent.Location = new System.Drawing.Point(6, 20); + this.TxtContent.MaxLength = 999999999; + this.TxtContent.Multiline = true; + this.TxtContent.Name = "TxtContent"; + this.TxtContent.OnlyNumeric = false; + this.TxtContent.PasswordChar = '\0'; + this.TxtContent.ReadOnly = false; + this.TxtContent.SelectedText = ""; + this.TxtContent.SelectionLength = 0; + this.TxtContent.SelectionStart = 0; + this.TxtContent.Size = new System.Drawing.Size(412, 90); + this.TxtContent.TabIndex = 2; + this.TxtContent.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtContent.ToolTip = ""; + // + // ChkContentIsPram + // + this.ChkContentIsPram.AutoSize = true; + this.ChkContentIsPram.Location = new System.Drawing.Point(6, 116); + this.ChkContentIsPram.Name = "ChkContentIsPram"; + this.ChkContentIsPram.Size = new System.Drawing.Size(120, 16); + this.ChkContentIsPram.TabIndex = 1; + this.ChkContentIsPram.Text = "文本信息为变量名"; + this.ChkContentIsPram.UseVisualStyleBackColor = true; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.RbBtnAbortRetryIgnore); + this.groupBox4.Controls.Add(this.RbBtnRetryCancel); + this.groupBox4.Controls.Add(this.RbBtnYesNoCancel); + this.groupBox4.Controls.Add(this.RbBtnYesNo); + this.groupBox4.Controls.Add(this.RbBtnOKCancel); + this.groupBox4.Controls.Add(this.RbBtnOK); + this.groupBox4.Location = new System.Drawing.Point(129, 233); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(147, 177); + this.groupBox4.TabIndex = 3; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "对话框按钮"; + // + // RbBtnAbortRetryIgnore + // + this.RbBtnAbortRetryIgnore.AutoSize = true; + this.RbBtnAbortRetryIgnore.Location = new System.Drawing.Point(15, 134); + this.RbBtnAbortRetryIgnore.Name = "RbBtnAbortRetryIgnore"; + this.RbBtnAbortRetryIgnore.Size = new System.Drawing.Size(107, 16); + this.RbBtnAbortRetryIgnore.TabIndex = 5; + this.RbBtnAbortRetryIgnore.Text = "终止/重试/忽略"; + this.RbBtnAbortRetryIgnore.UseVisualStyleBackColor = true; + this.RbBtnAbortRetryIgnore.CheckedChanged += new System.EventHandler(this.RbBtnAbortRetryIgnore_CheckedChanged); + // + // RbBtnRetryCancel + // + this.RbBtnRetryCancel.AutoSize = true; + this.RbBtnRetryCancel.Location = new System.Drawing.Point(15, 112); + this.RbBtnRetryCancel.Name = "RbBtnRetryCancel"; + this.RbBtnRetryCancel.Size = new System.Drawing.Size(77, 16); + this.RbBtnRetryCancel.TabIndex = 4; + this.RbBtnRetryCancel.Text = "重试/取消"; + this.RbBtnRetryCancel.UseVisualStyleBackColor = true; + this.RbBtnRetryCancel.CheckedChanged += new System.EventHandler(this.RbBtnRetryCancel_CheckedChanged); + // + // RbBtnYesNoCancel + // + this.RbBtnYesNoCancel.AutoSize = true; + this.RbBtnYesNoCancel.Location = new System.Drawing.Point(15, 90); + this.RbBtnYesNoCancel.Name = "RbBtnYesNoCancel"; + this.RbBtnYesNoCancel.Size = new System.Drawing.Size(83, 16); + this.RbBtnYesNoCancel.TabIndex = 3; + this.RbBtnYesNoCancel.Text = "是/否/取消"; + this.RbBtnYesNoCancel.UseVisualStyleBackColor = true; + this.RbBtnYesNoCancel.CheckedChanged += new System.EventHandler(this.RbBtnYesNoCancel_CheckedChanged); + // + // RbBtnYesNo + // + this.RbBtnYesNo.AutoSize = true; + this.RbBtnYesNo.Location = new System.Drawing.Point(15, 68); + this.RbBtnYesNo.Name = "RbBtnYesNo"; + this.RbBtnYesNo.Size = new System.Drawing.Size(53, 16); + this.RbBtnYesNo.TabIndex = 2; + this.RbBtnYesNo.Text = "是/否"; + this.RbBtnYesNo.UseVisualStyleBackColor = true; + this.RbBtnYesNo.CheckedChanged += new System.EventHandler(this.RbBtnYesNo_CheckedChanged); + // + // RbBtnOKCancel + // + this.RbBtnOKCancel.AutoSize = true; + this.RbBtnOKCancel.Location = new System.Drawing.Point(15, 46); + this.RbBtnOKCancel.Name = "RbBtnOKCancel"; + this.RbBtnOKCancel.Size = new System.Drawing.Size(77, 16); + this.RbBtnOKCancel.TabIndex = 1; + this.RbBtnOKCancel.Text = "确定/取消"; + this.RbBtnOKCancel.UseVisualStyleBackColor = true; + this.RbBtnOKCancel.CheckedChanged += new System.EventHandler(this.RbBtnOKCancel_CheckedChanged); + // + // RbBtnOK + // + this.RbBtnOK.AutoSize = true; + this.RbBtnOK.Checked = true; + this.RbBtnOK.Location = new System.Drawing.Point(15, 24); + this.RbBtnOK.Name = "RbBtnOK"; + this.RbBtnOK.Size = new System.Drawing.Size(47, 16); + this.RbBtnOK.TabIndex = 0; + this.RbBtnOK.TabStop = true; + this.RbBtnOK.Text = "确定"; + this.RbBtnOK.UseVisualStyleBackColor = true; + this.RbBtnOK.CheckedChanged += new System.EventHandler(this.RbBtnOK_CheckedChanged); + // + // GroupResult + // + this.GroupResult.Controls.Add(this.ChkResultNo); + this.GroupResult.Controls.Add(this.ChkResultYes); + this.GroupResult.Controls.Add(this.ChkResultIgnore); + this.GroupResult.Controls.Add(this.ChkResultRetry); + this.GroupResult.Controls.Add(this.ChkResultAbort); + this.GroupResult.Controls.Add(this.ChkResultCancel); + this.GroupResult.Controls.Add(this.ChkResultOK); + this.GroupResult.Location = new System.Drawing.Point(284, 233); + this.GroupResult.Name = "GroupResult"; + this.GroupResult.Size = new System.Drawing.Size(115, 177); + this.GroupResult.TabIndex = 4; + this.GroupResult.TabStop = false; + this.GroupResult.Text = "函数返回值"; + // + // ChkResultNo + // + this.ChkResultNo.AutoSize = true; + this.ChkResultNo.Enabled = false; + this.ChkResultNo.Location = new System.Drawing.Point(11, 155); + this.ChkResultNo.Name = "ChkResultNo"; + this.ChkResultNo.Size = new System.Drawing.Size(36, 16); + this.ChkResultNo.TabIndex = 6; + this.ChkResultNo.Text = "否"; + this.ChkResultNo.UseVisualStyleBackColor = true; + // + // ChkResultYes + // + this.ChkResultYes.AutoSize = true; + this.ChkResultYes.Enabled = false; + this.ChkResultYes.Location = new System.Drawing.Point(11, 133); + this.ChkResultYes.Name = "ChkResultYes"; + this.ChkResultYes.Size = new System.Drawing.Size(36, 16); + this.ChkResultYes.TabIndex = 5; + this.ChkResultYes.Text = "是"; + this.ChkResultYes.UseVisualStyleBackColor = true; + // + // ChkResultIgnore + // + this.ChkResultIgnore.AutoSize = true; + this.ChkResultIgnore.Enabled = false; + this.ChkResultIgnore.Location = new System.Drawing.Point(11, 111); + this.ChkResultIgnore.Name = "ChkResultIgnore"; + this.ChkResultIgnore.Size = new System.Drawing.Size(48, 16); + this.ChkResultIgnore.TabIndex = 4; + this.ChkResultIgnore.Text = "忽略"; + this.ChkResultIgnore.UseVisualStyleBackColor = true; + // + // ChkResultRetry + // + this.ChkResultRetry.AutoSize = true; + this.ChkResultRetry.Enabled = false; + this.ChkResultRetry.Location = new System.Drawing.Point(11, 89); + this.ChkResultRetry.Name = "ChkResultRetry"; + this.ChkResultRetry.Size = new System.Drawing.Size(48, 16); + this.ChkResultRetry.TabIndex = 3; + this.ChkResultRetry.Text = "重试"; + this.ChkResultRetry.UseVisualStyleBackColor = true; + // + // ChkResultAbort + // + this.ChkResultAbort.AutoSize = true; + this.ChkResultAbort.Enabled = false; + this.ChkResultAbort.Location = new System.Drawing.Point(11, 67); + this.ChkResultAbort.Name = "ChkResultAbort"; + this.ChkResultAbort.Size = new System.Drawing.Size(48, 16); + this.ChkResultAbort.TabIndex = 2; + this.ChkResultAbort.Text = "终止"; + this.ChkResultAbort.UseVisualStyleBackColor = true; + // + // ChkResultCancel + // + this.ChkResultCancel.AutoSize = true; + this.ChkResultCancel.Enabled = false; + this.ChkResultCancel.Location = new System.Drawing.Point(11, 45); + this.ChkResultCancel.Name = "ChkResultCancel"; + this.ChkResultCancel.Size = new System.Drawing.Size(48, 16); + this.ChkResultCancel.TabIndex = 1; + this.ChkResultCancel.Text = "取消"; + this.ChkResultCancel.UseVisualStyleBackColor = true; + // + // ChkResultOK + // + this.ChkResultOK.AutoSize = true; + this.ChkResultOK.Enabled = false; + this.ChkResultOK.Location = new System.Drawing.Point(11, 23); + this.ChkResultOK.Name = "ChkResultOK"; + this.ChkResultOK.Size = new System.Drawing.Size(48, 16); + this.ChkResultOK.TabIndex = 0; + this.ChkResultOK.Text = "确定"; + this.ChkResultOK.UseVisualStyleBackColor = true; + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.ChkTopMost); + this.groupBox6.Location = new System.Drawing.Point(12, 233); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Size = new System.Drawing.Size(111, 52); + this.groupBox6.TabIndex = 5; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "扩展风格"; + // + // ChkTopMost + // + this.ChkTopMost.AutoSize = true; + this.ChkTopMost.Location = new System.Drawing.Point(11, 21); + this.ChkTopMost.Name = "ChkTopMost"; + this.ChkTopMost.Size = new System.Drawing.Size(72, 16); + this.ChkTopMost.TabIndex = 0; + this.ChkTopMost.Text = "窗口置顶"; + this.ChkTopMost.UseVisualStyleBackColor = true; + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.RbDefaultButton3); + this.groupBox7.Controls.Add(this.RbDefaultButton2); + this.groupBox7.Controls.Add(this.RbDefaultButton1); + this.groupBox7.Location = new System.Drawing.Point(12, 291); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Size = new System.Drawing.Size(111, 119); + this.groupBox7.TabIndex = 6; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "默认按钮"; + // + // RbDefaultButton3 + // + this.RbDefaultButton3.AutoSize = true; + this.RbDefaultButton3.Location = new System.Drawing.Point(15, 87); + this.RbDefaultButton3.Name = "RbDefaultButton3"; + this.RbDefaultButton3.Size = new System.Drawing.Size(59, 16); + this.RbDefaultButton3.TabIndex = 2; + this.RbDefaultButton3.Text = "第三个"; + this.RbDefaultButton3.UseVisualStyleBackColor = true; + // + // RbDefaultButton2 + // + this.RbDefaultButton2.AutoSize = true; + this.RbDefaultButton2.Location = new System.Drawing.Point(15, 54); + this.RbDefaultButton2.Name = "RbDefaultButton2"; + this.RbDefaultButton2.Size = new System.Drawing.Size(59, 16); + this.RbDefaultButton2.TabIndex = 1; + this.RbDefaultButton2.Text = "第二个"; + this.RbDefaultButton2.UseVisualStyleBackColor = true; + // + // RbDefaultButton1 + // + this.RbDefaultButton1.AutoSize = true; + this.RbDefaultButton1.Checked = true; + this.RbDefaultButton1.Location = new System.Drawing.Point(15, 21); + this.RbDefaultButton1.Name = "RbDefaultButton1"; + this.RbDefaultButton1.Size = new System.Drawing.Size(59, 16); + this.RbDefaultButton1.TabIndex = 0; + this.RbDefaultButton1.TabStop = true; + this.RbDefaultButton1.Text = "第一个"; + this.RbDefaultButton1.UseVisualStyleBackColor = true; + // + // BtnCreate + // + this.BtnCreate.ForeColor = System.Drawing.Color.White; + this.BtnCreate.Location = new System.Drawing.Point(472, 431); + this.BtnCreate.Name = "BtnCreate"; + this.BtnCreate.Size = new System.Drawing.Size(81, 33); + this.BtnCreate.TabIndex = 7; + this.BtnCreate.Text = "生成"; + this.BtnCreate.UseVisualStyleBackColor = true; + this.BtnCreate.Click += new System.EventHandler(this.BtnCreate_Click); + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.radioButton6); + this.groupBox5.Location = new System.Drawing.Point(405, 233); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(148, 177); + this.groupBox5.TabIndex = 8; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "对话框风格"; + // + // radioButton6 + // + this.radioButton6.AutoSize = true; + this.radioButton6.Checked = true; + this.radioButton6.Location = new System.Drawing.Point(15, 24); + this.radioButton6.Name = "radioButton6"; + this.radioButton6.Size = new System.Drawing.Size(71, 16); + this.radioButton6.TabIndex = 0; + this.radioButton6.TabStop = true; + this.radioButton6.Text = "系统默认"; + this.radioButton6.UseVisualStyleBackColor = true; + // + // FrmMessageBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(565, 476); + this.Controls.Add(this.groupBox5); + this.Controls.Add(this.BtnCreate); + this.Controls.Add(this.groupBox7); + this.Controls.Add(this.groupBox6); + this.Controls.Add(this.GroupResult); + this.Controls.Add(this.groupBox4); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.MaximizeBox = false; + this.Name = "FrmMessageBox"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "对话框生成"; + this.Load += new System.EventHandler(this.FrmMessageBox_Load); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.GroupResult.ResumeLayout(false); + this.GroupResult.PerformLayout(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.groupBox7.ResumeLayout(false); + this.groupBox7.PerformLayout(); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.RadioButton RbIconError; + private System.Windows.Forms.RadioButton RbIconWarning; + private System.Windows.Forms.RadioButton RbIconQuestion; + private System.Windows.Forms.RadioButton RbIconInformation; + private System.Windows.Forms.RadioButton RbIconNone; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.CheckBox ChkTitleIsPram; + private ryControls.RyComboBox CbbTitle; + private System.Windows.Forms.GroupBox groupBox3; + private ryControls.TextBoxEx2 TxtContent; + private System.Windows.Forms.CheckBox ChkContentIsPram; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.RadioButton RbBtnAbortRetryIgnore; + private System.Windows.Forms.RadioButton RbBtnRetryCancel; + private System.Windows.Forms.RadioButton RbBtnYesNoCancel; + private System.Windows.Forms.RadioButton RbBtnYesNo; + private System.Windows.Forms.RadioButton RbBtnOKCancel; + private System.Windows.Forms.RadioButton RbBtnOK; + private System.Windows.Forms.GroupBox GroupResult; + private System.Windows.Forms.GroupBox groupBox6; + private System.Windows.Forms.CheckBox ChkTopMost; + private System.Windows.Forms.GroupBox groupBox7; + private System.Windows.Forms.RadioButton RbDefaultButton3; + private System.Windows.Forms.RadioButton RbDefaultButton2; + private System.Windows.Forms.RadioButton RbDefaultButton1; + private ryControls.ButtonEx BtnCreate; + private System.Windows.Forms.CheckBox ChkResultNo; + private System.Windows.Forms.CheckBox ChkResultYes; + private System.Windows.Forms.CheckBox ChkResultIgnore; + private System.Windows.Forms.CheckBox ChkResultRetry; + private System.Windows.Forms.CheckBox ChkResultAbort; + private System.Windows.Forms.CheckBox ChkResultCancel; + private System.Windows.Forms.CheckBox ChkResultOK; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.RadioButton radioButton6; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/FrmMessageBox.cs b/Source/开发辅助工具/FrmMessageBox.cs new file mode 100644 index 0000000..501ffc4 --- /dev/null +++ b/Source/开发辅助工具/FrmMessageBox.cs @@ -0,0 +1,238 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 开发辅助工具 +{ + public partial class FrmMessageBox : Form + { + public FrmMessageBox() + { + InitializeComponent(); + } + private void LoadPram() + { + ryCommon.Storage Stor = new ryCommon.Storage(); + Stor.LoadFromFile(Application.StartupPath+ "\\UserDb\\MessageBox.xml"); + Stor.SelectNodeBySet(); + CbbTitle.Text = Stor.GetAttrValue("Title"); + TxtContent.Text= Stor.GetAttrValue("Content"); + switch(Stor.GetAttrValue("Icon")) + { + case "MessageBoxIcon.None": + RbIconNone.Checked = true; + break; + case "MessageBoxIcon.Error": + RbIconError.Checked = true; + break; + case "MessageBoxIcon.Information": + RbIconInformation.Checked = true; + break; + case "MessageBoxIcon.Question": + RbIconQuestion.Checked = true; + break; + case "MessageBoxIcon.Warning": + RbIconWarning.Checked = true; + break; + } + switch (Stor.GetAttrValue("Btn")) + { + case "MessageBoxButtons.OK": + RbBtnOK.Checked = true; + break; + case "MessageBoxButtons.OKCancel": + RbBtnOKCancel.Checked = true; + break; + case "MessageBoxButtons.RetryCancel": + RbBtnRetryCancel.Checked = true; + break; + case "MessageBoxButtons.AbortRetryIgnore": + RbBtnAbortRetryIgnore.Checked = true; + break; + case "MessageBoxButtons.YesNo": + RbBtnYesNo.Checked = true; + break; + case "MessageBoxButtons.YesNoCancel": + RbBtnYesNoCancel.Checked = true; + break; + } + switch (Stor.GetAttrValue("Default_Btn")) + { + case "MessageBoxDefaultButton.Button1": + RbDefaultButton1.Checked = true; + break; + case "MessageBoxDefaultButton.Button2": + RbDefaultButton2.Checked = true; + break; + case "MessageBoxDefaultButton.Button3": + RbDefaultButton3.Checked = true; + break; + } + ChkTopMost.Checked = Stor.GetAttrValue("TopMost",false); + } + private void BtnCreate_Click(object sender, EventArgs e) + { + string title = CbbTitle.Text.Replace("\r","").Replace("\n", ""); + string content = TxtContent.Text.Replace("\r", "\\r").Replace("\n", "\\n").Replace("\"", "\\\""); + if(ChkTitleIsPram.Checked) + { + if (title == "") { MessageBox.Show("标题变量不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);return; } + if (!Strings.IsEngOrNum(title.Replace("_","")) || title.Substring(0,1).IsInt()) { MessageBox.Show("变量只能是英文、下横杠或数字,并且不能以数字开头", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + } + if (ChkContentIsPram.Checked) + { + if (content == "") { MessageBox.Show("文本信息变量不能为空", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + if (!Strings.IsEngOrNum(content.Replace("_", "")) || content.Substring(0, 1).IsInt()) { MessageBox.Show("文本信息只能是英文、下横杠或数字,并且不能以数字开头", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + } + MessageBoxButtons btn = MessageBoxButtons.OK; + MessageBoxIcon icon = MessageBoxIcon.None; + MessageBoxDefaultButton default_btn = MessageBoxDefaultButton.Button1; + MessageBoxOptions option = MessageBoxOptions.DefaultDesktopOnly; + List dg = new List() ; + string MessageBoxButtons_str = ""; + string MessageBoxIcon_str = ""; + string MessageBoxDefaultButton_str = ""; + string option_str = ""; + List DialogResult_str =new List(); + #region 对话框图标设置 + if (RbIconError.Checked) { icon = MessageBoxIcon.Error; MessageBoxIcon_str = "MessageBoxIcon.Error"; } + else if (RbIconInformation.Checked) { icon = MessageBoxIcon.Information; MessageBoxIcon_str = "MessageBoxIcon.Information"; } + else if (RbIconNone.Checked) { icon = MessageBoxIcon.None; MessageBoxIcon_str = "MessageBoxIcon.None"; } + else if (RbIconQuestion.Checked) { icon = MessageBoxIcon.Question; MessageBoxIcon_str = "MessageBoxIcon.Question"; } + else if (RbIconWarning.Checked) { icon = MessageBoxIcon.Warning; MessageBoxIcon_str = "MessageBoxIcon.Warning"; } + #endregion + #region 对话框按钮生成 + if (RbBtnOK.Checked) { btn = MessageBoxButtons.OK; MessageBoxButtons_str = "MessageBoxButtons.OK"; } + else if (RbBtnOKCancel.Checked) { btn = MessageBoxButtons.OKCancel; MessageBoxButtons_str = "MessageBoxButtons.OKCancel"; } + else if (RbBtnRetryCancel.Checked) { btn = MessageBoxButtons.RetryCancel; MessageBoxButtons_str = "MessageBoxButtons.RetryCancel"; } + else if (RbBtnAbortRetryIgnore.Checked) { btn = MessageBoxButtons.AbortRetryIgnore; MessageBoxButtons_str = "MessageBoxButtons.AbortRetryIgnore"; } + else if (RbBtnYesNo.Checked) { btn = MessageBoxButtons.YesNo; MessageBoxButtons_str = "MessageBoxButtons.YesNo"; } + else if (RbBtnYesNoCancel.Checked) { btn = MessageBoxButtons.YesNoCancel; MessageBoxButtons_str = "MessageBoxButtons.YesNoCancel"; } + #endregion + #region 返回值 + if (ChkResultAbort.Checked && ChkResultAbort.Enabled) { dg.Add(DialogResult.Abort); DialogResult_str.Add("DialogResult.Abort"); } + if (ChkResultCancel.Checked && ChkResultCancel.Enabled) { dg.Add(DialogResult.Cancel); DialogResult_str.Add("DialogResult.Cancel"); } + if (ChkResultIgnore.Checked && ChkResultIgnore.Enabled) { dg.Add(DialogResult.Ignore); DialogResult_str.Add("DialogResult.Ignore"); } + if (ChkResultNo.Checked && ChkResultNo.Enabled) { dg.Add(DialogResult.No); DialogResult_str.Add("DialogResult.No"); } + if (ChkResultOK.Checked && ChkResultOK.Enabled) { dg.Add(DialogResult.OK); DialogResult_str.Add("DialogResult.OK"); } + if (ChkResultRetry.Checked && ChkResultRetry.Enabled) { dg.Add(DialogResult.Retry); DialogResult_str.Add("DialogResult.Retry"); } + if (ChkResultYes.Checked && ChkResultYes.Enabled) { dg.Add(DialogResult.Yes); DialogResult_str.Add("DialogResult.Yes"); } + #endregion + #region 默认按钮 + if (RbDefaultButton1.Checked) { default_btn = MessageBoxDefaultButton.Button1; MessageBoxDefaultButton_str = "MessageBoxDefaultButton.Button1"; } + else if (RbDefaultButton2.Checked) { default_btn = MessageBoxDefaultButton.Button2; MessageBoxDefaultButton_str = "MessageBoxDefaultButton.Button2"; } + else if (RbDefaultButton3.Checked) { default_btn = MessageBoxDefaultButton.Button3; MessageBoxDefaultButton_str = "MessageBoxDefaultButton.Button3"; } + #endregion + if (ChkTopMost.Checked) { option = MessageBoxOptions.DefaultDesktopOnly;option_str = "MessageBoxOptions.DefaultDesktopOnly"; } + MessageBox.Show(content.Replace("\\r","\r").Replace("\\n", "\n"), title, btn, icon, default_btn, option); + string create_str = "MessageBox.Show(\""+ content + "\",\""+ title + "\""; + if (ChkTitleIsPram.Checked && !ChkContentIsPram.Checked) + { + create_str = "MessageBox.Show(\"" + content + "\"," + title; + } + else if (!ChkTitleIsPram.Checked && ChkContentIsPram.Checked) + { + create_str = "MessageBox.Show(" + content + ",\"" + title + "\""; + } + else if (ChkTitleIsPram.Checked && ChkContentIsPram.Checked) + { + create_str = "MessageBox.Show(" + content + "," + title; + } + if(option_str != "") + { create_str += "," + MessageBoxButtons_str + "," + MessageBoxIcon_str + "," + MessageBoxDefaultButton_str + "," + option_str + ")"; } + else if (MessageBoxDefaultButton_str != "MessageBoxDefaultButton.Button1" && option_str == "") + { create_str += "," + MessageBoxButtons_str + "," + MessageBoxIcon_str + "," + MessageBoxDefaultButton_str + ")"; } + else if (MessageBoxDefaultButton_str == "MessageBoxDefaultButton.Button1" && option_str == "") + { create_str += "," + MessageBoxButtons_str + "," + MessageBoxIcon_str + ")"; } + else if (MessageBoxButtons_str == "MessageBoxButtons.OK" && MessageBoxIcon_str == "MessageBoxIcon.None" && MessageBoxDefaultButton_str == "MessageBoxDefaultButton.Button1" && option_str == "") + { create_str += ")"; } + else + { + { create_str += ")"; } + } + if (dg.Count == 0) { create_str += ";"; } + else + { + create_str = "switch(" + create_str + ")"; + create_str += "\r\n{"; + for (int i = 0; i < DialogResult_str.Count; i++) + { + create_str += "\r\n case "+ DialogResult_str[i]+ ":\r\n break;"; + } + create_str += "\r\n}"; + } + ryCommon.RyFiles.CopyToClip(create_str); + ryCommon.Storage Stor = new ryCommon.Storage(); + Stor.LoadFromFile(Application.StartupPath + "\\UserDb\\MessageBox.xml"); + Stor.SelectNodeBySet(); + Stor.SetAttrValue("Title", CbbTitle.Text); + Stor.SetAttrValue("Content", TxtContent.Text); + Stor.SetAttrValue("Icon",MessageBoxIcon_str); + Stor.SetAttrValue("Btn", MessageBoxButtons_str); + Stor.SetAttrValue("Default_Btn", MessageBoxDefaultButton_str); + Stor.SetAttrValue("TopMost", ChkTopMost.Checked); + Stor.SaveToFile(Application.StartupPath + "\\UserDb\\MessageBox.xml"); + this.DialogResult=DialogResult.OK; + } + private void InitResult() + { + for (int i = 0; i < GroupResult.Controls.Count; i++) + { + if (GroupResult.Controls[i] is CheckBox) + { + GroupResult.Controls[i].Enabled = false; + } + } + } + private void RbBtnOK_CheckedChanged(object sender, EventArgs e) + { + InitResult(); + } + + private void RbBtnOKCancel_CheckedChanged(object sender, EventArgs e) + { + InitResult(); + RadioButton rb_btn = (RadioButton)sender; + if (rb_btn.Checked) { ChkResultOK.Enabled = true;ChkResultCancel.Enabled = true; } + } + + private void RbBtnYesNo_CheckedChanged(object sender, EventArgs e) + { + InitResult(); + RadioButton rb_btn = (RadioButton)sender; + if (rb_btn.Checked) { ChkResultYes.Enabled = true; ChkResultNo.Enabled = true; } + } + + private void RbBtnYesNoCancel_CheckedChanged(object sender, EventArgs e) + { + InitResult(); + RadioButton rb_btn = (RadioButton)sender; + if (rb_btn.Checked) { ChkResultYes.Enabled = true; ChkResultNo.Enabled = true;ChkResultCancel.Enabled = true; } + } + + private void RbBtnRetryCancel_CheckedChanged(object sender, EventArgs e) + { + InitResult(); + RadioButton rb_btn = (RadioButton)sender; + if (rb_btn.Checked) { ChkResultRetry.Enabled = true; ChkResultCancel.Enabled = true; } + } + + private void RbBtnAbortRetryIgnore_CheckedChanged(object sender, EventArgs e) + { + InitResult(); + RadioButton rb_btn = (RadioButton)sender; + if (rb_btn.Checked) { ChkResultAbort.Enabled = true; ChkResultRetry.Enabled = true; ChkResultIgnore.Enabled = true; } + } + + private void FrmMessageBox_Load(object sender, EventArgs e) + { + LoadPram(); + } + } +} diff --git a/Source/开发辅助工具/FrmMessageBox.resx b/Source/开发辅助工具/FrmMessageBox.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/开发辅助工具/FrmMessageBox.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Globals.cs b/Source/开发辅助工具/Globals.cs new file mode 100644 index 0000000..0b22b43 --- /dev/null +++ b/Source/开发辅助工具/Globals.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Diagnostics; +using System.Drawing; + +namespace XmlPad +{ + public static class Globals + { + public static int InRange(int x, int lo, int hi) + { + Debug.Assert(lo <= hi); + return x < lo ? lo : (x > hi ? hi : x); + } + public static bool IsInRange(int x, int lo, int hi) + { + return (x >= lo) && (x <= hi); + } + public static Color HalfMix(Color one, Color two) + { + return Color.FromArgb( + (one.A + two.A) >> 1, + (one.R + two.R) >> 1, + (one.G + two.G) >> 1, + (one.B + two.B) >> 1); + } + } +} diff --git a/Source/开发辅助工具/Manager/ClsPY.cs b/Source/开发辅助工具/Manager/ClsPY.cs new file mode 100644 index 0000000..b6d0b7d --- /dev/null +++ b/Source/开发辅助工具/Manager/ClsPY.cs @@ -0,0 +1,497 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; + +namespace 开发辅助工具.Manager +{ + /// + /// 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的 + /// + public static class Chinese2Spell + { + #region 属性数据定义 + /// + /// 汉字的机内码数组 + /// + private static int[] pyValue = new int[] + { + -20319,-20317,-20304,-20295,-20292,-20283,-20265,-20257,-20242,-20230,-20051,-20036, + -20032,-20026,-20002,-19990,-19986,-19982,-19976,-19805,-19784,-19775,-19774,-19763, + -19756,-19751,-19746,-19741,-19739,-19728,-19725,-19715,-19540,-19531,-19525,-19515, + -19500,-19484,-19479,-19467,-19289,-19288,-19281,-19275,-19270,-19263,-19261,-19249, + -19243,-19242,-19238,-19235,-19227,-19224,-19218,-19212,-19038,-19023,-19018,-19006, + -19003,-18996,-18977,-18961,-18952,-18783,-18774,-18773,-18763,-18756,-18741,-18735, + -18731,-18722,-18710,-18697,-18696,-18526,-18518,-18501,-18490,-18478,-18463,-18448, + -18447,-18446,-18239,-18237,-18231,-18220,-18211,-18201,-18184,-18183, -18181,-18012, + -17997,-17988,-17970,-17964,-17961,-17950,-17947,-17931,-17928,-17922,-17759,-17752, + -17733,-17730,-17721,-17703,-17701,-17697,-17692,-17683,-17676,-17496,-17487,-17482, + -17468,-17454,-17433,-17427,-17417,-17202,-17185,-16983,-16970,-16942,-16915,-16733, + -16708,-16706,-16689,-16664,-16657,-16647,-16474,-16470,-16465,-16459,-16452,-16448, + -16433,-16429,-16427,-16423,-16419,-16412,-16407,-16403,-16401,-16393,-16220,-16216, + -16212,-16205,-16202,-16187,-16180,-16171,-16169,-16158,-16155,-15959,-15958,-15944, + -15933,-15920,-15915,-15903,-15889,-15878,-15707,-15701,-15681,-15667,-15661,-15659, + -15652,-15640,-15631,-15625,-15454,-15448,-15436,-15435,-15419,-15416,-15408,-15394, + -15385,-15377,-15375,-15369,-15363,-15362,-15183,-15180,-15165,-15158,-15153,-15150, + -15149,-15144,-15143,-15141,-15140,-15139,-15128,-15121,-15119,-15117,-15110,-15109, + -14941,-14937,-14933,-14930,-14929,-14928,-14926,-14922,-14921,-14914,-14908,-14902, + -14894,-14889,-14882,-14873,-14871,-14857,-14678,-14674,-14670,-14668,-14663,-14654, + -14645,-14630,-14594,-14429,-14407,-14399,-14384,-14379,-14368,-14355,-14353,-14345, + -14170,-14159,-14151,-14149,-14145,-14140,-14137,-14135,-14125,-14123,-14122,-14112, + -14109,-14099,-14097,-14094,-14092,-14090,-14087,-14083,-13917,-13914,-13910,-13907, + -13906,-13905,-13896,-13894,-13878,-13870,-13859,-13847,-13831,-13658,-13611,-13601, + -13406,-13404,-13400,-13398,-13395,-13391,-13387,-13383,-13367,-13359,-13356,-13343, + -13340,-13329,-13326,-13318,-13147,-13138,-13120,-13107,-13096,-13095,-13091,-13076, + -13068,-13063,-13060,-12888,-12875,-12871,-12860,-12858,-12852,-12849,-12838,-12831, + -12829,-12812,-12802,-12607,-12597,-12594,-12585,-12556,-12359,-12346,-12320,-12300, + -12120,-12099,-12089,-12074,-12067,-12058,-12039,-11867,-11861,-11847,-11831,-11798, + -11781,-11604,-11589,-11536,-11358,-11340,-11339,-11324,-11303,-11097,-11077,-11067, + -11055,-11052,-11045,-11041,-11038,-11024,-11020,-11019,-11018,-11014,-10838,-10832, + -10815,-10800,-10790,-10780,-10764,-10587,-10544,-10533,-10519,-10331,-10329,-10328, + -10322,-10315,-10309,-10307,-10296,-10281,-10274,-10270,-10262,-10260,-10256,-10254 + }; + /// + /// 机内码对应的拼音数组 + /// + private static string[] pyName = new string[] + { + "A","Ai","An","Ang","Ao","Ba","Bai","Ban","Bang","Bao","Bei","Ben", + "Beng","Bi","Bian","Biao","Bie","Bin","Bing","Bo","Bu","Ba","Cai","Can", + "Cang","Cao","Ce","Ceng","Cha","Chai","Chan","Chang","Chao","Che","Chen","Cheng", + "Chi","Chong","Chou","Chu","Chuai","Chuan","Chuang","Chui","Chun","Chuo","Ci","Cong", + "Cou","Cu","Cuan","Cui","Cun","Cuo","Da","Dai","Dan","Dang","Dao","De", + "Deng","Di","Dian","Diao","Die","Ding","Diu","Dong","Dou","Du","Duan","Dui", + "Dun","Duo","E","En","Er","Fa","Fan","Fang","Fei","Fen","Feng","Fo", + "Fou","Fu","Ga","Gai","Gan","Gang","Gao","Ge","Gei","Gen","Geng","Gong", + "Gou","Gu","Gua","Guai","Guan","Guang","Gui","Gun","Guo","Ha","Hai","Han", + "Hang","Hao","He","Hei","Hen","Heng","Hong","Hou","Hu","Hua","Huai","Huan", + "Huang","Hui","Hun","Huo","Ji","Jia","Jian","Jiang","Jiao","Jie","Jin","Jing", + "Jiong","Jiu","Ju","Juan","Jue","Jun","Ka","Kai","Kan","Kang","Kao","Ke", + "Ken","Keng","Kong","Kou","Ku","Kua","Kuai","Kuan","Kuang","Kui","Kun","Kuo", + "La","Lai","Lan","Lang","Lao","Le","Lei","Leng","Li","Lia","Lian","Liang", + "Liao","Lie","Lin","Ling","Liu","Long","Lou","Lu","Lv","Luan","Lue","Lun", + "Luo","Ma","Mai","Man","Mang","Mao","Me","Mei","Men","Meng","Mi","Mian", + "Miao","Mie","Min","Ming","Miu","Mo","Mou","Mu","Na","Nai","Nan","Nang", + "Nao","Ne","Nei","Nen","Neng","Ni","Nian","Niang","Niao","Nie","Nin","Ning", + "Niu","Nong","Nu","Nv","Nuan","Nue","Nuo","O","Ou","Pa","Pai","Pan", + "Pang","Pao","Pei","Pen","Peng","Pi","Pian","Piao","Pie","Pin","Ping","Po", + "Pu","Qi","Qia","Qian","Qiang","Qiao","Qie","Qin","Qing","Qiong","Qiu","Qu", + "Quan","Que","Qun","Ran","Rang","Rao","Re","Ren","Reng","Ri","Rong","Rou", + "Ru","Ruan","Rui","Run","Ruo","Sa","Sai","San","Sang","Sao","Se","Sen", + "Seng","Sha","Shai","Shan","Shang","Shao","She","Shen","Sheng","Shi","Shou","Shu", + "Shua","Shuai","Shuan","Shuang","Shui","Shun","Shuo","Si","Song","Sou","Su","Suan", + "Sui","Sun","Suo","Ta","Tai","Tan","Tang","Tao","Te","Teng","Ti","Tian", + "Tiao","Tie","Ting","Tong","Tou","Tu","Tuan","Tui","Tun","Tuo","Wa","Wai", + "Wan","Wang","Wei","Wen","Weng","Wo","Wu","Xi","Xia","Xian","Xiang","Xiao", + "Xie","Xin","Xing","Xiong","Xiu","Xu","Xuan","Xue","Xun","Ya","Yan","Yang", + "Yao","Ye","Yi","Yin","Ying","Yo","Yong","You","Yu","Yuan","Yue","Yun", + "Za", "Zai","Zan","Zang","Zao","Ze","Zei","Zen","Zeng","Zha","Zhai","Zhan", + "Zhang","Zhao","Zhe","Zhen","Zheng","Zhi","Zhong","Zhou","Zhu","Zhua","Zhuai","Zhuan", + "Zhuang","Zhui","Zhun","Zhuo","Zi","Zong","Zou","Zu","Zuan","Zui","Zun","Zuo" + }; + #endregion + #region 把汉字转换成拼音(全拼)无间隔符号 + /// + /// 把汉字转换成拼音(全拼) + /// + /// 汉字字符串 + /// 转换后的拼音(全拼)字符串 + public static string Convert(string hzString) + { + // 匹配中文字符 + Regex regex = new Regex("^[\\u4e00-\\u9fa5]$"); + byte[] array = new byte[2]; + string pyString = ""; + int chrAsc = 0; + int i1 = 0; + int i2 = 0; + char[] noWChar = hzString.ToCharArray(); + for (int j = 0; j < noWChar.Length; j++) + { + // 中文字符 + if (regex.IsMatch(noWChar[j].ToString())) + { + array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString()); + i1 = (short)(array[0]); + i2 = (short)(array[1]); + chrAsc = i1 * 256 + i2 - 65536; + if (chrAsc > 0 && chrAsc < 160) + { + pyString += noWChar[j]; + } + else + { + // 修正部分文字 + if (chrAsc == -9254) // 修正“圳”字 + pyString += "Zhen"; + else + { + for (int i = (pyValue.Length - 1); i >= 0; i--) + { + if (pyValue[i] <= chrAsc) + { + pyString += pyName[i]; + break; + } + } + } + } + } + // 非中文字符 + else + { + pyString += noWChar[j].ToString(); + } + } + return pyString; + } + #endregion + #region 把汉字转换成拼音(全拼) 用空格间隔 + /// + /// 把汉字转换成拼音(全拼) + /// + /// 汉字字符串 + /// 转换后的拼音(全拼)字符串 + public static string ConvertWithBlank(string hzString) + { + // 匹配中文字符 + Regex regex = new Regex("^[u4e00-u9fa5]$"); + byte[] array = new byte[2]; + string pyString = ""; + int chrAsc = 0; + int i1 = 0; + int i2 = 0; + char[] noWChar = hzString.ToCharArray(); + for (int j = 0; j < noWChar.Length; j++) + { + // 中文字符 + if (regex.IsMatch(noWChar[j].ToString())) + { + array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString()); + i1 = (short)(array[0]); + i2 = (short)(array[1]); + chrAsc = i1 * 256 + i2 - 65536; + if (chrAsc > 0 && chrAsc < 160) + { + pyString = pyString + " " + noWChar[j]; + } + else + { + // 修正部分文字 + if (chrAsc == -9254) // 修正“圳”字 + pyString = pyString + " " + "Zhen"; + else + { + for (int i = (pyValue.Length - 1); i >= 0; i--) + { + if (pyValue[i] <= chrAsc) + { + pyString = pyString + " " + pyName[i]; + break; + } + } + } + } + } + // 非中文字符 + else + { + pyString = pyString + " " + noWChar[j].ToString(); + } + } + return pyString.Trim(); + } + #endregion + #region 把汉字转换成拼音(全拼)无间隔符号 + /// + /// 把汉字转换成拼音(全拼) + /// + /// 汉字字符串 + /// 转换后的拼音(全拼)字符串 + public static string ConvertFirstPY(string hzString) + { + // 匹配中文字符 + Regex regex = new Regex("^[\\u4e00-\\u9fa5]$"); + byte[] array = new byte[2]; + string pyString = ""; + int chrAsc = 0; + int i1 = 0; + int i2 = 0; + char[] noWChar = hzString.ToCharArray(); + for (int j = 0; j < noWChar.Length; j++) + { + // 中文字符 + if (regex.IsMatch(noWChar[j].ToString())) + { + array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString()); + i1 = (short)(array[0]); + i2 = (short)(array[1]); + chrAsc = i1 * 256 + i2 - 65536; + if (chrAsc > 0 && chrAsc < 160) + { + pyString += noWChar[j]; + } + else + { + // 修正部分文字 + if (chrAsc == -9254) // 修正“圳”字 + pyString += "z"; + else + { + for (int i = (pyValue.Length - 1); i >= 0; i--) + { + if (pyValue[i] <= chrAsc) + { + pyString += pyName[i].Substring(0,1); + break; + } + } + } + } + } + // 非中文字符 + else + { + pyString += noWChar[j].ToString(); + } + } + return pyString; + } + #endregion + #region 把汉字转换成拼音(全拼) 用特定的字符间隔 + /// + /// 把汉字转换成拼音(全拼) + /// + /// 汉字字符串 + /// 转换后的拼音(全拼)字符串 + public static string ConvertWithSplitChar(string hzString, string splitChar) + { + // 匹配中文字符 + Regex regex = new Regex("^[\\u4e00-\\u9fa5]$"); + byte[] array = new byte[2]; + string pyString = ""; + int chrAsc = 0; + int i1 = 0; + int i2 = 0; + char[] noWChar = hzString.ToCharArray(); + for (int j = 0; j < noWChar.Length; j++) + { + // 中文字符 + if (regex.IsMatch(noWChar[j].ToString())) + { + array = System.Text.Encoding.Default.GetBytes(noWChar[j].ToString()); + i1 = (short)(array[0]); + i2 = (short)(array[1]); + chrAsc = i1 * 256 + i2 - 65536; + if (chrAsc > 0 && chrAsc < 160) + { + pyString = pyString + splitChar + noWChar[j]; + } + else + { + // 修正部分文字 + if (chrAsc == -9254) // 修正“圳”字 + pyString = pyString + splitChar + "Zhen"; + else + { + for (int i = (pyValue.Length - 1); i >= 0; i--) + { + if (pyValue[i] <= chrAsc) + { + pyString = pyString + splitChar + pyName[i]; + break; + } + } + } + } + } + // 非中文字符 + else + { + pyString = pyString + splitChar + noWChar[j].ToString(); + } + } + char[] trimAChar = splitChar.ToCharArray(); + return pyString.TrimStart(trimAChar); + } + #endregion + #region 汉字转拼音缩写 (字符串) (小写) + /// + /// 汉字转拼音缩写 + /// + /// 要转换的汉字字符串 + /// 拼音缩写 + public static string GetSpellStringLower(string str) + { + string tempStr = ""; + foreach (char c in str) + { + if ((int)c >= 33 && (int)c <= 126) + { + //字母和符号原样保留 + tempStr += c.ToString(); + } + else + { + //累加拼音声母 + tempStr += GetSpellCharLower(c.ToString()); + } + } + return tempStr; + } + #endregion + + #region 汉字转拼音缩写 (字符串) (小写) (空格间隔) + /// + /// 汉字转拼音缩写 (字符串) (小写) (空格间隔) + /// + /// 要转换的汉字字符串 + /// 拼音缩写 + public static string GetSpellStringLowerSplitWithBlank(string str) + { + string tempStr = ""; + foreach (char c in str) + { + if ((int)c >= 33 && (int)c <= 126) + { + //字母和符号原样保留 + tempStr = tempStr + " " + c.ToString(); + } + else + { + //累加拼音声母 + tempStr = tempStr + " " + GetSpellCharLower(c.ToString()); + } + } + return tempStr.Trim(); + } + #endregion + #region 汉字转拼音缩写 (字符串)(大写) + /// + /// 汉字转拼音缩写 (大写) + /// + /// 要转换的汉字字符串 + /// 拼音缩写 + public static string GetSpellStringSupper(string str) + { + string tempStr = ""; + foreach (char c in str) + { + if ((int)c >= 33 && (int)c <= 126) + { + //字母和符号原样保留 + tempStr += c.ToString(); + } + else + { + //累加拼音声母 + tempStr += GetSpellCharSupper(c.ToString()); + } + } + return tempStr; + } + #endregion + #region 汉字转拼音缩写 (字符串)(大写)(空格间隔) + /// + /// 汉字转拼音缩写 (字符串)(大写)(空格间隔) + /// + /// 要转换的汉字字符串 + /// 拼音缩写 + public static string GetSpellStringSupperSplitWithBlank(string str) + { + string tempStr = ""; + foreach (char c in str) + { + if ((int)c >= 33 && (int)c <= 126) + { + //字母和符号原样保留 + tempStr = tempStr + " " + c.ToString(); + } + else + { + //累加拼音声母 + tempStr = tempStr + " " + GetSpellCharSupper(c.ToString()); + } + } + return tempStr.Trim(); + } + #endregion + #region 取单个字符的拼音声母(字符)(大写) + /// + /// 取单个字符的拼音声母 + /// + /// 要转换的单个汉字 + /// 拼音声母 + public static string GetSpellCharSupper(string c) + { + byte[] array = new byte[2]; + array = System.Text.Encoding.Default.GetBytes(c); + int i = (short)(array[0] - '0') * 256 + ((short)(array[1] - '0')); + if (i < 0xB0A1) return c; + if (i < 0xB0C5) return "A"; + if (i < 0xB2C1) return "B"; + if (i < 0xB4EE) return "C"; + if (i < 0xB6EA) return "D"; + if (i < 0xB7A2) return "E"; + if (i < 0xB8C1) return "F"; + if (i < 0xB9FE) return "G"; + if (i < 0xBBF7) return "H"; + if (i < 0xBFA6) return "J"; + if (i < 0xC0AC) return "K"; + if (i < 0xC2E8) return "L"; + if (i < 0xC4C3) return "M"; + if (i < 0xC5B6) return "N"; + if (i < 0xC5BE) return "O"; + if (i < 0xC6DA) return "P"; + if (i < 0xC8BB) return "Q"; + if (i < 0xC8F6) return "R"; + if (i < 0xCBFA) return "S"; + if (i < 0xCDDA) return "T"; + if (i < 0xCEF4) return "W"; + if (i < 0xD1B9) return "X"; + if (i < 0xD4D1) return "Y"; + if (i < 0xD7FA) return "Z"; + return c; + } + #endregion + #region 取单个字符的拼音声母(字符)(小写) + /// + /// 取单个字符的拼音声母 + /// + /// 要转换的单个汉字 + /// 拼音声母 + public static string GetSpellCharLower(string c) + { + byte[] array = new byte[2]; + array = System.Text.Encoding.Default.GetBytes(c); + if (array.Length <= 1) { return ""; } + int i = (short)(array[0] - '0') * 256 + ((short)(array[1] - '0')); + if (i < 0xB0A1) return c; + if (i < 0xB0C5) return "a"; + if (i < 0xB2C1) return "b"; + if (i < 0xB4EE) return "c"; + if (i < 0xB6EA) return "d"; + if (i < 0xB7A2) return "e"; + if (i < 0xB8C1) return "f"; + if (i < 0xB9FE) return "g"; + if (i < 0xBBF7) return "h"; + if (i < 0xBFA6) return "j"; + if (i < 0xC0AC) return "k"; + if (i < 0xC2E8) return "l"; + if (i < 0xC4C3) return "m"; + if (i < 0xC5B6) return "n"; + if (i < 0xC5BE) return "o"; + if (i < 0xC6DA) return "p"; + if (i < 0xC8BB) return "q"; + if (i < 0xC8F6) return "r"; + if (i < 0xCBFA) return "s"; + if (i < 0xCDDA) return "t"; + if (i < 0xCEF4) return "w"; + if (i < 0xD1B9) return "x"; + if (i < 0xD4D1) return "y"; + if (i < 0xD7FA) return "z"; + return c; + } + #endregion + } +} diff --git a/Source/开发辅助工具/Manager/FrmAddTools.Designer.cs b/Source/开发辅助工具/Manager/FrmAddTools.Designer.cs new file mode 100644 index 0000000..ef6d68b --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmAddTools.Designer.cs @@ -0,0 +1,245 @@ +namespace 开发辅助工具.Manager +{ + partial class FrmAddTools + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.label1 = new System.Windows.Forms.Label(); + this.TxtName = new ryControls.TextBoxEx2(); + this.TxtToolAddr = new ryControls.TextBoxEx2(); + this.label2 = new System.Windows.Forms.Label(); + this.TxtToolDes = new ryControls.TextBoxEx2(); + this.label3 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.TxtKeys = new ryControls.TextBoxEx2(); + this.btnCancel = new ryControls.ButtonEx(); + this.btnOK = new ryControls.ButtonEx(); + this.label5 = new System.Windows.Forms.Label(); + this.numericUpDownEx1 = new ryControls.NumericUpDownEx(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEx1)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(14, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 0; + this.label1.Text = "工具名称"; + // + // TxtName + // + this.TxtName.BackColor = System.Drawing.Color.White; + this.TxtName.EmptyText = ""; + this.TxtName.Location = new System.Drawing.Point(14, 27); + this.TxtName.MaxLength = 999999999; + this.TxtName.Multiline = false; + this.TxtName.Name = "TxtName"; + this.TxtName.OnlyNumeric = false; + this.TxtName.PasswordChar = '\0'; + this.TxtName.ReadOnly = false; + this.TxtName.SelectedText = ""; + this.TxtName.SelectionLength = 0; + this.TxtName.SelectionStart = 0; + this.TxtName.Size = new System.Drawing.Size(344, 24); + this.TxtName.TabIndex = 1; + this.TxtName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtName.ToolTip = ""; + // + // TxtToolAddr + // + this.TxtToolAddr.BackColor = System.Drawing.Color.White; + this.TxtToolAddr.EmptyText = ""; + this.TxtToolAddr.Location = new System.Drawing.Point(16, 74); + this.TxtToolAddr.MaxLength = 999999999; + this.TxtToolAddr.Multiline = false; + this.TxtToolAddr.Name = "TxtToolAddr"; + this.TxtToolAddr.OnlyNumeric = false; + this.TxtToolAddr.PasswordChar = '\0'; + this.TxtToolAddr.ReadOnly = false; + this.TxtToolAddr.SelectedText = ""; + this.TxtToolAddr.SelectionLength = 0; + this.TxtToolAddr.SelectionStart = 0; + this.TxtToolAddr.Size = new System.Drawing.Size(430, 24); + this.TxtToolAddr.TabIndex = 3; + this.TxtToolAddr.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtToolAddr.ToolTip = ""; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(16, 56); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 2; + this.label2.Text = "工具地址"; + // + // TxtToolDes + // + this.TxtToolDes.BackColor = System.Drawing.Color.White; + this.TxtToolDes.EmptyText = ""; + this.TxtToolDes.Location = new System.Drawing.Point(16, 118); + this.TxtToolDes.MaxLength = 999999999; + this.TxtToolDes.Multiline = false; + this.TxtToolDes.Name = "TxtToolDes"; + this.TxtToolDes.OnlyNumeric = false; + this.TxtToolDes.PasswordChar = '\0'; + this.TxtToolDes.ReadOnly = false; + this.TxtToolDes.SelectedText = ""; + this.TxtToolDes.SelectionLength = 0; + this.TxtToolDes.SelectionStart = 0; + this.TxtToolDes.Size = new System.Drawing.Size(430, 24); + this.TxtToolDes.TabIndex = 5; + this.TxtToolDes.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtToolDes.ToolTip = ""; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(16, 100); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 4; + this.label3.Text = "工具备注"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(16, 145); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(41, 12); + this.label4.TabIndex = 6; + this.label4.Text = "关键词"; + // + // TxtKeys + // + this.TxtKeys.BackColor = System.Drawing.Color.White; + this.TxtKeys.EmptyText = ""; + this.TxtKeys.Location = new System.Drawing.Point(16, 160); + this.TxtKeys.MaxLength = 999999999; + this.TxtKeys.Multiline = false; + this.TxtKeys.Name = "TxtKeys"; + this.TxtKeys.OnlyNumeric = false; + this.TxtKeys.PasswordChar = '\0'; + this.TxtKeys.ReadOnly = false; + this.TxtKeys.SelectedText = ""; + this.TxtKeys.SelectionLength = 0; + this.TxtKeys.SelectionStart = 0; + this.TxtKeys.Size = new System.Drawing.Size(430, 24); + this.TxtKeys.TabIndex = 7; + this.TxtKeys.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtKeys.ToolTip = ""; + // + // btnCancel + // + this.btnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnCancel.ForeColor = System.Drawing.Color.White; + this.btnCancel.Location = new System.Drawing.Point(383, 323); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(65, 27); + this.btnCancel.TabIndex = 9; + this.btnCancel.Text = "取消"; + this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // btnOK + // + this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnOK.ForeColor = System.Drawing.Color.White; + this.btnOK.Location = new System.Drawing.Point(312, 323); + this.btnOK.Name = "btnOK"; + this.btnOK.Size = new System.Drawing.Size(65, 27); + this.btnOK.TabIndex = 8; + this.btnOK.Text = "确定"; + this.btnOK.UseVisualStyleBackColor = true; + this.btnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(362, 9); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(29, 12); + this.label5.TabIndex = 10; + this.label5.Text = "排序"; + // + // numericUpDownEx1 + // + this.numericUpDownEx1.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.numericUpDownEx1.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.numericUpDownEx1.Location = new System.Drawing.Point(364, 28); + this.numericUpDownEx1.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.numericUpDownEx1.Name = "numericUpDownEx1"; + this.numericUpDownEx1.Size = new System.Drawing.Size(81, 22); + this.numericUpDownEx1.TabIndex = 11; + // + // FrmAddTools + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(456, 362); + this.Controls.Add(this.numericUpDownEx1); + this.Controls.Add(this.label5); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnOK); + this.Controls.Add(this.TxtKeys); + this.Controls.Add(this.label4); + this.Controls.Add(this.TxtToolDes); + this.Controls.Add(this.label3); + this.Controls.Add(this.TxtToolAddr); + this.Controls.Add(this.label2); + this.Controls.Add(this.TxtName); + this.Controls.Add(this.label1); + this.Name = "FrmAddTools"; + this.Text = "添加工具"; + ((System.ComponentModel.ISupportInitialize)(this.numericUpDownEx1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 TxtName; + private ryControls.TextBoxEx2 TxtToolAddr; + private System.Windows.Forms.Label label2; + private ryControls.TextBoxEx2 TxtToolDes; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private ryControls.TextBoxEx2 TxtKeys; + private ryControls.ButtonEx btnCancel; + private ryControls.ButtonEx btnOK; + private System.Windows.Forms.Label label5; + private ryControls.NumericUpDownEx numericUpDownEx1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/FrmAddTools.cs b/Source/开发辅助工具/Manager/FrmAddTools.cs new file mode 100644 index 0000000..fd0ab2e --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmAddTools.cs @@ -0,0 +1,85 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 开发辅助工具.Manager +{ + public partial class FrmAddTools : Form + { + public FrmAddTools() + { + InitializeComponent(); + } + public ModalForm mr = null; + public string tableName = "Tools"; + public int isAdd = 1; + public string selectId = "-1"; + + private void BtnCancel_Click(object sender, EventArgs e) + { + ModalForm.SetDialogResult(this, mr, DialogResult.Cancel); + } + + #region 需要修改 + public void GetInfo(string id) + { + selectId = id; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + DataSet ds = db.ReadData(tableName, id); + if (mydb.HaveData(ds)) + { + DataRow reader = ds.Tables[0].Rows[0]; + #region 读取信息 + TxtName.Text = reader["Name"].ToString(); + TxtKeys.Text = reader["Keys"].ToString(); + TxtToolAddr.Text = reader["Addr"].ToString(); + TxtToolDes.Text = reader["Des"].ToString(); + numericUpDownEx1.Value = reader["Sort"].ToDecimal(); + #endregion + } + } + db.Free(); + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if (TxtName.Text == "") + { + MessageBox.Show("名称不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + RyQuickSQL mySQL = new RyQuickSQL(tableName); + mySQL.AddField("Name", TxtName.Text); + mySQL.AddField("Keys", TxtKeys.Text); + mySQL.AddField("Addr", TxtToolAddr.Text); + mySQL.AddField("Des", TxtToolDes.Text); + mySQL.AddField("Sort", numericUpDownEx1.Value.ToInt()); + mySQL.AddField("PY", Chinese2Spell.Convert(TxtName.Text + "\n" + TxtKeys.Text)+"\n"+ Chinese2Spell.ConvertFirstPY(TxtName.Text + "\n" + TxtKeys.Text)); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + if (isAdd >= 1) + { + db.ExecuteNonQuery(mySQL.GetInsertSQL(), db.GetParameter(mySQL)); + } + else + { + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + selectId, db.GetParameter(mySQL)); + } + } + ModalForm.SetDialogResult(this, mr, DialogResult.OK); + } + #endregion + } +} diff --git a/Source/开发辅助工具/Manager/FrmAddTools.resx b/Source/开发辅助工具/Manager/FrmAddTools.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmAddTools.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/FrmSetting.Designer.cs b/Source/开发辅助工具/Manager/FrmSetting.Designer.cs new file mode 100644 index 0000000..a74ad8f --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmSetting.Designer.cs @@ -0,0 +1,344 @@ +namespace 开发辅助工具.Manager +{ + partial class FrmSetting + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.BtnWinRARPath = new ryControls.ButtonEx(); + this.TxtWinRARPath = new ryControls.TextBoxEx2(); + this.label4 = new System.Windows.Forms.Label(); + this.BtnReactorPath = new ryControls.ButtonEx(); + this.TxtReactorPath = new ryControls.TextBoxEx2(); + this.label3 = new System.Windows.Forms.Label(); + this.TxtReferenceDll = new ryControls.TextBoxEx2(); + this.label2 = new System.Windows.Forms.Label(); + this.BtnChapeBasePath = new ryControls.ButtonEx(); + this.TxtCshapeBasePath = new ryControls.TextBoxEx2(); + this.label1 = new System.Windows.Forms.Label(); + this.BtnOK = new ryControls.ButtonEx(); + this.BtnCancel = new ryControls.ButtonEx(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.ChkAss_Ryp = new System.Windows.Forms.CheckBox(); + this.ChkAss_Folder = new System.Windows.Forms.CheckBox(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(3, 2); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(606, 399); + this.tabControl1.TabIndex = 0; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.BtnWinRARPath); + this.tabPage1.Controls.Add(this.TxtWinRARPath); + this.tabPage1.Controls.Add(this.label4); + this.tabPage1.Controls.Add(this.BtnReactorPath); + this.tabPage1.Controls.Add(this.TxtReactorPath); + this.tabPage1.Controls.Add(this.label3); + this.tabPage1.Controls.Add(this.TxtReferenceDll); + this.tabPage1.Controls.Add(this.label2); + this.tabPage1.Controls.Add(this.BtnChapeBasePath); + this.tabPage1.Controls.Add(this.TxtCshapeBasePath); + this.tabPage1.Controls.Add(this.label1); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(598, 373); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "路径"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // BtnWinRARPath + // + this.BtnWinRARPath.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnWinRARPath.Location = new System.Drawing.Point(515, 321); + this.BtnWinRARPath.Name = "BtnWinRARPath"; + this.BtnWinRARPath.Size = new System.Drawing.Size(69, 27); + this.BtnWinRARPath.TabIndex = 10; + this.BtnWinRARPath.Text = "浏览"; + this.BtnWinRARPath.UseVisualStyleBackColor = true; + this.BtnWinRARPath.Click += new System.EventHandler(this.BtnWinRARPath_Click); + // + // TxtWinRARPath + // + this.TxtWinRARPath.BackColor = System.Drawing.Color.White; + this.TxtWinRARPath.EmptyText = ""; + this.TxtWinRARPath.Location = new System.Drawing.Point(14, 321); + this.TxtWinRARPath.MaxLength = 999999999; + this.TxtWinRARPath.Multiline = false; + this.TxtWinRARPath.Name = "TxtWinRARPath"; + this.TxtWinRARPath.OnlyNumeric = false; + this.TxtWinRARPath.PasswordChar = '\0'; + this.TxtWinRARPath.ReadOnly = false; + this.TxtWinRARPath.SelectedText = ""; + this.TxtWinRARPath.SelectionLength = 0; + this.TxtWinRARPath.SelectionStart = 0; + this.TxtWinRARPath.Size = new System.Drawing.Size(495, 27); + this.TxtWinRARPath.TabIndex = 9; + this.TxtWinRARPath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtWinRARPath.ToolTip = ""; + this.toolTip1.SetToolTip(this.TxtWinRARPath, ".NET Reactor 主程序exe的具体路径"); + this.TxtWinRARPath.WordWrap = true; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 306); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(101, 12); + this.label4.TabIndex = 8; + this.label4.Text = "WinRAR主程序路径"; + // + // BtnReactorPath + // + this.BtnReactorPath.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnReactorPath.Location = new System.Drawing.Point(515, 272); + this.BtnReactorPath.Name = "BtnReactorPath"; + this.BtnReactorPath.Size = new System.Drawing.Size(69, 27); + this.BtnReactorPath.TabIndex = 7; + this.BtnReactorPath.Text = "浏览"; + this.BtnReactorPath.UseVisualStyleBackColor = true; + this.BtnReactorPath.Click += new System.EventHandler(this.BtnReactorPath_Click); + // + // TxtReactorPath + // + this.TxtReactorPath.BackColor = System.Drawing.Color.White; + this.TxtReactorPath.EmptyText = ""; + this.TxtReactorPath.Location = new System.Drawing.Point(14, 272); + this.TxtReactorPath.MaxLength = 999999999; + this.TxtReactorPath.Multiline = false; + this.TxtReactorPath.Name = "TxtReactorPath"; + this.TxtReactorPath.OnlyNumeric = false; + this.TxtReactorPath.PasswordChar = '\0'; + this.TxtReactorPath.ReadOnly = false; + this.TxtReactorPath.SelectedText = ""; + this.TxtReactorPath.SelectionLength = 0; + this.TxtReactorPath.SelectionStart = 0; + this.TxtReactorPath.Size = new System.Drawing.Size(495, 27); + this.TxtReactorPath.TabIndex = 6; + this.TxtReactorPath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtReactorPath.ToolTip = ""; + this.toolTip1.SetToolTip(this.TxtReactorPath, ".NET Reactor 主程序exe的具体路径"); + this.TxtReactorPath.WordWrap = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 257); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(143, 12); + this.label3.TabIndex = 5; + this.label3.Text = ".NET Reactor 主程序路径"; + // + // TxtReferenceDll + // + this.TxtReferenceDll.BackColor = System.Drawing.Color.White; + this.TxtReferenceDll.EmptyText = ""; + this.TxtReferenceDll.Location = new System.Drawing.Point(14, 69); + this.TxtReferenceDll.MaxLength = 999999999; + this.TxtReferenceDll.Multiline = true; + this.TxtReferenceDll.Name = "TxtReferenceDll"; + this.TxtReferenceDll.OnlyNumeric = false; + this.TxtReferenceDll.PasswordChar = '\0'; + this.TxtReferenceDll.ReadOnly = false; + this.TxtReferenceDll.SelectedText = ""; + this.TxtReferenceDll.SelectionLength = 0; + this.TxtReferenceDll.SelectionStart = 0; + this.TxtReferenceDll.Size = new System.Drawing.Size(570, 181); + this.TxtReferenceDll.TabIndex = 4; + this.TxtReferenceDll.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtReferenceDll.ToolTip = ""; + this.toolTip1.SetToolTip(this.TxtReferenceDll, "每行一个路径,软件将自动从上往下搜索"); + this.TxtReferenceDll.WordWrap = true; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 54); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(89, 12); + this.label2.TabIndex = 3; + this.label2.Text = "C# 引用dll路径"; + // + // BtnChapeBasePath + // + this.BtnChapeBasePath.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnChapeBasePath.Location = new System.Drawing.Point(515, 22); + this.BtnChapeBasePath.Name = "BtnChapeBasePath"; + this.BtnChapeBasePath.Size = new System.Drawing.Size(69, 27); + this.BtnChapeBasePath.TabIndex = 2; + this.BtnChapeBasePath.Text = "浏览"; + this.BtnChapeBasePath.UseVisualStyleBackColor = true; + this.BtnChapeBasePath.Click += new System.EventHandler(this.BtnChapeBasePath_Click); + // + // TxtCshapeBasePath + // + this.TxtCshapeBasePath.BackColor = System.Drawing.Color.White; + this.TxtCshapeBasePath.EmptyText = ""; + this.TxtCshapeBasePath.Location = new System.Drawing.Point(14, 22); + this.TxtCshapeBasePath.MaxLength = 999999999; + this.TxtCshapeBasePath.Multiline = false; + this.TxtCshapeBasePath.Name = "TxtCshapeBasePath"; + this.TxtCshapeBasePath.OnlyNumeric = false; + this.TxtCshapeBasePath.PasswordChar = '\0'; + this.TxtCshapeBasePath.ReadOnly = false; + this.TxtCshapeBasePath.SelectedText = ""; + this.TxtCshapeBasePath.SelectionLength = 0; + this.TxtCshapeBasePath.SelectionStart = 0; + this.TxtCshapeBasePath.Size = new System.Drawing.Size(495, 27); + this.TxtCshapeBasePath.TabIndex = 1; + this.TxtCshapeBasePath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtCshapeBasePath.ToolTip = ""; + this.toolTip1.SetToolTip(this.TxtCshapeBasePath, "以该项目为基准,自动生成符合毕方项目标准的项目。"); + this.TxtCshapeBasePath.WordWrap = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 7); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(95, 12); + this.label1.TabIndex = 0; + this.label1.Text = "C# 基准项目路径"; + // + // BtnOK + // + this.BtnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.BtnOK.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnOK.Location = new System.Drawing.Point(449, 403); + this.BtnOK.Name = "BtnOK"; + this.BtnOK.Size = new System.Drawing.Size(75, 30); + this.BtnOK.TabIndex = 1; + this.BtnOK.Text = "确定"; + this.BtnOK.UseVisualStyleBackColor = true; + this.BtnOK.Click += new System.EventHandler(this.BtnOK_Click); + // + // BtnCancel + // + this.BtnCancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.BtnCancel.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnCancel.Location = new System.Drawing.Point(530, 403); + this.BtnCancel.Name = "BtnCancel"; + this.BtnCancel.Size = new System.Drawing.Size(75, 30); + this.BtnCancel.TabIndex = 2; + this.BtnCancel.Text = "取消"; + this.BtnCancel.UseVisualStyleBackColor = true; + this.BtnCancel.Click += new System.EventHandler(this.BtnCancel_Click); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.ChkAss_Folder); + this.tabPage2.Controls.Add(this.ChkAss_Ryp); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(598, 373); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "基本"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // ChkAss_Ryp + // + this.ChkAss_Ryp.AutoSize = true; + this.ChkAss_Ryp.Location = new System.Drawing.Point(29, 18); + this.ChkAss_Ryp.Name = "ChkAss_Ryp"; + this.ChkAss_Ryp.Size = new System.Drawing.Size(114, 16); + this.ChkAss_Ryp.TabIndex = 0; + this.ChkAss_Ryp.Text = "关联ryp文件格式"; + this.ChkAss_Ryp.UseVisualStyleBackColor = true; + // + // ChkAss_Folder + // + this.ChkAss_Folder.AutoSize = true; + this.ChkAss_Folder.Location = new System.Drawing.Point(29, 40); + this.ChkAss_Folder.Name = "ChkAss_Folder"; + this.ChkAss_Folder.Size = new System.Drawing.Size(132, 16); + this.ChkAss_Folder.TabIndex = 1; + this.ChkAss_Folder.Text = "关联文件夹右键菜单"; + this.ChkAss_Folder.UseVisualStyleBackColor = true; + // + // FrmSetting + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(612, 440); + this.Controls.Add(this.BtnCancel); + this.Controls.Add(this.BtnOK); + this.Controls.Add(this.tabControl1); + this.Name = "FrmSetting"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "设置"; + this.Load += new System.EventHandler(this.FrmSetting_Load); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage1.PerformLayout(); + this.tabPage2.ResumeLayout(false); + this.tabPage2.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private ryControls.ButtonEx BtnChapeBasePath; + private ryControls.TextBoxEx2 TxtCshapeBasePath; + private System.Windows.Forms.Label label1; + private ryControls.ButtonEx BtnOK; + private ryControls.ButtonEx BtnCancel; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private System.Windows.Forms.ToolTip toolTip1; + private ryControls.TextBoxEx2 TxtReferenceDll; + private System.Windows.Forms.Label label2; + private ryControls.ButtonEx BtnReactorPath; + private ryControls.TextBoxEx2 TxtReactorPath; + private System.Windows.Forms.Label label3; + private ryControls.ButtonEx BtnWinRARPath; + private ryControls.TextBoxEx2 TxtWinRARPath; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.CheckBox ChkAss_Folder; + private System.Windows.Forms.CheckBox ChkAss_Ryp; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/FrmSetting.cs b/Source/开发辅助工具/Manager/FrmSetting.cs new file mode 100644 index 0000000..86c5820 --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmSetting.cs @@ -0,0 +1,197 @@ +using Microsoft.Win32; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 开发辅助工具.Manager +{ + public partial class FrmSetting : Form + { + public FrmSetting() + { + InitializeComponent(); + } + + private void BtnChapeBasePath_Click(object sender, EventArgs e) + { + folderBrowserDialog1.SelectedPath = TxtCshapeBasePath.Text; + if (folderBrowserDialog1.ShowDialog()==DialogResult.OK) + { + TxtCshapeBasePath.Text = folderBrowserDialog1.SelectedPath; + } + } + + private void BtnCancel_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + } + + private void BtnOK_Click(object sender, EventArgs e) + { + if(ChkAss_Ryp.Checked) + { + SetFileAssociation(".ryp", "ryUSQ", "用睿元开发助手打开", Application.ExecutablePath); + } + else { DelFileAssociation(".ryp", "ryUSQ"); } + if(ChkAss_Folder.Checked) + { + SetFileAssociation("folder", "ryUSQ", "用睿元开发助手打开", Application.ExecutablePath); + } + else { DelFileAssociation("folder", "ryUSQ"); } + ryCommon.Storage mStor = new ryCommon.Storage(); + mStor.SelectNodeBySet(); + mStor.SetAttrValue("CshapeBasePath", TxtCshapeBasePath.Text); + mStor.SetAttrValue("ReferenceDll", TxtReferenceDll.Text); + mStor.SetAttrValue("ReactorPath", TxtReactorPath.Text); + mStor.SetAttrValue("WinRARPath", TxtWinRARPath.Text); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + RyQuickSQL mySQL = new RyQuickSQL("Settings"); + mySQL.AddField("name","Setting"); + mySQL.AddField("value", mStor.XMLText); + if(db.ExecuteNonQuery(mySQL.GetUpdateSQL()+ " where name='Setting'",mySQL)==0) + { + db.ExecuteNonQuery(mySQL.GetInsertSQL(),mySQL); + } + } + db.Free(); + DialogResult = DialogResult.OK; + } + /// + /// 设置文件关联 + /// + /// + public bool SetFileAssociation(string ExtName, string sName, string AssDes,string filePath) + { + try + { + RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot,RegistryView.Registry32); + RegistryKey softwareRun = LRoot.OpenSubKey(ExtName + @"\shell\"+sName, true); + if (softwareRun == null) { softwareRun = LRoot.CreateSubKey(ExtName + @"\shell\" + sName); } + softwareRun.SetValue("", AssDes, RegistryValueKind.String); + var Command= softwareRun.OpenSubKey("command",true); + if (Command == null) { Command = softwareRun.CreateSubKey("command"); } + Command.SetValue("","\""+ filePath+"\" open \"%1\""); + Command.Close(); + softwareRun.Close(); + LRoot.Close(); + return true; + } + catch + { + return false; + } + } + /// + /// 判断文件关联是否存在 + /// + /// + /// + /// + public bool GetFileAssociation(string ExtName, string sName) + { + try + { + var result = false; + RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); + RegistryKey softwareRun = LRoot.OpenSubKey(ExtName + @"\shell\"+sName, false); + if (softwareRun != null) + { + softwareRun.Close(); + result = true; + } + LRoot.Close(); + return result; + } + catch + { + return false; + } + } + /// + /// 删除文件关联 + /// + /// + /// + /// + public bool DelFileAssociation(string ExtName, string sName) + { + try + { + RegistryKey LRoot = RegistryKey.OpenBaseKey(RegistryHive.ClassesRoot, RegistryView.Registry32); + RegistryKey softwareRun = LRoot.OpenSubKey(ExtName + @"\shell", false); + if(softwareRun!=null) + { + var shell_name = softwareRun.OpenSubKey(sName,false); + if(shell_name!=null) + { + shell_name.Close(); + softwareRun.DeleteSubKeyTree(sName); + } + softwareRun.Close(); + } + LRoot.Close(); + return true; + } + catch + { + return false; + } + } + private void FrmSetting_Load(object sender, EventArgs e) + { + ChkAss_Ryp.Checked = GetFileAssociation(".ryp", "ryUSQ"); + ChkAss_Folder.Checked = GetFileAssociation("folder", "ryUSQ"); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + var ds = db.ReadData("select * from Settings where name='Setting'"); + if(mydb.HaveData(ds)) + { + var row = mydb.GetData(ds); + ryCommon.Storage mStor = new ryCommon.Storage(row["value"].ToString()); + mStor.SelectNodeBySet(); + TxtCshapeBasePath.Text = mStor.GetAttrValue("CshapeBasePath"); + TxtReferenceDll.Text = mStor.GetAttrValue("ReferenceDll"); + TxtReactorPath.Text = mStor.GetAttrValue("ReactorPath"); + TxtWinRARPath.Text = mStor.GetAttrValue("WinRARPath"); + if(TxtWinRARPath.Text=="") + { + if(System.IO.File.Exists(@"C:\Program Files\WinRAR\WinRAR.exe")) + { + TxtWinRARPath.Text = @"C:\Program Files\WinRAR\WinRAR.exe"; + } + } + } + } + db.Free(); + } + + private void BtnReactorPath_Click(object sender, EventArgs e) + { + folderBrowserDialog1.SelectedPath = TxtReactorPath.Text; + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + TxtReactorPath.Text = folderBrowserDialog1.SelectedPath; + } + } + + private void BtnWinRARPath_Click(object sender, EventArgs e) + { + folderBrowserDialog1.SelectedPath = TxtWinRARPath.Text; + if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) + { + TxtWinRARPath.Text = folderBrowserDialog1.SelectedPath; + } + } + } +} diff --git a/Source/开发辅助工具/Manager/FrmSetting.resx b/Source/开发辅助工具/Manager/FrmSetting.resx new file mode 100644 index 0000000..347619c --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmSetting.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 197, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/FrmToolsSearch.Designer.cs b/Source/开发辅助工具/Manager/FrmToolsSearch.Designer.cs new file mode 100644 index 0000000..5df2097 --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmToolsSearch.Designer.cs @@ -0,0 +1,190 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmToolsSearch + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.rySearch1 = new ryControls.rySearch(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.ColToolName = new XPTable.Models.TextColumn(); + this.ColKeys = new XPTable.Models.TextColumn(); + this.ColToolDes = new XPTable.Models.TextColumn(); + this.table1 = new XPTable.Models.Table(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.添加工具ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.修改工具ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.删除工具ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ctlMyPage1 = new MyPage.ctlMyPage(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.contextMenuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // rySearch1 + // + this.rySearch1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.rySearch1.EmptyText = "请输入工具名称、名称拼音首字母、工具描述进行搜索"; + this.rySearch1.ImeMode = System.Windows.Forms.ImeMode.Close; + this.rySearch1.Location = new System.Drawing.Point(12, 12); + this.rySearch1.Name = "rySearch1"; + this.rySearch1.Size = new System.Drawing.Size(388, 25); + this.rySearch1.TabIndex = 1; + this.rySearch1.OnSearch += new System.EventHandler(this.RySearch1_OnSearch); + // + // tableModel1 + // + this.tableModel1.RowHeight = 25; + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColToolName, + this.ColKeys, + this.ColToolDes}); + // + // ColToolName + // + this.ColToolName.Editable = false; + this.ColToolName.Tag = null; + this.ColToolName.Text = "工具名称"; + this.ColToolName.Width = 180; + // + // ColKeys + // + this.ColKeys.Editable = false; + this.ColKeys.Tag = null; + this.ColKeys.Text = "关键词"; + this.ColKeys.Width = 400; + // + // ColToolDes + // + this.ColToolDes.Editable = false; + this.ColToolDes.Tag = null; + this.ColToolDes.Text = "工具描述"; + this.ColToolDes.Width = 400; + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.ContextMenuStrip = this.contextMenuStrip1; + this.table1.FullRowSelect = true; + this.table1.Location = new System.Drawing.Point(12, 43); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(1010, 555); + this.table1.TabIndex = 2; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.添加工具ToolStripMenuItem, + this.修改工具ToolStripMenuItem, + this.删除工具ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(125, 70); + // + // 添加工具ToolStripMenuItem + // + this.添加工具ToolStripMenuItem.Name = "添加工具ToolStripMenuItem"; + this.添加工具ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.添加工具ToolStripMenuItem.Text = "添加工具"; + this.添加工具ToolStripMenuItem.Click += new System.EventHandler(this.添加工具ToolStripMenuItem_Click); + // + // 修改工具ToolStripMenuItem + // + this.修改工具ToolStripMenuItem.Name = "修改工具ToolStripMenuItem"; + this.修改工具ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.修改工具ToolStripMenuItem.Text = "修改工具"; + this.修改工具ToolStripMenuItem.Click += new System.EventHandler(this.修改工具ToolStripMenuItem_Click); + // + // 删除工具ToolStripMenuItem + // + this.删除工具ToolStripMenuItem.Name = "删除工具ToolStripMenuItem"; + this.删除工具ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.删除工具ToolStripMenuItem.Text = "删除工具"; + this.删除工具ToolStripMenuItem.Click += new System.EventHandler(this.删除工具ToolStripMenuItem_Click); + // + // ctlMyPage1 + // + this.ctlMyPage1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.ctlMyPage1.Location = new System.Drawing.Point(12, 604); + this.ctlMyPage1.Name = "ctlMyPage1"; + this.ctlMyPage1.PageSize = 50; + this.ctlMyPage1.RecordCount = 0; + this.ctlMyPage1.Size = new System.Drawing.Size(506, 26); + this.ctlMyPage1.SQLText = ""; + this.ctlMyPage1.SQLText2 = ""; + this.ctlMyPage1.T_FirstCaption = "首页"; + this.ctlMyPage1.T_LastCaption = "末页"; + this.ctlMyPage1.T_NextCaption = "下一页"; + this.ctlMyPage1.T_Parameters = null; + this.ctlMyPage1.T_PreCaption = "上一页"; + this.ctlMyPage1.T_SkipCaption = "跳到"; + this.ctlMyPage1.T_TipCaption = "{pageindex}/{pagecount} 页,共 {recordcount} 条记录,每页 {pagesize} 条"; + this.ctlMyPage1.TabIndex = 31; + this.ctlMyPage1.OnPageChange += new System.EventHandler(this.CtlMyPage1_OnPageChange); + // + // FrmToolsSearch + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1034, 633); + this.Controls.Add(this.ctlMyPage1); + this.Controls.Add(this.table1); + this.Controls.Add(this.rySearch1); + this.Name = "FrmToolsSearch"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "工具管理"; + this.Load += new System.EventHandler(this.FrmToolsSearch_Load); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.contextMenuStrip1.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private ryControls.rySearch rySearch1; + private XPTable.Models.TableModel tableModel1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn ColToolName; + private XPTable.Models.TextColumn ColToolDes; + private XPTable.Models.Table table1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 添加工具ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 修改工具ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 删除工具ToolStripMenuItem; + private XPTable.Models.TextColumn ColKeys; + private MyPage.ctlMyPage ctlMyPage1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/FrmToolsSearch.cs b/Source/开发辅助工具/Manager/FrmToolsSearch.cs new file mode 100644 index 0000000..e54aa9d --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmToolsSearch.cs @@ -0,0 +1,155 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using 开发辅助工具.Manager; + +namespace 开发辅助工具.Tools +{ + public partial class FrmToolsSearch : Form + { + public FrmToolsSearch() + { + InitializeComponent(); + } + string orderSQL = "order by sort desc, addTime desc"; + string tableName = "Tools"; + private void 添加工具ToolStripMenuItem_Click(object sender, EventArgs e) + { + Manager.FrmAddTools frm = new Manager.FrmAddTools() + { + Text = "添加工具", + Icon = Icon, + isAdd = 1 + }; + frm.mr = new ModalForm(this, frm); + frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => { + if (dg == DialogResult.OK) + { + rySearch1.PerformClick(); + } + }); + frm.mr.ShowModal(); + } + private void GetRow(string id, int index) + { + #region 重新载入数据 + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + DataSet ds = db.ReadData("select * from " + tableName + " where id=" + id); + if (mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + XPTable.Models.Row itemList = tableModel1.Rows[index]; + //需要修改此处 + itemList.Cells[ColToolName.Index].Text = row["Name"].ToString(); + itemList.Cells[ColToolDes.Index].Text = row["Des"].ToString(); + itemList.Cells[ColKeys.Index].Text = row["Keys"].ToString(); + } + db.Free(); + } + #endregion + } + private void 修改工具ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { return; } + string selectId = table1.SelectedItems[0].Tag.ToString(); + int index = table1.SelectedItems[0].Index; + Manager.FrmAddTools frm = new Manager.FrmAddTools() + { + Text = "修改工具", + Icon = Icon, + isAdd = 0 + }; + frm.GetInfo(selectId); + frm.mr = new ModalForm(this, frm); + frm.mr.OnDialogResult += new ModalForm.DialogResultHandler((object t, DialogResult dg) => { + if (dg == DialogResult.OK) + { + GetRow(selectId, index); + } + }); + frm.mr.ShowModal(); + } + + private void CtlMyPage1_OnPageChange(object sender, EventArgs e) + { + #region 重新载入数据 + tableModel1.Rows.Clear(); + tableModel1.Selections.Clear(); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + DataSet ds = db.ReadData(ctlMyPage1.GetSQLText, ctlMyPage1.T_Parameters); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = row["id"].ToString() + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(row["Name"].ToString()));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(row["Keys"].ToString())); + itemList.Cells.Add(new XPTable.Models.Cell(row["Des"].ToString())); + tableModel1.Rows.Add(itemList); + } + db.Free(); + } + #endregion + } + public void LoadDb(string whereSQL) + { + string _whereSQL = whereSQL; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + #region 重新载入数据 + db.AddParameter("SearchText", "%" + rySearch1.Text + "%"); + ctlMyPage1.RecordCount = db.GetCount(tableName, _whereSQL); + ctlMyPage1.T_Parameters = db.GetParameter(); + ctlMyPage1.SQLText = db.GetPageSQL(tableName, _whereSQL, orderSQL); + ctlMyPage1.SQLText2 = db.GetPageSQL2(tableName, _whereSQL, orderSQL); + ctlMyPage1.GotoPageIndex(1); + db.Free(); + #endregion + } + } + private void RySearch1_OnSearch(object sender, EventArgs e) + { + LoadDb("(Name like @SearchText or Des like @SearchText or Keys like @SearchText or PY like @SearchText)"); + } + + private void 删除工具ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { MessageBox.Show("请先选择要删除的项。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } + string selectId = table1.SelectedItems[0].Tag.ToString(); + if (MessageBox.Show("确定要删除该项吗?一旦删除将不可恢复。", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No) + { + return; + } + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.Sys_SQLConn) == 1) + { + db.DelById(tableName, selectId); + tableModel1.Rows.RemoveAt(table1.SelectedItems[0].Index); + } + } + + private void FrmToolsSearch_Load(object sender, EventArgs e) + { + rySearch1.PerformClick(); + } + } +} diff --git a/Source/开发辅助工具/Manager/FrmToolsSearch.resx b/Source/开发辅助工具/Manager/FrmToolsSearch.resx new file mode 100644 index 0000000..fcbb37f --- /dev/null +++ b/Source/开发辅助工具/Manager/FrmToolsSearch.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 15, 18 + + + 133, 16 + + + 274, 16 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/Itrycn_Info.cs b/Source/开发辅助工具/Manager/Itrycn_Info.cs new file mode 100644 index 0000000..7d34ba0 --- /dev/null +++ b/Source/开发辅助工具/Manager/Itrycn_Info.cs @@ -0,0 +1,109 @@ +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using static ryCommonDb.DataProvider; + +namespace 开发辅助工具.Manager +{ + public class Itrycn_Db + { + public static bool IsCloseConfirm = true; + public static string Sys_SQLConn = "\\SysDb\\Tools.dat|"; + public static string User_SQLConn = "\\UserDb\\MyDb.dat|"; + public static ryCommonDb.DataProvider.DataProviderType dataType = ryCommonDb.DataProvider.DataProviderType.SQLiteDataProvider; + public static IDbInterface CreateDataProvider(DataProviderType dataProviderType) + { + switch (dataProviderType) + { + //case DataProviderType.OdbcDataProvider: + // return new OdbcDataProvider(); + //case DataProviderType.OleDbDataProvider: + // return new OleDbDataProvider(); + //case DataProviderType.OracleDataProvider: + // return new OracleDataProvider(); + case DataProviderType.SQLiteDataProvider: + return new SQLiteDataProvider(); + default: + return null; + } + } + public static void DeleteFiles(string dir, string filter) + { + var files = System.IO.Directory.GetFiles(dir, filter); + for (int i = 0; i < files.Length; i++) + { + ryCommon.RyFiles.DeleteFile(files[i]); + } + ryCommon.RyFiles.DeleteFile(dir + "\\" + filter); + var dirs = System.IO.Directory.GetDirectories(dir); + for (int i = 0; i < dirs.Length; i++) + { + DeleteFiles(dirs[i], filter); + } + } + public static void CreateSysTable() + { + DataProvider mydb = new DataProvider(); + IDbInterface db = CreateDataProvider(dataType); + if (db.ConnDb(Sys_SQLConn) == 1) + { + #region 工具表 + RyQuickSQL mySQL = new RyQuickSQL("Tools"); + mySQL.AddField("Name", ""); + mySQL.AddField("Des", ""); + mySQL.AddField("Keys", ""); + mySQL.AddField("Addr", ""); + mySQL.AddField("PY", ""); + mySQL.AddField("Sort", 0); + mySQL.AddField("addTime",DateTime.Now); + db.CreateDb(mySQL); + #endregion + // + } + } + public static void CreateUserTable() + { + DataProvider mydb = new DataProvider(); + IDbInterface db = CreateDataProvider(dataType); + if (db.ConnDb(User_SQLConn) == 1) + { + #region Url表 + RyQuickSQL mySQL = new RyQuickSQL("Urls"); + mySQL.AddField("Name", ""); + mySQL.AddField("Url", ""); + mySQL.AddField("Cookie", ""); + mySQL.AddField("Postdata", ""); + mySQL.AddField("Method", ""); + mySQL.AddField("Header", ""); + mySQL.AddField("Referer", ""); + mySQL.AddField("ContentType", ""); + mySQL.AddField("Encoding", ""); + mySQL.AddField("ClickCount", 0);//点击次数 + mySQL.AddField("editTime", DateTime.Now); + mySQL.AddField("addTime", DateTime.Now); + db.CreateDb(mySQL); + #endregion + #region 启动表 + mySQL.Clear(); + mySQL.TableName = "Starts"; ; + mySQL.AddField("Addr", ""); + mySQL.AddField("Name", ""); + mySQL.AddField("ClickCount", 0);//点击次数 + mySQL.AddField("editTime", DateTime.Now); + mySQL.AddField("addTime", DateTime.Now); + db.CreateDb(mySQL); + #endregion + #region 设置表 + mySQL.Clear(); + mySQL.TableName = "Settings"; ; + mySQL.AddField("Name", ""); + mySQL.AddField("Value", "");//值 + mySQL.AddField("addTime", DateTime.Now); + db.CreateDb(mySQL); + #endregion + } + } + } +} diff --git a/Source/开发辅助工具/Manager/Json.cs b/Source/开发辅助工具/Manager/Json.cs new file mode 100644 index 0000000..dd6a912 --- /dev/null +++ b/Source/开发辅助工具/Manager/Json.cs @@ -0,0 +1,62 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace 开发辅助工具.Manager +{ + public class Json + { + public static string ConvertJsonString(string str) + { + //格式化json字符串 + JsonSerializer serializer = new JsonSerializer(); + TextReader tr = new StringReader(str); + JsonTextReader jtr = new JsonTextReader(tr); + object obj = serializer.Deserialize(jtr); + if (obj != null) + { + StringWriter textWriter = new StringWriter(); + JsonTextWriter jsonWriter = new JsonTextWriter(textWriter) + { + Formatting = Formatting.Indented, + Indentation = 4, + IndentChar = ' ' + }; + serializer.Serialize(jsonWriter, obj); + return textWriter.ToString(); + } + else + { + return str; + } + } + public static bool IsArray(string str) + { + try + { + JArray jar = JArray.Parse(str); + return true; + } + catch { return false; } + } + public static bool IsJson(string str) + { + try + { + var jo= (JObject)JsonConvert.DeserializeObject(str); + return true; + } + catch(Exception ex) + { return false; } + //if (JsonSplit.IsJson(str))//传入的json串 + //{ + // return true; + //} + //return false; + } + } +} diff --git a/Source/开发辅助工具/Manager/JsonSplit.cs b/Source/开发辅助工具/Manager/JsonSplit.cs new file mode 100644 index 0000000..87ef09e --- /dev/null +++ b/Source/开发辅助工具/Manager/JsonSplit.cs @@ -0,0 +1,395 @@ +internal class JsonSplit +{ + private static bool IsJsonStart(ref string json) + { + if (!string.IsNullOrEmpty(json)) + { + json = json.Trim('\r', '\n', ' '); + if (json.Length > 1) + { + char s = json[0]; + char e = json[json.Length - 1]; + return (s == '{' && e == '}') || (s == '[' && e == ']'); + } + } + return false; + } + internal static bool IsJson(string json) + { + int errIndex; + return IsJson(json, out errIndex); + } + internal static bool IsJson(string json, out int errIndex) + { + errIndex = 0; + if (IsJsonStart(ref json)) + { + CharState cs = new CharState(); + char c; + for (int i = 0; i < json.Length; i++) + { + c = json[i]; + if (SetCharState(c, ref cs) && cs.childrenStart)//设置关键符号状态。 + { + string item = json.Substring(i); + int err; + int length = GetValueLength(item, true, out err); + cs.childrenStart = false; + if (err > 0) + { + errIndex = i + err; + return false; + } + i = i + length - 1; + } + if (cs.isError) + { + errIndex = i; + return false; + } + } + + return !cs.arrayStart && !cs.jsonStart; + } + return false; + } + + /// + /// 获取值的长度(当Json值嵌套以"{"或"["开头时) + /// + private static int GetValueLength(string json, bool breakOnErr, out int errIndex) + { + errIndex = 0; + int len = 0; + if (!string.IsNullOrEmpty(json)) + { + CharState cs = new CharState(); + char c; + for (int i = 0; i < json.Length; i++) + { + c = json[i]; + if (!SetCharState(c, ref cs))//设置关键符号状态。 + { + if (!cs.jsonStart && !cs.arrayStart)//json结束,又不是数组,则退出。 + { + break; + } + } + else if (cs.childrenStart)//正常字符,值状态下。 + { + int length = GetValueLength(json.Substring(i), breakOnErr, out errIndex);//递归子值,返回一个长度。。。 + cs.childrenStart = false; + cs.valueStart = 0; + //cs.state = 0; + i = i + length - 1; + } + if (breakOnErr && cs.isError) + { + errIndex = i; + return i; + } + if (!cs.jsonStart && !cs.arrayStart)//记录当前结束位置。 + { + len = i + 1;//长度比索引+1 + break; + } + } + } + return len; + } + /// + /// 字符状态 + /// + private class CharState + { + internal bool jsonStart = false;//以 "{"开始了... + internal bool setDicValue = false;// 可以设置字典值了。 + internal bool escapeChar = false;//以"\"转义符号开始了 + /// + /// 数组开始【仅第一开头才算】,值嵌套的以【childrenStart】来标识。 + /// + internal bool arrayStart = false;//以"[" 符号开始了 + internal bool childrenStart = false;//子级嵌套开始了。 + /// + /// 【0 初始状态,或 遇到“,”逗号】;【1 遇到“:”冒号】 + /// + internal int state = 0; + + /// + /// 【-1 取值结束】【0 未开始】【1 无引号开始】【2 单引号开始】【3 双引号开始】 + /// + internal int keyStart = 0; + /// + /// 【-1 取值结束】【0 未开始】【1 无引号开始】【2 单引号开始】【3 双引号开始】 + /// + internal int valueStart = 0; + internal bool isError = false;//是否语法错误。 + + internal void CheckIsError(char c)//只当成一级处理(因为GetLength会递归到每一个子项处理) + { + if (keyStart > 1 || valueStart > 1) + { + return; + } + //示例 ["aa",{"bbbb":123,"fff","ddd"}] + switch (c) + { + case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}] + isError = jsonStart && state == 0;//重复开始错误 同时不是值处理。 + break; + case '}': + isError = !jsonStart || (keyStart != 0 && state == 0);//重复结束错误 或者 提前结束{"aa"}。正常的有{} + break; + case '[': + isError = arrayStart && state == 0;//重复开始错误 + break; + case ']': + isError = !arrayStart || jsonStart;//重复开始错误 或者 Json 未结束 + break; + case '"': + case '\'': + isError = !(jsonStart || arrayStart); //json 或数组开始。 + if (!isError) + { + //重复开始 [""",{"" "}] + isError = (state == 0 && keyStart == -1) || (state == 1 && valueStart == -1); + } + if (!isError && arrayStart && !jsonStart && c == '\'')//['aa',{}] + { + isError = true; + } + break; + case ':': + isError = !jsonStart || state == 1;//重复出现。 + break; + case ',': + isError = !(jsonStart || arrayStart); //json 或数组开始。 + if (!isError) + { + if (jsonStart) + { + isError = state == 0 || (state == 1 && valueStart > 1);//重复出现。 + } + else if (arrayStart)//["aa,] [,] [{},{}] + { + isError = keyStart == 0 && !setDicValue; + } + } + break; + case ' ': + case '\r': + case '\n'://[ "a",\r\n{} ] + case '\0': + case '\t': + break; + default: //值开头。。 + isError = (!jsonStart && !arrayStart) || (state == 0 && keyStart == -1) || (valueStart == -1 && state == 1);// + break; + } + //if (isError) + //{ + + //} + } + } + /// + /// 设置字符状态(返回true则为关键词,返回false则当为普通字符处理) + /// + private static bool SetCharState(char c, ref CharState cs) + { + cs.CheckIsError(c); + switch (c) + { + case '{'://[{ "[{A}]":[{"[{B}]":3,"m":"C"}]}] + #region 大括号 + if (cs.keyStart <= 0 && cs.valueStart <= 0) + { + cs.keyStart = 0; + cs.valueStart = 0; + if (cs.jsonStart && cs.state == 1) + { + cs.childrenStart = true; + } + else + { + cs.state = 0; + } + cs.jsonStart = true;//开始。 + return true; + } + #endregion + break; + case '}': + #region 大括号结束 + if (cs.keyStart <= 0 && cs.valueStart < 2 && cs.jsonStart) + { + cs.jsonStart = false;//正常结束。 + cs.state = 0; + cs.keyStart = 0; + cs.valueStart = 0; + cs.setDicValue = true; + return true; + } + // cs.isError = !cs.jsonStart && cs.state == 0; + #endregion + break; + case '[': + #region 中括号开始 + if (!cs.jsonStart) + { + cs.arrayStart = true; + return true; + } + else if (cs.jsonStart && cs.state == 1) + { + cs.childrenStart = true; + return true; + } + #endregion + break; + case ']': + #region 中括号结束 + if (cs.arrayStart && !cs.jsonStart && cs.keyStart <= 2 && cs.valueStart <= 0)//[{},333]//这样结束。 + { + cs.keyStart = 0; + cs.valueStart = 0; + cs.arrayStart = false; + return true; + } + #endregion + break; + case '"': + case '\'': + #region 引号 + if (cs.jsonStart || cs.arrayStart) + { + if (cs.state == 0)//key阶段,有可能是数组["aa",{}] + { + if (cs.keyStart <= 0) + { + cs.keyStart = (c == '"' ? 3 : 2); + return true; + } + else if ((cs.keyStart == 2 && c == '\'') || (cs.keyStart == 3 && c == '"')) + { + if (!cs.escapeChar) + { + cs.keyStart = -1; + return true; + } + else + { + cs.escapeChar = false; + } + } + } + else if (cs.state == 1 && cs.jsonStart)//值阶段必须是Json开始了。 + { + if (cs.valueStart <= 0) + { + cs.valueStart = (c == '"' ? 3 : 2); + return true; + } + else if ((cs.valueStart == 2 && c == '\'') || (cs.valueStart == 3 && c == '"')) + { + if (!cs.escapeChar) + { + cs.valueStart = -1; + return true; + } + else + { + cs.escapeChar = false; + } + } + + } + } + #endregion + break; + case ':': + #region 冒号 + if (cs.jsonStart && cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 0) + { + if (cs.keyStart == 1) + { + cs.keyStart = -1; + } + cs.state = 1; + return true; + } + // cs.isError = !cs.jsonStart || (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1); + #endregion + break; + case ',': + #region 逗号 //["aa",{aa:12,}] + + if (cs.jsonStart) + { + if (cs.keyStart < 2 && cs.valueStart < 2 && cs.state == 1) + { + cs.state = 0; + cs.keyStart = 0; + cs.valueStart = 0; + //if (cs.valueStart == 1) + //{ + // cs.valueStart = 0; + //} + cs.setDicValue = true; + return true; + } + } + else if (cs.arrayStart && cs.keyStart <= 2) + { + cs.keyStart = 0; + //if (cs.keyStart == 1) + //{ + // cs.keyStart = -1; + //} + return true; + } + #endregion + break; + case ' ': + case '\r': + case '\n'://[ "a",\r\n{} ] + case '\0': + case '\t': + if (cs.keyStart <= 0 && cs.valueStart <= 0) //cs.jsonStart && + { + return true;//跳过空格。 + } + break; + default: //值开头。。 + if (c == '\\') //转义符号 + { + if (cs.escapeChar) + { + cs.escapeChar = false; + } + else + { + cs.escapeChar = true; + return true; + } + } + else + { + cs.escapeChar = false; + } + if (cs.jsonStart || cs.arrayStart) // Json 或数组开始了。 + { + if (cs.keyStart <= 0 && cs.state == 0) + { + cs.keyStart = 1;//无引号的 + } + else if (cs.valueStart <= 0 && cs.state == 1 && cs.jsonStart)//只有Json开始才有值。 + { + cs.valueStart = 1;//无引号的 + } + } + break; + } + return false; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Manager/ReactorXML.cs b/Source/开发辅助工具/Manager/ReactorXML.cs new file mode 100644 index 0000000..f801537 --- /dev/null +++ b/Source/开发辅助工具/Manager/ReactorXML.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml; + +namespace 开发辅助工具.Manager +{ + class ReactorXML + { + public ReactorXML() + { + + } + private string xml_path = ""; + /// + /// 加载xml + /// + /// + public void LoadXML(string _xml_path) + { + xml_path = _xml_path; + } + public void Save(string _xml_path,List files) + { + if (files.Count == 0) { return; } + System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); + xml.Load(xml_path); + var list = xml.SelectNodes(@"Reactor_Project/Assembly"); + for (int i = 0; i < list.Count; i++) + { + list[i].ParentNode.RemoveChild(list[i]); + } + //var node_Target_File = xml.SelectSingleNode(@"Reactor_Project//General_Settings//Target_File"); + //if (node_Target_File != null) + //{ + // node_Target_File.InnerText = files[0]; + //} + var node = xml.SelectSingleNode(@"Reactor_Project/Main_Assembly"); + if (node != null) + { + node.InnerText = files[0]; + } + for (int i = 1; i < files.Count; i++) + { + var node2 = xml.SelectSingleNode(@"Reactor_Project"); + XmlNode childXmlNode = xml.CreateElement("Assembly"); + XmlNode childXmlNode2 = xml.CreateElement("Filename"); + childXmlNode2.InnerText = files[i]; + childXmlNode.AppendChild(childXmlNode2); + node2.InsertAfter(childXmlNode, node); + //node.AppendChild(childXmlNode);; + } + xml.Save(_xml_path); + } + } +} diff --git a/Source/开发辅助工具/Manager/RyProject.cs b/Source/开发辅助工具/Manager/RyProject.cs new file mode 100644 index 0000000..3e2faeb --- /dev/null +++ b/Source/开发辅助工具/Manager/RyProject.cs @@ -0,0 +1,403 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Xml; + +namespace 开发辅助工具.Manager +{ + class RyProject + { + /// + /// C#基准项目路径 + /// + public string CshapeBasePath { get; private set; } = ""; + + /// + /// 引用dll文件夹列表 + /// + public string ReferenceDllPath { get; private set; } = ""; + /// + /// 是否将dll复制到Bin目录,并修改引用 + /// + public bool CopyDllToBin { get; set; } = false; + /// + /// Bin目录相对于项目文件所在的位置,可使用相对路径或绝对路径 + /// + public string BinFolder { get; set; } = "..\\..\\Bin"; + /// + /// 是否修改输出路径 + /// + public bool ChangedOutputPath { get; set; } =true; + public RyProject() + { + UpdateSetting(); + } + /// + /// 更新设置 + /// + public void UpdateSetting() + { + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + var ds = db.ReadData("select * from Settings where name='Setting'"); + if (mydb.HaveData(ds)) + { + var row = mydb.GetData(ds); + ryCommon.Storage mStor = new ryCommon.Storage(row["value"].ToString()); + mStor.SelectNodeBySet(); + CshapeBasePath = mStor.GetAttrValue("CshapeBasePath"); + ReferenceDllPath = mStor.GetAttrValue("ReferenceDll"); + } + } + db.Free(); + } + /// + /// 通过dll名称来寻找dll路径 + /// + /// + /// + /// + public string GetDllPath(string dll_name) + { + var path_list = ReferenceDllPath.Replace("\r", "").Split('\n'); + var find = false; + var result = ""; + #region 在引用文件夹查找是否有该dll,有则使用引用文件夹里的dll + for (int m = 0; m < path_list.Length; m++) + { + if (path_list[m].Trim() == "") { continue; } + if (!System.IO.Directory.Exists(path_list[m])) { continue; } + var files = System.IO.Directory.GetFiles(path_list[m]); + for (int z = 0; z < files.Length; z++) + { + if (System.IO.Path.GetFileName(files[z]).ToLower() == dll_name.ToLower()) + { + result = files[z]; + find = true; + break; + } + } + if (find) { break; } + } + #endregion + return result; + } + /// + /// 相对路径转绝对路径,相对项目文件的路径 + /// + /// + public string RelToAbsPath(string project_path,string rel_path) + { + string folder = System.IO.Path.GetDirectoryName(project_path); + var _rel_path = rel_path; + while (true) + { + if (_rel_path.IndexOf("..\\") == 0) + { + folder = System.IO.Path.GetDirectoryName(folder.TrimEnd('\\')); + _rel_path = _rel_path.Substring(3); + } + else { break; } + if (folder == "") { break; } + } + return folder+"\\"+ _rel_path; + } + /// + /// 绝对路径转相对路径,相对项目文件的路径 + /// + /// + public string AbsToRelPath(string project_path, string abs_path) + { + string folder = System.IO.Path.GetDirectoryName(project_path); + var _rel_path = ""; + var _rel_path2 = ""; + while (true) + { + if (abs_path.IndexOfEx(folder) == 0) + { + if (_rel_path2 == "") + { _rel_path = abs_path.Substring(folder.Length); } + else + { + _rel_path = _rel_path2.TrimEnd('\\') + abs_path.Substring(folder.Length); + } + break; + } + else + { + folder = System.IO.Path.GetDirectoryName(folder.TrimEnd('\\')); + _rel_path2 += "..\\"; + } + if (folder == "") { break; } + } + return _rel_path; + } + /// + /// 更新dll版本,如果全部复制成功,则返回0,否则返回错误个数 + /// + public int UpdateDlls(string folder,out string error_str) + { + error_str = ""; + var _error_str = ""; + int error = 0; + Updates(folder); + void Updates(string _path) + { + var files = System.IO.Directory.GetFiles(_path, "*.dll"); + for (int i = 0; i < files.Length; i++) + { + string filename = System.IO.Path.GetFileName(files[i]); + var dllpath = GetDllPath(filename); + if (dllpath != "") + { + if (RyFiles.CopyFile(dllpath, files[i]) != 0) + { _error_str += files[i]+ "\r\n"; error++; } + var dll_xml_path = System.IO.Path.GetDirectoryName(dllpath) +"\\"+ System.IO.Path.GetFileNameWithoutExtension(dllpath) + ".xml"; + if (System.IO.File.Exists(dll_xml_path)) + { + if (RyFiles.CopyFile(dll_xml_path, System.IO.Path.GetDirectoryName(files[i]) + "\\" + System.IO.Path.GetFileNameWithoutExtension(files[i]) + ".xml") != 0) + { _error_str += files[i] + "\r\n"; error++; } + } + } + } + var dirs = System.IO.Directory.GetDirectories(_path); + for (int i = 0; i < dirs.Length; i++) + { + Updates(dirs[i]); + } + } + error_str = _error_str; + return error; + } + /// + /// 更新项目引用,定向为本地dll,如果全部复制成功,则返回0,否则返回错误个数 + /// + public int UpdateCSproj(string folder) + { + int error = 0; + Updates(folder); + void Updates(string _path) + { + var files = System.IO.Directory.GetFiles(_path, "*.csproj"); + for (int i = 0; i < files.Length; i++) + { + SetCSproj(files[i], ""); + } + var dirs = System.IO.Directory.GetDirectories(_path); + for (int i = 0; i < dirs.Length; i++) + { + Updates(dirs[i]); + } + } + return error; + } + /// + /// 自动设置csproj文件,将dll引用修改为指定区域的dll、修改命名空间 + /// + /// 项目文件(*.csproj) + /// 项目英文名 + public void SetCSproj(string path, string _project_Eng_name) + { + System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); + xml.Load(path); + var xmlnsm = new XmlNamespaceManager(xml.NameTable); + xmlnsm.AddNamespace("d", xml.DocumentElement.NamespaceURI); + //var root = @"d:Project//d:ItemGroup//d:Reference"; + if (_project_Eng_name != "") + { + SetValue(@"d:Project//d:PropertyGroup//d:RootNamespace", _project_Eng_name.Replace(" ", ""));//命名空间名 + SetValue(@"d:Project//d:PropertyGroup//d:AssemblyName", _project_Eng_name.Replace(" ", ""));//程序集名称 + } + var OutputPath = GetValue(@"d:Project//d:PropertyGroup[2]//d:OutputPath").TrimEnd('\\')+"\\"; + if (ChangedOutputPath) + { + SetValue(@"d:Project//d:PropertyGroup[2]//d:OutputPath", BinFolder.TrimEnd('\\') + "\\Debug\\"+ (_project_Eng_name==""?"": _project_Eng_name +"\\"));//Debug输出路径 + SetValue(@"d:Project//d:PropertyGroup[3]//d:OutputPath", BinFolder.TrimEnd('\\') + "\\Release\\" + (_project_Eng_name == "" ? "" : _project_Eng_name + "\\"));//Release输出路径 + } + if (OutputPath == "") { OutputPath = BinFolder.TrimEnd('\\') + "\\Debug\\" + (_project_Eng_name == "" ? "" : _project_Eng_name + "\\"); } + var list = xml.SelectNodes(@"d:Project//d:ItemGroup//d:Reference//d:HintPath", xmlnsm); + for (int i = 0; i < list.Count; i++) + { + var HintPath = list[i].InnerText; + var iPos = HintPath.LastIndexOf("\\"); + if (iPos > 0) + { + var Reference_Name = HintPath.Substring(iPos + 1);//引用的dll名称 + var dll_path = GetDllPath(Reference_Name); + if (dll_path != "") + { + if (CopyDllToBin) + { + list[i].InnerText = OutputPath + Reference_Name; + RyFiles.CopyFile(dll_path,RelToAbsPath(path, OutputPath + Reference_Name)); + } + else + { + list[i].InnerText = dll_path; + } + } + } + } + var ProjectReference_list = xml.SelectNodes(@"d:Project//d:ItemGroup//d:ProjectReference", xmlnsm);//项目引用 + for (int i = 0; i < ProjectReference_list.Count; i++) + { + var element = (XmlElement)ProjectReference_list[i]; + var IncludePath = element.GetAttribute("Include"); + var iPos = IncludePath.LastIndexOf("\\"); + if (iPos > 0) + { + var Reference_FileName = IncludePath.Substring(iPos + 1).ToLower();//引用的项目文件名称 + string dll_name = ""; + if (Reference_FileName == "MyDbV4.csproj".ToLower()) + { dll_name = "MyDb.dll"; } + else if (Reference_FileName == "MyDb_SQLiteV4.csproj".ToLower()) + { dll_name = "MyDb_SQLite.dll"; } + else if (Reference_FileName == "ryControlsV4.csproj".ToLower()) + { dll_name = "ryControls.dll"; } + else if (Reference_FileName == "RyPrint.csproj".ToLower()) + { dll_name = "RyPrint.dll"; } + else if (Reference_FileName == "ryUpdateV4.csproj".ToLower()) + { dll_name = "ryUpdate.dll"; } + if (dll_name != "") + { + var dll_path = GetDllPath(dll_name); + if (dll_path != "") + { + if (CopyDllToBin) + { + MoveReference(System.IO.Path.GetFileNameWithoutExtension(dll_name), OutputPath + dll_name); + RyFiles.CopyFile(dll_path, RelToAbsPath(path, OutputPath + dll_name)); + } + else + { + MoveReference(System.IO.Path.GetFileNameWithoutExtension(dll_name), dll_path); + } + } + } + //将项目引用转换为dll引用 + void MoveReference(string reference_name, string dll_path) + { + ProjectReference_list[i].ParentNode.RemoveChild(ProjectReference_list[i]); + var node = xml.SelectSingleNode(@"d:Project//d:ItemGroup", xmlnsm); + XmlNode childXmlNode = xml.CreateElement("Reference"); + XmlNode childXmlNode2 = xml.CreateElement("HintPath"); + childXmlNode2.InnerText = dll_path; + childXmlNode.AppendChild(childXmlNode2); + node.AppendChild(childXmlNode); + XmlElement element2 = (XmlElement)childXmlNode; + element2.SetAttribute("Include", reference_name); + } + } + } + xml.InnerXml = xml.InnerXml.Replace(" xmlns=\"\"", ""); + xml.Save(path); + string GetValue(string xpath) + { + var node = xml.SelectSingleNode(xpath, xmlnsm); + if (node != null) + { + return node.InnerText; + } + return ""; + } + bool SetValue(string xpath, string value) + { + var node = xml.SelectSingleNode(xpath, xmlnsm); + if (node != null) + { + node.InnerText = value; return true; + } + return false; + } + } + /// + /// 获取版本号 + /// + /// + /// + public string GetAssemblyVersion(string path) + { + var AssemblyInfo_Path = System.IO.Path.GetDirectoryName(path) + "\\Properties\\AssemblyInfo.cs"; + if (System.IO.File.Exists(AssemblyInfo_Path)) + { + var AssemblyInfo = ryCommon.RyFiles.ReadAllLines(AssemblyInfo_Path); + for (int i = 0; i < AssemblyInfo.Length; i++) + { + if (AssemblyInfo[i].StartsWith("//")) { continue; } + if (AssemblyInfo[i].StartsWith("[assembly: AssemblyVersion")) + { + return AssemblyInfo[i].GetStr("AssemblyVersion(\"", "\")"); + } + } + return ""; + } + else + { + return ""; + } + } + /// + /// 更新版本号 + /// + /// + public static void UpdateVer(string AssemblyInfo_Path) + { + string AssemblyInfo_path = AssemblyInfo_Path; + if (System.IO.File.Exists(AssemblyInfo_path)) + { + string[] AssemblyInfo_list = ryCommon.RyFiles.ReadAllLines(AssemblyInfo_path); + string text = ""; + string Revision_Ver = DateTime.Now.ToString("yyMM"); + string Build_Ver = DateTime.Now.ToString("dd00"); + for (int i = 0; i < AssemblyInfo_list.Length; i++) + { + string item = AssemblyInfo_list[i]; + if (item.IndexOf("[assembly: AssemblyVersion(\"") == 0) + { + + ChangeVer("[assembly: AssemblyVersion(\""); + } + else if (item.IndexOf("[assembly: AssemblyFileVersion(\"") == 0) + { + ChangeVer("[assembly: AssemblyFileVersion(\""); + } + if (text != "") { text += "\r\n"; } + text += item; + void ChangeVer(string id) + { + string ver = item.GetStr(id, "\")]", 0, out int pos, ""); + if (ver != "") + { + string[] ver_list = ver.Split('.'); + if (ver_list.Length == 4) + { + if (ver_list[2] != Revision_Ver) + { + ver = ver_list[0] + "." + ver_list[1] + "." + Revision_Ver + "." + (Build_Ver.ToInt() + 1).ToString("0000"); + } + else + { + if (ver_list[3].IndexOf(DateTime.Now.ToString("dd")) == 0) + { + ver = ver_list[0] + "." + ver_list[1] + "." + Revision_Ver + "." + (ver_list[3].ToInt() + 1).ToString("0000"); + } + else + { + ver = ver_list[0] + "." + ver_list[1] + "." + Revision_Ver + "." + (Build_Ver.ToInt() + 1).ToString("0000"); + } + } + item = id + ver + "\")]"; + } + } + } + } + ryCommon.RyFiles.WriteAllText(AssemblyInfo_path, text, Encoding.UTF8); + } + } + } +} diff --git a/Source/开发辅助工具/Manager/TotalCount.cs b/Source/开发辅助工具/Manager/TotalCount.cs new file mode 100644 index 0000000..23b374d --- /dev/null +++ b/Source/开发辅助工具/Manager/TotalCount.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace 开发辅助工具.Manager +{ + class TotalCount + { + /// + /// 返回字节数 + /// + /// + /// + public int GetByteLength(string s, out int HanziCount, out int engCount, out int NumCount) + { + int l = 0; + char[] q = s.ToCharArray(); + HanziCount = 0; + engCount = 0; + NumCount = 0; + for (int i = 0; i < q.Length; i++) + { + int qInt = (int)q[i]; + if (qInt >= 0x4E00 && qInt <= 0x9FA5) // 汉字 + { + l += 2; + HanziCount++; + } + else if ((qInt >= 97 && qInt <= 122) || (qInt >= 65 && qInt <= 90)) // 英文 + { + l += 1; + engCount++; + } + else if ((qInt >= 48 && qInt <= 57)) // 数字 + { + l += 1; + NumCount++; + } + else + { + l += 1; + } + } + return l; + } + } +} diff --git a/Source/开发辅助工具/Program.cs b/Source/开发辅助工具/Program.cs new file mode 100644 index 0000000..992b721 --- /dev/null +++ b/Source/开发辅助工具/Program.cs @@ -0,0 +1,44 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 开发辅助工具 +{ + static class Program + { + /// + /// 应用程序的主入口点。 + /// + [STAThread] + static void Main(string[] args) + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + if (args.Length >= 2) + { + if (args[0] == "ver") + { + string ProjectDir = args[1]; + Manager.RyProject.UpdateVer(ProjectDir.Trim('"') + "\\Properties\\AssemblyInfo.cs"); + } + else if (args[0] == "get") + { + string ProjectPath = args[1]; + Application.Run(new Form1(ProjectPath,"get")); + } + else if (args[0] == "open") + { + string ProjectPath = args[1]; + Application.Run(new Form1(ProjectPath,"open")); + } + } + else + { + Application.Run(new Form1("","")); + } + } + } +} diff --git a/Source/开发辅助工具/Properties/AssemblyInfo.cs b/Source/开发辅助工具/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9585803 --- /dev/null +++ b/Source/开发辅助工具/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// 有关程序集的一般信息由以下 +// 控制。更改这些特性值可修改 +// 与程序集关联的信息。 +[assembly: AssemblyTitle("开发辅助工具")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("开发辅助工具")] +[assembly: AssemblyCopyright("Copyright © 2018-2019")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +// 将 ComVisible 设置为 false 会使此程序集中的类型 +//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 +//请将此类型的 ComVisible 特性设置为 true。 +[assembly: ComVisible(false)] + +// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID +[assembly: Guid("8177cfd1-097c-4d4e-919d-8b519289496e")] + +// 程序集的版本信息由下列四个值组成: +// +// 主版本 +// 次版本 +// 生成号 +// 修订号 +// +// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 +// 方法是按如下所示使用“*”: : +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("2.0.2011.2801")] +[assembly: AssemblyFileVersion("2.0.2011.2801")] \ No newline at end of file diff --git a/Source/开发辅助工具/Properties/Resources.Designer.cs b/Source/开发辅助工具/Properties/Resources.Designer.cs new file mode 100644 index 0000000..02157c1 --- /dev/null +++ b/Source/开发辅助工具/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace SuperDesign.Properties { + using System; + + + /// + /// 一个强类型的资源类,用于查找本地化的字符串等。 + /// + // 此类是由 StronglyTypedResourceBuilder + // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 + // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen + // (以 /str 作为命令选项),或重新生成 VS 项目。 + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// 返回此类使用的缓存的 ResourceManager 实例。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SuperDesign.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// 重写当前线程的 CurrentUICulture 属性,对 + /// 使用此强类型资源类的所有资源查找执行重写。 + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/Source/开发辅助工具/Properties/Resources.resx b/Source/开发辅助工具/Properties/Resources.resx new file mode 100644 index 0000000..af7dbeb --- /dev/null +++ b/Source/开发辅助工具/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Properties/Settings.Designer.cs b/Source/开发辅助工具/Properties/Settings.Designer.cs new file mode 100644 index 0000000..c4310a8 --- /dev/null +++ b/Source/开发辅助工具/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// 此代码由工具生成。 +// 运行时版本:4.0.30319.42000 +// +// 对此文件的更改可能会导致不正确的行为,并且如果 +// 重新生成代码,这些更改将会丢失。 +// +//------------------------------------------------------------------------------ + +namespace SuperDesign.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/Source/开发辅助工具/Properties/Settings.settings b/Source/开发辅助工具/Properties/Settings.settings new file mode 100644 index 0000000..3964565 --- /dev/null +++ b/Source/开发辅助工具/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Source/开发辅助工具/SuperDesign.csproj b/Source/开发辅助工具/SuperDesign.csproj new file mode 100644 index 0000000..94214ad --- /dev/null +++ b/Source/开发辅助工具/SuperDesign.csproj @@ -0,0 +1,378 @@ + + + + + Debug + AnyCPU + {8177CFD1-097C-4D4E-919D-8B519289496E} + WinExe + SuperDesign + SuperDesign + v4.0 + 512 + + + x86 + true + full + false + ..\..\Bin\Debug\SuperDesign\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + gaim_48px_29650_easyicon.net.ico + + + + ..\..\Bin\Debug\SupperDesign\HtmlAgilityPack.dll + + + ..\..\Bin\Debug\SupperDesign\ICSharpCode.TextEditor.dll + + + ..\..\Bin\Debug\SupperDesign\MGdUI.dll + + + ..\..\Bin\Debug\SupperDesign\MyDb.dll + + + ..\..\Bin\Debug\SupperDesign\MyDb_SQLite.dll + + + False + ..\..\Bin\Debug\SupperDesign\Newtonsoft.Json.dll + + + ..\..\Bin\Debug\SupperDesign\ryControls.dll + + + ..\..\Bin\Debug\SupperDesign\RyWeb.dll + + + ..\..\Bin\Debug\SupperDesign\SCREEN_CAPTURE.dll + + + + + + + + + + + + + + ..\..\Bin\Debug\SupperDesign\WeifenLuo.WinFormsUI.Docking.dll + + + ..\..\Bin\Debug\SupperDesign\WeifenLuo.WinFormsUI.Docking.ThemeVS2015.dll + + + ..\..\Bin\Debug\SupperDesign\XPTable.dll + + + ..\..\Bin\Debug\SupperDesign\zxing.dll + + + + + Component + + + ContextMenuStripHighlightText.cs + + + Component + + + ContextMenuStripRichText.cs + + + Form + + + FindAndReplaceForm.cs + + + Form + + + FrmInsertUnixTime.cs + + + Form + + + FrmText.cs + + + Form + + + FrmTitle.cs + + + Component + + + MenuRight.cs + + + Form + + + Form1.cs + + + Form + + + FrmMessageBox.cs + + + + Form + + + FrmSetting.cs + + + + + Form + + + FrmAddTools.cs + + + + + + + + + + Form + + + FrmColor.cs + + + Form + + + FrmCreateProject.cs + + + Form + + + FrmEncode.cs + + + Form + + + FrmJson.cs + + + Form + + + FrmPathInfo.cs + + + Form + + + FrmProject.cs + + + Form + + + FrmProjectSearch.cs + + + Form + + + FrmQrCode.cs + + + Form + + + FrmRegex.cs + + + Form + + + FrmSetup.cs + + + Form + + + FrmStrCount.cs + + + Form + + + FrmStrToCode.cs + + + Form + + + FrmTime.cs + + + Form + + + FrmToolsBox.cs + + + Form + + + FrmToolsSearch.cs + + + Form + + + FrmWebGet.cs + + + Form + + + FrmXpath.cs + + + ContextMenuStripHighlightText.cs + + + ContextMenuStripRichText.cs + + + FindAndReplaceForm.cs + + + FrmInsertUnixTime.cs + + + FrmText.cs + + + FrmTitle.cs + + + Form1.cs + + + FrmMessageBox.cs + + + FrmAddTools.cs + + + FrmSetting.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + FrmColor.cs + + + FrmCreateProject.cs + + + FrmEncode.cs + + + FrmJson.cs + + + FrmPathInfo.cs + + + FrmProject.cs + + + FrmProjectSearch.cs + + + FrmQrCode.cs + + + FrmRegex.cs + + + FrmSetup.cs + + + FrmStrCount.cs + + + FrmStrToCode.cs + + + FrmTime.cs + + + FrmToolsBox.cs + + + FrmToolsSearch.cs + + + FrmWebGet.cs + + + FrmXpath.cs + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/开发辅助工具/SuperDesign.csproj.user b/Source/开发辅助工具/SuperDesign.csproj.user new file mode 100644 index 0000000..b5c8d8a --- /dev/null +++ b/Source/开发辅助工具/SuperDesign.csproj.user @@ -0,0 +1,9 @@ + + + + get "E:\我的代码\网上源码\ProgramCalculator\FRData\FRData.csproj" + + + ProjectFiles + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmColor.Designer.cs b/Source/开发辅助工具/Tools/FrmColor.Designer.cs new file mode 100644 index 0000000..ca683f7 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmColor.Designer.cs @@ -0,0 +1,220 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmColor + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmColor)); + this.superColor1 = new ryControls.SuperColor(); + this.label1 = new System.Windows.Forms.Label(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.ColTitle = new XPTable.Models.TextColumn(); + this.ColValue = new XPTable.Models.TextColumn(); + this.ColDes = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.label2 = new System.Windows.Forms.Label(); + this.TxtType = new ryControls.TextBoxEx2(); + this.label3 = new System.Windows.Forms.Label(); + this.TxtValue = new ryControls.TextBoxEx2(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.SuspendLayout(); + // + // superColor1 + // + this.superColor1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.superColor1.Cursor = System.Windows.Forms.Cursors.Hand; + this.superColor1.Location = new System.Drawing.Point(68, 10); + this.superColor1.Name = "superColor1"; + this.superColor1.Size = new System.Drawing.Size(73, 22); + this.superColor1.TabIndex = 0; + this.superColor1.BackColorChanged += new System.EventHandler(this.SuperColor1_BackColorChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 15); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(53, 12); + this.label1.TabIndex = 1; + this.label1.Text = "选择颜色"; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(185, 70); + this.menuRight1.SourceContent = this; + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(11, 38); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(777, 353); + this.table1.TabIndex = 16; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColTitle, + this.ColValue, + this.ColDes}); + // + // ColTitle + // + this.ColTitle.Editable = false; + this.ColTitle.Tag = null; + this.ColTitle.Text = "类型"; + this.ColTitle.Width = 130; + // + // ColValue + // + this.ColValue.Editable = false; + this.ColValue.Tag = null; + this.ColValue.Text = "值"; + this.ColValue.Width = 220; + // + // ColDes + // + this.ColDes.Editable = false; + this.ColDes.Tag = null; + this.ColDes.Text = "备注"; + this.ColDes.Width = 350; + // + // tableModel1 + // + this.tableModel1.RowHeight = 25; + this.tableModel1.SelectionChanged += new XPTable.Events.SelectionEventHandler(this.TableModel1_SelectionChanged); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 405); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(29, 12); + this.label2.TabIndex = 17; + this.label2.Text = "类型"; + // + // TxtType + // + this.TxtType.BackColor = System.Drawing.Color.White; + this.TxtType.EmptyText = ""; + this.TxtType.Location = new System.Drawing.Point(47, 397); + this.TxtType.MaxLength = 999999999; + this.TxtType.Multiline = false; + this.TxtType.Name = "TxtType"; + this.TxtType.OnlyNumeric = false; + this.TxtType.PasswordChar = '\0'; + this.TxtType.ReadOnly = true; + this.TxtType.SelectedText = ""; + this.TxtType.SelectionLength = 0; + this.TxtType.SelectionStart = 0; + this.TxtType.Size = new System.Drawing.Size(143, 29); + this.TxtType.TabIndex = 18; + this.TxtType.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtType.ToolTip = ""; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(200, 405); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(17, 12); + this.label3.TabIndex = 19; + this.label3.Text = "值"; + // + // TxtValue + // + this.TxtValue.BackColor = System.Drawing.Color.White; + this.TxtValue.EmptyText = ""; + this.TxtValue.Location = new System.Drawing.Point(223, 397); + this.TxtValue.MaxLength = 999999999; + this.TxtValue.Multiline = false; + this.TxtValue.Name = "TxtValue"; + this.TxtValue.OnlyNumeric = false; + this.TxtValue.PasswordChar = '\0'; + this.TxtValue.ReadOnly = true; + this.TxtValue.SelectedText = ""; + this.TxtValue.SelectionLength = 0; + this.TxtValue.SelectionStart = 0; + this.TxtValue.Size = new System.Drawing.Size(229, 29); + this.TxtValue.TabIndex = 20; + this.TxtValue.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtValue.ToolTip = ""; + // + // FrmColor + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.TxtValue); + this.Controls.Add(this.label3); + this.Controls.Add(this.TxtType); + this.Controls.Add(this.label2); + this.Controls.Add(this.table1); + this.Controls.Add(this.label1); + this.Controls.Add(this.superColor1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmColor"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "颜色转换"; + this.Load += new System.EventHandler(this.FrmColor_Load); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.SuperColor superColor1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.ToolTip toolTip1; + private ryPaiban.Model.MenuRight menuRight1; + private XPTable.Models.Table table1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn ColTitle; + private XPTable.Models.TextColumn ColValue; + private XPTable.Models.TextColumn ColDes; + private XPTable.Models.TableModel tableModel1; + private ryControls.TextBoxEx2 TxtValue; + private System.Windows.Forms.Label label3; + private ryControls.TextBoxEx2 TxtType; + private System.Windows.Forms.Label label2; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmColor.cs b/Source/开发辅助工具/Tools/FrmColor.cs new file mode 100644 index 0000000..e6b8396 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmColor.cs @@ -0,0 +1,70 @@ +using ryCommon; +using ryControls; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmColor : DockContent + { + public FrmColor() + { + InitializeComponent(); + } + + private void SuperColor1_BackColorChanged(object sender, EventArgs e) + { + Color color = superColor1.BackColor; + ryControls.ColorRGB RGB =new ryControls.ColorRGB(color.R,color.G,color.B); + var hsl= ryControls.ColorHelper.RgbToHsl(RGB); + var hsv = ryControls.ColorHelper.RgbToHsv(RGB); + tableModel1.Rows.Clear(); + AddList("RGB颜色值", "rgb(" + color.R + "," + color.G + "," + color.B + ")",""); + AddList("RGBA颜色值", "rgba(" + color.R + "," + color.G + "," + color.B + "," + color.A + ")", "HTML5、CSS3常用"); + AddList("ARGB颜色值", String.Format("#{0:X2}{1:X2}{2:X2}{3:X2}", color.A, color.R, color.G, color.B), "android常用"); + AddList("16进制颜色值", String.Format("#{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B), ""); + AddList("HSL颜色值", "hsl(" + color.GetHue().ToString("0.00") + "," + color.GetSaturation().ToString("0.00%") + "," + (hsl.L / 255m).ToString("0.00%") + ")", ""); + AddList("HSV颜色值", "hsv(" + color.GetHue().ToString("0.00") + "," + (hsv.S / 255m).ToString("0.00") + "," + (hsv.V / 255m).ToString("0.00") + ")", ""); + ColorHelper.RGB2CMYK(RGB, out var c, out var m, out var y, out var k); + AddList("CMYK", c.ToInt().ToString()+","+m.ToInt().ToString() + "," + y.ToInt().ToString() + "," + k.ToInt().ToString(), "印刷四色模式"); + ColorHelper.RGB2XYZ(RGB, out var x, out var y1, out var z); + AddList("XYZ", x.ToString("0.000") + "," + y1.ToString("0.000") + "," + z.ToString("0.000"), "D65/2°"); + ColorHelper.RGB2Yxy(RGB, out var Y, out var x2, out var y2); + AddList("Yxy", Y.ToString("0.000") + "," + x2.ToString("0.000") + "," + y2.ToString("0.000"), "D65/2°"); + void AddList(string title,string value,string des) + { + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = "" + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(title));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(value));//示例 + var cell = new XPTable.Models.Cell(des) + { + ForeColor = Color.Gray + }; + itemList.Cells.Add(cell); + tableModel1.Rows.Add(itemList); + } + } + private void FrmColor_Load(object sender, EventArgs e) + { + } + + private void TableModel1_SelectionChanged(object sender, XPTable.Events.SelectionEventArgs e) + { + if (e.NewSelectedIndicies.Length <= 0) { TxtType.Text = "";TxtValue.Text = ""; return; } + int row = e.NewSelectedIndicies[0]; + TxtType.Text = table1.TableModel.Rows[row].Cells[ColTitle.Index].Text; + TxtValue.Text = table1.TableModel.Rows[row].Cells[ColValue.Index].Text; + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmColor.resx b/Source/开发辅助工具/Tools/FrmColor.resx new file mode 100644 index 0000000..fa8c2e2 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmColor.resx @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 118, 17 + + + 242, 17 + + + 383, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAOgkAADoJAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD6tMMA+rTDAPq0wwD6tMMA+rTDAPq0 + wwD6tMMA+rTDAPq0wwD6tMMA+rTDAPq0wwD6tMMA+rTDAPq0wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw0n0A8NJ9APDRgADq41YA+7LHEPq0 + wzX6tMNe+rTDffq0w4n6tMOK+rTDfvq0w2D6tMM3+bTDEaSE5wB0avsAZGH/AGlk/wAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADw0n0A8NJ9APDSfQDw0n0A8NN6J/PK + kXz5tr7I+rTE8Pq0w/76tMP/+rTD//q0w//6tMP/+rTD//q0w/D7tcPK3KTPf21m/SqIdfIAaWT/AGlk + /wBpZP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8NJ9APDSfQDw0n0A8NJ9FPDS + fXvw0n3g8NF+//TFm//6tcD/+rTD//q0w//6tMP/+rTD//q0w//6tMP/+rTD//y1wv/PnNX/bGb+4mlk + /39pZP8WaWT/AGlk/wBpZP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPDSfQDw0n0A8NJ9APDS + fTDw0n278NJ9//DSff/w0n3/8NJ9//TFm//6tcD/+rTD//q0w//6tMP/+rTD//q0w//6tMP//LXC/86c + 1f9sZf7/aWT//2lk/75pZP8zaWT/AGlk/wBpZP8AAAAAAAAAAAAAAAAAAAAAAAAAAADw0n0A8NJ9APDS + fQDw0n088NJ91fDSff/w0n3/8NJ9//DSff/w0n3/8NJ9//TFm//6tcD/+rTD//q0w//6tMP/+rTD//q0 + w//8tcL/zpzV/2xl/v9pZP//aWT//2lk/9lpZP9AaWT/AGlk/wBpZP8AAAAAAAAAAAAAAAAAAAAAAPDS + fQDw0n0A8NJ9L/DSfdXw0n3/8NJ9//DSff/w0n3/8NJ9//DSff/w0n3/8NJ9//TFm//6tcD/+rTD//q0 + w//6tMP/+rTD//y1wv/OnNX/bGX+/2lk//9pZP//aWT//2lk/9lpZP8zaWT/AGlk/wAAAAAAAAAAAAAA + AADw0n0A8NJ9APDSfRPw0n268NJ9//DSff/w0n3/8NJ9//DSff/w0n3/8NJ9//DSff/w0n3/8NJ9//TF + m//6tcD/+rTD//q0w//6tMP//LXC/86c1f9sZf7/aWT//2lk//9pZP//aWT//2lk/75pZP8WaWT/AGlk + /wAAAAAAAAAAAPLRfQDs1H0A8NJ9efDSff/w0n3/8NJ9//DSff/w0n3/8NJ9//DSff/w0n3/8NJ9//DS + ff/w0n3/8NJ9//TFm//6tcD/+rTD//q0w//8tcL/zpzV/2xl/v9pZP//aWT//2lk//9pZP//aWT//2lk + /39pZP8AaWT/AGlk/wDD5n0A7dN9AO/TfSbv0n3e79J9/+/Sff/v0n3/79J9/+/Sff/v0n3/79J9/+/S + ff/v0n3/79J9//DSffvw0n378NJ9+/TFm/v6tcD/+rTD//y1wv/OnNX/bGX+/2lk//9pZP//aWT//2lk + //9pZP//aWT/4mlg/ylpZ/8AZKr/AMPmfQDY3X0AzOJ9edDgff/R4H3/0eB9/9Hgff/R4H3/0eB9/9Hg + ff/R4H3/0eB9/9HgffXe2n2D8dJ9T/DSfVDw0nxQ8NF+T/m4uYD6tMPz/LXC/86c1f9sZf7/aWT//2lk + //9pZP//aWT//2lk//9pZv//Z3n/f2w1/wBkqv8Aw+Z9AMPmfQ7D5n3FwuZ9/8Lmff/C5n3/wuZ9/8Lm + ff/C5n3/wuZ9/8Lmff/C5n32wed9c2//fQLr1H0A8NJ9APDSfQDyzYkA/5/0Afq0w279tcL0zpzV/2tl + /v9pZP//aWT//2lk//9pZP//aWX//2eD//9kpv/JZK3/EGSq/wDD5n0Aw+Z9MsPmfe7D5n3/w+Z9/8Pm + ff/D5n3/w+Z9/8Pmff/D5n3/w+Z99cPmfXPD5n0Dw+Z9AMPmfQAAAAAAAAAAAPq0wwD6tMMA+rTDAv+3 + wW7Mm9bzbGb+/2lk//9pZP//aWT//2ll//9ng///ZKf//2Sq//Bkqv83ZKr/AMPmfQDD5n1aw+Z9/cPm + ff/D5n3/w+Z9/8Pmff/D5n3/xOZ9/7/mf/+25YSF5ehrAsPmfQDD5n0AAAAAAAAAAAAAAAAAAAAAAPq0 + wwD6tMMA//8AAaGD6IBrZf7/aWT//2lk//9pZf//Z4P//2Sn//9kqv//ZKr//2Sq/19kqv8Aw+Z9AMPm + fXfD5n3/w+Z9/8Pmff/D5n3/w+Z9/8Tmff+/5n//j+OY/WfhrVR24qYAw+Z9AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAPq0wwB3bPkAZWL/T2lk//tpZP//aWX//2eD//9kp///ZKr//2Sq//9kqv//ZKr/fmSq + /wDD5n0Aw+Z9h8Pmff/D5n3/w+Z9/8Pmff/E5n3/v+Z//4/jmP9l4a79Y+GwVmPhrwAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGlk/wBpZP9QaWT/+2ll//9ng///ZKf//2Sq//9kqv//ZKr//2Sq + //9kqv+KZKr/AMPmfQDD5n2Gw+Z9/8Pmff/D5n3/xOZ9/7/mf/+P45j/ZeGu/2Thr/1k4a9WZOGvAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaWT/AGlj/1BpZf/7Z4P//2Sn//9kqv//ZKr//2Sq + //9kqv//ZKr//2Sq/4lkqv8Aw+Z9AMPmfXfD5n3/w+Z9/8Tmff+/5n//j+OY/2Xhrv9k4a//ZOGv/WTh + rlRk4rQAZObXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGSq/wBocf8AaWb/T2eD//tkp///ZKr//2Sq + //9kqv//ZKr//2Sq//9kqv//ZKr/fWSq/wDD5n0Aw+Z9WMPmff3E5n3/v+Z//4/jmP9l4a7/ZOGv/2Th + r/9k4bD/ZOO+iWTs/wNk5tcAZObXAAAAAAAAAAAAAAAAAAAAAABkqv8AZKr/AGLD/wJlof+DZKf//2Sq + //9kqv//ZKr//2Sq//9kqv//ZKr//2Sq//5kqv9fZKr/AMPmfQDD5n0xxOZ97b/mf/+P45j/ZeGu/2Th + r/9k4a//ZOGv/2ThsP9k5Mn2ZObYeGTm1wRk5tcAZObXAAAAAAAAAAAAZKr/AGSq/wBkqv8DZKr/c2Sq + //Vkqv//ZKr//2Sq//9kqv//ZKr//2Sq//9kqv//ZKr/8GSq/zZkqv8Aw+Z9AMjmeg295oDDkOOY/2Xh + rv9k4a//ZOGv/2Thr/9k4a//ZOGv/2Tkyv9k5tj3ZObXeGPmzgNo5vcAaeb/AGnm/wBo4P8AWjT/AmSo + /3Nkqf/2ZKn//2Sp//9kqf//ZKn//2Sp//9kqf//ZKn//2Sp//9kqv/IZKr/EGSq/wDD5n0AR9++AIHj + oHZm4a7/ZOGv/2Thr/9k4a//ZOGv/2Thr/9k4a//ZOTK/2Tm2P9k5tf2ZebciWnm/VRp5v9Waeb/Vmnn + /1Rn0f+FZr//9Wa+//9mvv//Zr7//2a+//9mvv//Zr7//2a+//9mvv//Zr7//2W4/31nzv8AZKr/AMPm + fQBn4a4AX+GyJGThr9xk4a//ZOGv/2Thr/9k4a//ZOGv/2Thr/9k5Mr/ZObY/2Tm1/9k5tn/Z+bs/Wnm + /v1p5v/9aeb//Wnl//9p5f//aeX//2nl//9p5f//aeX//2nl//9p5f//aeX//2nl//9p5f/gaeb/KGni + /wBkqv8AAAAAAGThrwBk4a8AZOGvdWThr/5k4a//ZOGv/2Thr/9k4a//ZOGv/2Tkyv9k5tj/ZObX/2Tm + 1/9k5tj/Z+bt/2nm/v9p5v//aeb//2nm//9p5v//aeb//2nm//9p5v//aeb//2nm//9p5v//aeb//2nm + /3tp4v8Aaef/AAAAAAAAAAAAZOGvAGThrwBk4a8RZOGvtmThr/9k4a//ZOGv/2Thr/9k4a//ZOTK/2Tm + 2P9k5tf/ZObX/2Tm1/9k5tj/Z+bt/2nm/v9p5v//aeb//2nm//9p5v//aeb//2nm//9p5v//aeb//2nm + //9p5v+7aeb/FGnm/wBp5v8AAAAAAAAAAAAAAAAAZOGvAGThrwBk4a8sZOGv0mThr/9k4a//ZOGv/2Th + r/9k5Mr/ZObY/2Tm1/9k5tf/ZObX/2Tm1/9k5tj/Z+bt/2nm/v9p5v//aeb//2nm//9p5v//aeb//2nm + //9p5v//aeb/1mnm/zBp5v8Aaeb/AAAAAAAAAAAAAAAAAAAAAABk4a8AZOGvAGThrwBk4a84ZOGv0mTh + r/9k4a//ZOGv/2Tkyv9k5tj/ZObX/2Tm1/9k5tf/ZObX/2Tm1/9k5tj/Z+bt/2nm/v9p5v//aeb//2nm + //9p5v//aeb//2nm/9Vp5v88aeb/AGnm/wBp5v8AAAAAAAAAAAAAAAAAAAAAAAAAAABk4a8AZOGvAGTh + rwBk4a8sZOGvtmThr/5k4a//ZOTK/2Tm2P9k5tf/ZObX/2Tm1/9k5tf/ZObX/2Tm1/9k5tj/Z+bt/2nm + /v9p5v//aeb//2nm//9p5v+6aeb/L2nm/wBp5v8Aaeb/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AABk4a8AZOGvAGThrwBk4a8RZOGvdmThr9xk5Mr/ZObY/2Tm1/9k5tf/ZObX/2Tm1/9k5tf/ZObX/2Tm + 1/9k5tj/Z+bs/2nm/v9p5v/eaeb/eWnm/xNp5v8Aaeb/AGnm/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAABk4a8AZOGvAGThrwBk4bEAZOGvJGTlzndk5tfDZObX7WTm1/1k5tf/ZObX/2Tm + 1/9k5tf/ZObX/WTm1+5k5tnEZ+byeWnm/yVp5v8Aaeb/AGnm/wBp5v8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZOGvAGThrQBk4bEAZOTEAGTm1w1k5tcxZObXWGTm + 13dk5teGZObXh2Tm13dk5tdZZObXMmTm1Q5r5v8Aaeb+AGnm/wBp5v8AAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGTm1wBk5tcAZObXAGTm + 1wBk5tcAZObXAGTm1wBk5tcAZObXAGTm1wBk5tcAZObXAGTm1wBk5tcAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/wAA//4AAH/4AAAf8AAAD+AAAAfAAAADwAAAA4AAAAGAAAAAAAAAAAAA + AAAAAAAAAAGAAAADwAAAB+AAAA/wAAAP8AAAB+AAAAPAAAABgAAAAAAAAAAAAAAAAACAAAAAgAAAAcAA + AAPAAAAD4AAAB/AAAA/4AAAf/gAAf/+AAf8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmCreateProject.Designer.cs b/Source/开发辅助工具/Tools/FrmCreateProject.Designer.cs new file mode 100644 index 0000000..a297048 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmCreateProject.Designer.cs @@ -0,0 +1,287 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmCreateProject + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.TxtFolder = new ryControls.TextBoxEx2(); + this.label1 = new System.Windows.Forms.Label(); + this.BtnBrowser = new ryControls.ButtonEx(); + this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); + this.BtnCreate = new ryControls.ButtonEx(); + this.label2 = new System.Windows.Forms.Label(); + this.TxtProjectName = new ryControls.TextBoxEx2(); + this.TxtProjectEngName = new ryControls.TextBoxEx2(); + this.label3 = new System.Windows.Forms.Label(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.ColName = new XPTable.Models.TextColumn(); + this.ColPath = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.ChkUnCreateProject = new System.Windows.Forms.CheckBox(); + this.label4 = new System.Windows.Forms.Label(); + this.CbbLang = new ryControls.ComboBoxEx(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.SuspendLayout(); + // + // TxtFolder + // + this.TxtFolder.BackColor = System.Drawing.Color.White; + this.TxtFolder.EmptyText = ""; + this.TxtFolder.Location = new System.Drawing.Point(17, 24); + this.TxtFolder.MaxLength = 999999999; + this.TxtFolder.Multiline = false; + this.TxtFolder.Name = "TxtFolder"; + this.TxtFolder.OnlyNumeric = false; + this.TxtFolder.PasswordChar = '\0'; + this.TxtFolder.ReadOnly = false; + this.TxtFolder.SelectedText = ""; + this.TxtFolder.SelectionLength = 0; + this.TxtFolder.SelectionStart = 0; + this.TxtFolder.Size = new System.Drawing.Size(575, 33); + this.TxtFolder.TabIndex = 0; + this.TxtFolder.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtFolder.ToolTip = ""; + this.TxtFolder.WordWrap = true; + this.TxtFolder.Click += new System.EventHandler(this.TxtFolder_Click); + this.TxtFolder.Enter += new System.EventHandler(this.TxtFolder_Enter); + this.TxtFolder.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtFolder_KeyDown); + this.TxtFolder.Leave += new System.EventHandler(this.TxtFolder_Leave); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(15, 9); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 1; + this.label1.Text = "选择文件夹"; + // + // BtnBrowser + // + this.BtnBrowser.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnBrowser.Location = new System.Drawing.Point(598, 24); + this.BtnBrowser.Name = "BtnBrowser"; + this.BtnBrowser.Size = new System.Drawing.Size(75, 33); + this.BtnBrowser.TabIndex = 2; + this.BtnBrowser.Text = "选择"; + this.BtnBrowser.UseVisualStyleBackColor = true; + this.BtnBrowser.Click += new System.EventHandler(this.BtnBrowser_Click); + // + // BtnCreate + // + this.BtnCreate.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnCreate.Location = new System.Drawing.Point(17, 153); + this.BtnCreate.Name = "BtnCreate"; + this.BtnCreate.Size = new System.Drawing.Size(75, 33); + this.BtnCreate.TabIndex = 3; + this.BtnCreate.Text = "生成"; + this.BtnCreate.UseVisualStyleBackColor = true; + this.BtnCreate.Click += new System.EventHandler(this.BtnCreate_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(15, 60); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(89, 12); + this.label2.TabIndex = 4; + this.label2.Text = "项目名称(中文)"; + // + // TxtProjectName + // + this.TxtProjectName.BackColor = System.Drawing.Color.White; + this.TxtProjectName.EmptyText = ""; + this.TxtProjectName.Location = new System.Drawing.Point(17, 75); + this.TxtProjectName.MaxLength = 999999999; + this.TxtProjectName.Multiline = false; + this.TxtProjectName.Name = "TxtProjectName"; + this.TxtProjectName.OnlyNumeric = false; + this.TxtProjectName.PasswordChar = '\0'; + this.TxtProjectName.ReadOnly = false; + this.TxtProjectName.SelectedText = ""; + this.TxtProjectName.SelectionLength = 0; + this.TxtProjectName.SelectionStart = 0; + this.TxtProjectName.Size = new System.Drawing.Size(256, 33); + this.TxtProjectName.TabIndex = 5; + this.TxtProjectName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtProjectName.ToolTip = ""; + this.TxtProjectName.WordWrap = true; + // + // TxtProjectEngName + // + this.TxtProjectEngName.BackColor = System.Drawing.Color.White; + this.TxtProjectEngName.EmptyText = ""; + this.TxtProjectEngName.Location = new System.Drawing.Point(279, 75); + this.TxtProjectEngName.MaxLength = 999999999; + this.TxtProjectEngName.Multiline = false; + this.TxtProjectEngName.Name = "TxtProjectEngName"; + this.TxtProjectEngName.OnlyNumeric = false; + this.TxtProjectEngName.PasswordChar = '\0'; + this.TxtProjectEngName.ReadOnly = false; + this.TxtProjectEngName.SelectedText = ""; + this.TxtProjectEngName.SelectionLength = 0; + this.TxtProjectEngName.SelectionStart = 0; + this.TxtProjectEngName.Size = new System.Drawing.Size(256, 33); + this.TxtProjectEngName.TabIndex = 7; + this.TxtProjectEngName.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtProjectEngName.ToolTip = ""; + this.TxtProjectEngName.WordWrap = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(277, 60); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(89, 12); + this.label3.TabIndex = 6; + this.label3.Text = "项目名称(英文)"; + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(20, 247); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(575, 347); + this.table1.TabIndex = 113; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.Visible = false; + this.table1.CellLostFocus += new XPTable.Events.CellFocusEventHandler(this.table1_CellLostFocus); + this.table1.Click += new System.EventHandler(this.table1_Click); + this.table1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.table1_KeyDown); + this.table1.Leave += new System.EventHandler(this.table1_Leave); + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColName, + this.ColPath}); + // + // ColName + // + this.ColName.Editable = false; + this.ColName.Tag = null; + this.ColName.Text = "名称"; + this.ColName.Width = 130; + // + // ColPath + // + this.ColPath.Editable = false; + this.ColPath.Tag = null; + this.ColPath.Text = "路径"; + this.ColPath.Width = 400; + // + // ChkUnCreateProject + // + this.ChkUnCreateProject.AutoSize = true; + this.ChkUnCreateProject.Location = new System.Drawing.Point(17, 114); + this.ChkUnCreateProject.Name = "ChkUnCreateProject"; + this.ChkUnCreateProject.Size = new System.Drawing.Size(108, 16); + this.ChkUnCreateProject.TabIndex = 114; + this.ChkUnCreateProject.Text = "不生成模板项目"; + this.ChkUnCreateProject.UseVisualStyleBackColor = true; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(542, 60); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 12); + this.label4.TabIndex = 115; + this.label4.Text = "项目语言"; + // + // CbbLang + // + this.CbbLang.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbLang.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbLang.Font = new System.Drawing.Font("宋体", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbLang.FormattingEnabled = true; + this.CbbLang.Items.AddRange(new object[] { + "C#", + "Delphi"}); + this.CbbLang.Location = new System.Drawing.Point(544, 78); + this.CbbLang.Name = "CbbLang"; + this.CbbLang.Size = new System.Drawing.Size(121, 27); + this.CbbLang.TabIndex = 116; + // + // FrmCreateProject + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(688, 450); + this.Controls.Add(this.table1); + this.Controls.Add(this.CbbLang); + this.Controls.Add(this.label4); + this.Controls.Add(this.ChkUnCreateProject); + this.Controls.Add(this.TxtProjectEngName); + this.Controls.Add(this.label3); + this.Controls.Add(this.TxtProjectName); + this.Controls.Add(this.label2); + this.Controls.Add(this.BtnCreate); + this.Controls.Add(this.BtnBrowser); + this.Controls.Add(this.label1); + this.Controls.Add(this.TxtFolder); + this.Name = "FrmCreateProject"; + this.Text = "创建项目"; + this.Load += new System.EventHandler(this.FrmCreateProject_Load); + this.Shown += new System.EventHandler(this.FrmCreateProject_Shown); + this.Click += new System.EventHandler(this.FrmCreateProject_Click); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Label label1; + private ryControls.ButtonEx BtnBrowser; + private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; + private ryControls.ButtonEx BtnCreate; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private XPTable.Models.Table table1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn ColName; + private XPTable.Models.TextColumn ColPath; + private XPTable.Models.TableModel tableModel1; + private System.Windows.Forms.Label label4; + public ryControls.TextBoxEx2 TxtFolder; + public System.Windows.Forms.CheckBox ChkUnCreateProject; + public ryControls.TextBoxEx2 TxtProjectName; + public ryControls.TextBoxEx2 TxtProjectEngName; + public ryControls.ComboBoxEx CbbLang; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmCreateProject.cs b/Source/开发辅助工具/Tools/FrmCreateProject.cs new file mode 100644 index 0000000..51c92f9 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmCreateProject.cs @@ -0,0 +1,313 @@ +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Xml; +using 开发辅助工具.Manager; + +namespace 开发辅助工具.Tools +{ + public partial class FrmCreateProject : Form + { + public FrmCreateProject() + { + ProcUse = true; + InitializeComponent(); + CbbLang.SelectedIndex = 0; + } + bool ProcUse = false; + RyProject project = new RyProject(); + private void FrmCreateProject_Load(object sender, EventArgs e) + { + ryCommon.RyFiles.AddDropDrag(TxtFolder.Handle).ElevatedDragDrop += FrmCreateProject_ElevatedDragDrop; + project.CopyDllToBin = true; + var lines = RyFiles.ReadAllLines(Application.StartupPath+"\\SysDb\\Folder.txt"); + for (int i = 0; i < lines.Length; i++) + { + var item = lines[i].Split('|'); + if(item.Length>=2) + { + if (System.IO.Directory.Exists(item[1])) + { AddItem(item[0], item[1]); } + } + } + } + private void AddItem(string name,string path) + { + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = "" + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(name));//示例 + var cell = new XPTable.Models.Cell(path); + cell.ForeColor = Color.Gray; + itemList.Cells.Add(cell); + tableModel1.Rows.Add(itemList); + } + private void FrmCreateProject_ElevatedDragDrop(object sender, ElevatedDragDropArgs e) + { + TxtFolder.Text = e.Files[0]; + table1.Visible = false; + } + + private void BtnBrowser_Click(object sender, EventArgs e) + { + if(folderBrowserDialog1.ShowDialog()==DialogResult.OK) + { + TxtFolder.Text = folderBrowserDialog1.SelectedPath; + table1.Visible = false; + } + } + + private void BtnCreate_Click(object sender, EventArgs e) + { + var CshapeBasePath = project.CshapeBasePath; + var ReferenceDllPath = project.ReferenceDllPath; + var path = TxtFolder.Text.TrimEnd('\\'); + var project_name = TxtProjectName.Text; + var project_Eng_name = TxtProjectEngName.Text; + #region 判断项目是否符合标准 + if (!ryCommon.RyFiles.IsValidFileName(project_name)) + { + MessageBox.Show("无效的项目名称(中文)", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; + } + if (!ryCommon.RyFiles.IsValidFileName(project_Eng_name) || !project_Eng_name.Replace(" ", "").IsEngOrNum()) + { + MessageBox.Show("无效的项目名称(英文)", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; + } + else if (project_Eng_name.Length < 3 || project_Eng_name.Substring(0, 1).IsInt() || project_Eng_name.Substring(0, 1) == " ") + { + MessageBox.Show("无效的项目名称(英文)", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; + } + var full_path = path + "\\" + project_name; + if(System.IO.Directory.Exists(path + "\\Bin") && System.IO.Directory.Exists(path + "\\Source")) + { + full_path = path; + } + ryCommon.RyFiles.CreateDirectory(full_path); + if(!System.IO.Directory.Exists(full_path)) + { + MessageBox.Show("创建路径失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);return; + } + #endregion + BtnCreate.Enabled = false; + var prog_lang = "c#"; + if (CbbLang.SelectedIndex == 0) { prog_lang = "c#"; } + else if (CbbLang.SelectedIndex == 1) { prog_lang = "delphi"; } + #region 创建项目必备文件夹和文件 + ryCommon.RyFiles.CreateDirectory(full_path + "\\Bin\\Debug\\"+project_Eng_name); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Source"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Res"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Res\\ThirdParty"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Res\\Images"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Publish\\Green"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Publish\\Green\\HistoryVer"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Publish\\Install"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Publish\\Install\\HistoryVer"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Publish\\OriginalFiles"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Publish\\UpdateFile"); + ryCommon.RyFiles.CreateDirectory(full_path + "\\Help"); + if (!System.IO.File.Exists(full_path + "\\CHANGELOG.md")) + { ryCommon.RyFiles.WriteAllText(full_path + "\\CHANGELOG.md", "", Encoding.UTF8); } + if (!System.IO.File.Exists(full_path + "\\README.md")) + { ryCommon.RyFiles.WriteAllText(full_path + "\\README.md", "", Encoding.UTF8); } + if (!System.IO.File.Exists(full_path + "\\Publish\\Publish.set")) + { + ryCommon.RyFiles.WriteAllText(full_path + "\\Publish\\Publish.set", "#del表示删除文件;copy表示复制文件;" + + "\r\n#原目录:Bin\\Debug\\或Bin\\Release,目标目录:Publish\\OriginalFiles" + + "\r\ndel:UserDb\r\ndel:Db\r\ncopy:SysDb\\*->SysDb\\", Encoding.UTF8); + } + #endregion + if (prog_lang == "c#") + { + #region 生成混淆信息 + ReactorXML xml = new ReactorXML(); + xml.LoadXML(Application.StartupPath + "\\SysDb\\混淆.nrproj"); + if (!System.IO.File.Exists(full_path + "\\Bin\\混淆_Debug.nrproj")) + { + List files_debug = new List + { + "Debug\\"+project_Eng_name+"\\" + project_Eng_name + ".exe", + "Debug\\"+project_Eng_name+"\\" + "MyDb.dll", + "Debug\\"+project_Eng_name+"\\" + "MyDb_SQLite.dll", + "Debug\\"+project_Eng_name+"\\" + "ryUpdate.dll", + "Debug\\"+project_Eng_name+"\\" + "ryControls.dll" + }; + xml.Save(full_path + "\\Bin\\混淆_Debug.nrproj", files_debug); + } + if (!System.IO.File.Exists(full_path + "\\Bin\\混淆_Release.nrproj")) + { + List files_Release = new List + { + "Release\\"+project_Eng_name+"\\" + project_Eng_name + ".exe", + "Release\\"+project_Eng_name+"\\" + "MyDb.dll", + "Release\\"+project_Eng_name+"\\" + "MyDb_SQLite.dll", + "Release\\"+project_Eng_name+"\\" + "ryUpdate.dll", + "Release\\"+project_Eng_name+"\\" + "ryControls.dll" + }; + xml.Save(full_path + "\\Bin\\混淆_Release.nrproj", files_Release); + } + #endregion + } + #region 设置项目配置文件 + if (!System.IO.File.Exists(full_path + "\\查看项目.ryp")) + { + ryCommon.Ini ini = new ryCommon.Ini(full_path + "\\查看项目.ryp"); + ini.WriteIni("project", "name", project_name);//项目名称 + ini.WriteIni("project", "engname", project_Eng_name);//英文项目名称 + ini.WriteIni("project", "usqver", 2.1);//使用的标准版本,新毕方项目标准基于USQ 2.1 + ini.WriteIni("project", "proglang", prog_lang);//项目使用的语言 + ini.WriteIni("project", "progID", Guid.NewGuid().ToString("D"));//项目唯一ID,用于区分不同项目 + } + if (!System.IO.File.Exists(full_path + "\\.gitignore")) //复制git忽略规则 + { + RyFiles.CopyFile(Application.StartupPath+ "\\SysDb\\.gitignore", full_path + "\\.gitignore"); + } + #endregion + if (!ChkUnCreateProject.Checked) + { + #region 复制和修改基准项目 + if (System.IO.Directory.Exists(CshapeBasePath) && prog_lang == "c#") //存在基准项目 + { + var source_folder = full_path + "\\Source\\" + project_Eng_name; + ryCommon.RyFiles.CopyFile(CshapeBasePath + "\\*", source_folder); + ryCommon.RyFiles.DeleteFile(source_folder + "\\Bin"); + ryCommon.RyFiles.DeleteFile(source_folder + "\\obj"); + if (System.IO.File.Exists(source_folder + "\\Itrycn_Project.csproj")) + { + ryCommon.RyFiles.MoveFile(source_folder + "\\Itrycn_Project.csproj", source_folder + "\\" + project_Eng_name + ".csproj"); + ryCommon.RyFiles.MoveFile(source_folder + "\\Itrycn_Project.csproj.user", source_folder + "\\" + project_Eng_name + ".csproj.user"); + } + if (System.IO.File.Exists(source_folder + "\\Itrycn_Project2.csproj")) + { + ryCommon.RyFiles.MoveFile(source_folder + "\\Itrycn_Project2.csproj", source_folder + "\\" + project_Eng_name + ".csproj"); + ryCommon.RyFiles.MoveFile(source_folder + "\\Itrycn_Project2.csproj.user", source_folder + "\\" + project_Eng_name + ".csproj.user"); + } + #region 写入新的版本信息 + var AssemblyInfo = ryCommon.RyFiles.ReadAllText(Application.StartupPath + "\\SysDb\\AssemblyInfo.cs"); + AssemblyInfo = AssemblyInfo.Replace("@AssemblyTitle", project_Eng_name); + AssemblyInfo = AssemblyInfo.Replace("@AssemblyProduct", project_Eng_name); + AssemblyInfo = AssemblyInfo.Replace("@Copyright", "Copyright 2010-2020"); + ryCommon.RyFiles.WriteAllText(source_folder + "\\Properties\\AssemblyInfo.cs", AssemblyInfo, Encoding.UTF8); + #endregion + #region 替换命名空间 + //var Resources = ryCommon.RyFiles.ReadAllText(source_folder + "\\Properties\\Resources.Designer.cs"); + //Resources = Resources.Replace("Itrycn_Project.Properties", project_Eng_name.Replace(" ", "") + ".Properties"); + //Resources = Resources.Replace("Itrycn_Project2.Properties", project_Eng_name.Replace(" ", "") + ".Properties"); + //ryCommon.RyFiles.WriteAllText(source_folder + "\\Properties\\Resources.Designer.cs", Resources, Encoding.UTF8); + //var frmmain = ryCommon.RyFiles.ReadAllText(source_folder + "\\frmmain.Designer.cs"); + //frmmain = frmmain.Replace("Itrycn_Project.Properties", project_Eng_name.Replace(" ", "") + ".Properties"); + //frmmain = frmmain.Replace("Itrycn_Project2.Properties", project_Eng_name.Replace(" ", "") + ".Properties"); + //ryCommon.RyFiles.WriteAllText(source_folder + "\\frmmain.Designer.cs", frmmain, Encoding.UTF8); + #endregion + project.SetCSproj(source_folder + "\\" + project_Eng_name + ".csproj", project_Eng_name); + } + #endregion + } + BtnCreate.Enabled = true; + MessageBox.Show("创建成功。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + RyFiles.OpenFile(full_path); + } + + private void TxtFolder_Enter(object sender, EventArgs e) + { + if (ProcUse) { return; } + table1.Location = new Point(TxtFolder.Left,TxtFolder.Top+TxtFolder.Height); + table1.Visible = true; + table1.BringToFront(); + } + + private void TxtFolder_Leave(object sender, EventArgs e) + { + if (!table1.Focused) + { + table1.Visible = false; + } + } + + private void table1_Leave(object sender, EventArgs e) + { + if (!TxtFolder.Focused) + { + table1.Visible = false; + } + } + + private void table1_CellLostFocus(object sender, XPTable.Events.CellFocusEventArgs e) + { + if (e.Row == -1) { table1.Visible = false; } + } + + private void TxtFolder_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Down) + { + if (table1.Visible) + { + table1.TableModel.Selections.Clear(); + table1.TableModel.Selections.AddCells(0, 0, 0, columnModel1.Columns.Count - 1); + table1.Focus(); + } + } + } + + private void table1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up) + { + if (table1.SelectedItems.Length > 0 && table1.SelectedItems[0].Index == 0) + { + table1.TableModel.Selections.Clear(); + TxtFolder.Select(); + TxtFolder.SelectionLength = 0; + //rySearch1.Select(); + } + } + else if (e.KeyCode == Keys.Enter) + { + if (table1.SelectedItems.Length > 0) + { + TxtFolder.Text = table1.SelectedItems[0].Cells[ColPath].Text; + TxtFolder.SelectionLength = 0; + TxtFolder.SelectionStart = 0; + table1.Visible = false; + } + } + } + + private void table1_Click(object sender, EventArgs e) + { + if (table1.SelectedItems.Length > 0) + { + TxtFolder.Text = table1.SelectedItems[0].Cells[ColPath].Text; + TxtFolder.SelectionLength = 0; + TxtFolder.SelectionStart = 0; + table1.Visible = false; + } + } + + private void FrmCreateProject_Click(object sender, EventArgs e) + { + table1.Visible = false; + } + + private void FrmCreateProject_Shown(object sender, EventArgs e) + { + ProcUse = false; + } + + private void TxtFolder_Click(object sender, EventArgs e) + { + table1.Location = new Point(TxtFolder.Left, TxtFolder.Top + TxtFolder.Height); + table1.Visible = true; + table1.BringToFront(); + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmCreateProject.resx b/Source/开发辅助工具/Tools/FrmCreateProject.resx new file mode 100644 index 0000000..38fb545 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmCreateProject.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 224, 29 + + + 365, 29 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmEncode.Designer.cs b/Source/开发辅助工具/Tools/FrmEncode.Designer.cs new file mode 100644 index 0000000..14462d7 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmEncode.Designer.cs @@ -0,0 +1,313 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmEncode + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEncode)); + this.RbChsToUnicode = new System.Windows.Forms.RadioButton(); + this.RbUnicodeToChs = new System.Windows.Forms.RadioButton(); + this.CbbEncodingCode = new ryControls.RyComboBox(); + this.RbURLDecode = new System.Windows.Forms.RadioButton(); + this.RbURLEncode = new System.Windows.Forms.RadioButton(); + this.RbBase64Decode = new System.Windows.Forms.RadioButton(); + this.RbBase64Encode = new System.Windows.Forms.RadioButton(); + this.TxtResultCode = new ryControls.TextBoxEx2(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.RbChsToUTF8 = new System.Windows.Forms.RadioButton(); + this.RbUTF8ToChs = new System.Windows.Forms.RadioButton(); + this.RbMD5 = new System.Windows.Forms.RadioButton(); + this.RbSHA1 = new System.Windows.Forms.RadioButton(); + this.RbSHA256 = new System.Windows.Forms.RadioButton(); + this.RbSHA224 = new System.Windows.Forms.RadioButton(); + this.RbSHA512 = new System.Windows.Forms.RadioButton(); + this.TxtFromCode = new ryControls.Controls.RichTextBox2(); + this.SuspendLayout(); + // + // RbChsToUnicode + // + this.RbChsToUnicode.AutoSize = true; + this.RbChsToUnicode.Location = new System.Drawing.Point(463, 8); + this.RbChsToUnicode.Name = "RbChsToUnicode"; + this.RbChsToUnicode.Size = new System.Drawing.Size(101, 16); + this.RbChsToUnicode.TabIndex = 21; + this.RbChsToUnicode.Text = "中文转Unicode"; + this.RbChsToUnicode.UseVisualStyleBackColor = true; + this.RbChsToUnicode.CheckedChanged += new System.EventHandler(this.RbUnicodeToChs_CheckedChanged); + // + // RbUnicodeToChs + // + this.RbUnicodeToChs.AutoSize = true; + this.RbUnicodeToChs.Location = new System.Drawing.Point(356, 8); + this.RbUnicodeToChs.Name = "RbUnicodeToChs"; + this.RbUnicodeToChs.Size = new System.Drawing.Size(101, 16); + this.RbUnicodeToChs.TabIndex = 20; + this.RbUnicodeToChs.Text = "Unicode转中文"; + this.RbUnicodeToChs.UseVisualStyleBackColor = true; + this.RbUnicodeToChs.CheckedChanged += new System.EventHandler(this.RbUnicodeToChs_CheckedChanged); + // + // CbbEncodingCode + // + this.CbbEncodingCode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.CbbEncodingCode.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbEncodingCode.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbEncodingCode.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbEncodingCode.FormattingEnabled = true; + this.CbbEncodingCode.Items.AddRange(new object[] { + "UTF8", + "GBK", + "GB2312", + "ASCII", + "Unicode"}); + this.CbbEncodingCode.Location = new System.Drawing.Point(817, 2); + this.CbbEncodingCode.Name = "CbbEncodingCode"; + this.CbbEncodingCode.Size = new System.Drawing.Size(121, 22); + this.CbbEncodingCode.TabIndex = 19; + this.CbbEncodingCode.SelectedIndexChanged += new System.EventHandler(this.CbbEncodingCode_SelectedIndexChanged); + // + // RbURLDecode + // + this.RbURLDecode.AutoSize = true; + this.RbURLDecode.Location = new System.Drawing.Point(273, 8); + this.RbURLDecode.Name = "RbURLDecode"; + this.RbURLDecode.Size = new System.Drawing.Size(77, 16); + this.RbURLDecode.TabIndex = 18; + this.RbURLDecode.Text = "URLDecode"; + this.RbURLDecode.UseVisualStyleBackColor = true; + this.RbURLDecode.CheckedChanged += new System.EventHandler(this.RbBase64Encode_CheckedChanged); + // + // RbURLEncode + // + this.RbURLEncode.AutoSize = true; + this.RbURLEncode.Location = new System.Drawing.Point(190, 8); + this.RbURLEncode.Name = "RbURLEncode"; + this.RbURLEncode.Size = new System.Drawing.Size(77, 16); + this.RbURLEncode.TabIndex = 17; + this.RbURLEncode.Text = "URLEncode"; + this.RbURLEncode.UseVisualStyleBackColor = true; + this.RbURLEncode.CheckedChanged += new System.EventHandler(this.RbBase64Encode_CheckedChanged); + // + // RbBase64Decode + // + this.RbBase64Decode.AutoSize = true; + this.RbBase64Decode.Location = new System.Drawing.Point(101, 8); + this.RbBase64Decode.Name = "RbBase64Decode"; + this.RbBase64Decode.Size = new System.Drawing.Size(83, 16); + this.RbBase64Decode.TabIndex = 16; + this.RbBase64Decode.Text = "Base64解码"; + this.RbBase64Decode.UseVisualStyleBackColor = true; + this.RbBase64Decode.CheckedChanged += new System.EventHandler(this.RbBase64Encode_CheckedChanged); + // + // RbBase64Encode + // + this.RbBase64Encode.AutoSize = true; + this.RbBase64Encode.Checked = true; + this.RbBase64Encode.Location = new System.Drawing.Point(12, 8); + this.RbBase64Encode.Name = "RbBase64Encode"; + this.RbBase64Encode.Size = new System.Drawing.Size(83, 16); + this.RbBase64Encode.TabIndex = 15; + this.RbBase64Encode.TabStop = true; + this.RbBase64Encode.Text = "Base64编码"; + this.RbBase64Encode.UseVisualStyleBackColor = true; + this.RbBase64Encode.CheckedChanged += new System.EventHandler(this.RbBase64Encode_CheckedChanged); + // + // TxtResultCode + // + this.TxtResultCode.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtResultCode.BackColor = System.Drawing.Color.White; + this.TxtResultCode.EmptyText = "转换好后的内容"; + this.TxtResultCode.Location = new System.Drawing.Point(12, 234); + this.TxtResultCode.MaxLength = 999999999; + this.TxtResultCode.Multiline = true; + this.TxtResultCode.Name = "TxtResultCode"; + this.TxtResultCode.OnlyNumeric = false; + this.TxtResultCode.PasswordChar = '\0'; + this.TxtResultCode.ReadOnly = true; + this.TxtResultCode.SelectedText = ""; + this.TxtResultCode.SelectionLength = 0; + this.TxtResultCode.SelectionStart = 0; + this.TxtResultCode.Size = new System.Drawing.Size(926, 204); + this.TxtResultCode.TabIndex = 14; + this.TxtResultCode.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtResultCode.ToolTip = ""; + this.TxtResultCode.WordWrap = true; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // RbChsToUTF8 + // + this.RbChsToUTF8.AutoSize = true; + this.RbChsToUTF8.Location = new System.Drawing.Point(665, 8); + this.RbChsToUTF8.Name = "RbChsToUTF8"; + this.RbChsToUTF8.Size = new System.Drawing.Size(89, 16); + this.RbChsToUTF8.TabIndex = 23; + this.RbChsToUTF8.Text = "中文转UTF-8"; + this.RbChsToUTF8.UseVisualStyleBackColor = true; + this.RbChsToUTF8.CheckedChanged += new System.EventHandler(this.RbUnicodeToChs_CheckedChanged); + // + // RbUTF8ToChs + // + this.RbUTF8ToChs.AutoSize = true; + this.RbUTF8ToChs.Location = new System.Drawing.Point(570, 8); + this.RbUTF8ToChs.Name = "RbUTF8ToChs"; + this.RbUTF8ToChs.Size = new System.Drawing.Size(89, 16); + this.RbUTF8ToChs.TabIndex = 22; + this.RbUTF8ToChs.Text = "UTF-8转中文"; + this.RbUTF8ToChs.UseVisualStyleBackColor = true; + this.RbUTF8ToChs.CheckedChanged += new System.EventHandler(this.RbUnicodeToChs_CheckedChanged); + // + // RbMD5 + // + this.RbMD5.AutoSize = true; + this.RbMD5.Location = new System.Drawing.Point(12, 32); + this.RbMD5.Name = "RbMD5"; + this.RbMD5.Size = new System.Drawing.Size(41, 16); + this.RbMD5.TabIndex = 24; + this.RbMD5.Text = "MD5"; + this.RbMD5.UseVisualStyleBackColor = true; + this.RbMD5.CheckedChanged += new System.EventHandler(this.RbNoEncoding_CheckedChanged); + // + // RbSHA1 + // + this.RbSHA1.AutoSize = true; + this.RbSHA1.Location = new System.Drawing.Point(72, 32); + this.RbSHA1.Name = "RbSHA1"; + this.RbSHA1.Size = new System.Drawing.Size(47, 16); + this.RbSHA1.TabIndex = 25; + this.RbSHA1.Text = "SHA1"; + this.RbSHA1.UseVisualStyleBackColor = true; + this.RbSHA1.CheckedChanged += new System.EventHandler(this.RbNoEncoding_CheckedChanged); + // + // RbSHA256 + // + this.RbSHA256.AutoSize = true; + this.RbSHA256.Location = new System.Drawing.Point(224, 32); + this.RbSHA256.Name = "RbSHA256"; + this.RbSHA256.Size = new System.Drawing.Size(59, 16); + this.RbSHA256.TabIndex = 26; + this.RbSHA256.Text = "SHA256"; + this.RbSHA256.UseVisualStyleBackColor = true; + this.RbSHA256.CheckedChanged += new System.EventHandler(this.RbNoEncoding_CheckedChanged); + // + // RbSHA224 + // + this.RbSHA224.AutoSize = true; + this.RbSHA224.Enabled = false; + this.RbSHA224.Location = new System.Drawing.Point(144, 32); + this.RbSHA224.Name = "RbSHA224"; + this.RbSHA224.Size = new System.Drawing.Size(59, 16); + this.RbSHA224.TabIndex = 27; + this.RbSHA224.Text = "SHA224"; + this.RbSHA224.UseVisualStyleBackColor = true; + this.RbSHA224.CheckedChanged += new System.EventHandler(this.RbNoEncoding_CheckedChanged); + // + // RbSHA512 + // + this.RbSHA512.AutoSize = true; + this.RbSHA512.Location = new System.Drawing.Point(304, 32); + this.RbSHA512.Name = "RbSHA512"; + this.RbSHA512.Size = new System.Drawing.Size(59, 16); + this.RbSHA512.TabIndex = 28; + this.RbSHA512.Text = "SHA512"; + this.RbSHA512.UseVisualStyleBackColor = true; + this.RbSHA512.CheckedChanged += new System.EventHandler(this.RbNoEncoding_CheckedChanged); + // + // TxtFromCode + // + this.TxtFromCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtFromCode.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtFromCode.DetectUrls = false; + this.TxtFromCode.EmptyText = "请填写待转换的内容"; + this.TxtFromCode.ForeColor = System.Drawing.Color.Black; + this.TxtFromCode.Location = new System.Drawing.Point(12, 54); + this.TxtFromCode.Name = "TxtFromCode"; + this.TxtFromCode.OnlyInputText = true; + this.TxtFromCode.Size = new System.Drawing.Size(926, 174); + this.TxtFromCode.TabIndex = 29; + this.TxtFromCode.Text = ""; + this.TxtFromCode.TextChanged += new System.EventHandler(this.TxtFromCode_TextChanged); + this.TxtFromCode.DoubleClick += new System.EventHandler(this.TxtFromCode_DoubleClick_1); + // + // FrmEncode + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(950, 450); + this.Controls.Add(this.TxtFromCode); + this.Controls.Add(this.RbSHA512); + this.Controls.Add(this.RbSHA224); + this.Controls.Add(this.RbSHA256); + this.Controls.Add(this.RbSHA1); + this.Controls.Add(this.RbMD5); + this.Controls.Add(this.RbChsToUTF8); + this.Controls.Add(this.RbUTF8ToChs); + this.Controls.Add(this.RbChsToUnicode); + this.Controls.Add(this.RbUnicodeToChs); + this.Controls.Add(this.CbbEncodingCode); + this.Controls.Add(this.RbURLDecode); + this.Controls.Add(this.RbURLEncode); + this.Controls.Add(this.RbBase64Decode); + this.Controls.Add(this.RbBase64Encode); + this.Controls.Add(this.TxtResultCode); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmEncode"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "编码解码"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.RadioButton RbChsToUnicode; + private System.Windows.Forms.RadioButton RbUnicodeToChs; + private ryControls.RyComboBox CbbEncodingCode; + private System.Windows.Forms.RadioButton RbURLDecode; + private System.Windows.Forms.RadioButton RbURLEncode; + private System.Windows.Forms.RadioButton RbBase64Decode; + private System.Windows.Forms.RadioButton RbBase64Encode; + private ryControls.TextBoxEx2 TxtResultCode; + private ryPaiban.Model.MenuRight menuRight1; + private System.Windows.Forms.RadioButton RbChsToUTF8; + private System.Windows.Forms.RadioButton RbUTF8ToChs; + private System.Windows.Forms.RadioButton RbMD5; + private System.Windows.Forms.RadioButton RbSHA1; + private System.Windows.Forms.RadioButton RbSHA256; + private System.Windows.Forms.RadioButton RbSHA224; + private System.Windows.Forms.RadioButton RbSHA512; + private ryControls.Controls.RichTextBox2 TxtFromCode; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmEncode.cs b/Source/开发辅助工具/Tools/FrmEncode.cs new file mode 100644 index 0000000..3296d49 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmEncode.cs @@ -0,0 +1,258 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmEncode : DockContent + { + public FrmEncode() + { + InitializeComponent(); + CbbEncodingCode.SelectedIndex = 0; + } + RyWeb.QuickWeb web = new RyWeb.QuickWeb(); + private void AutoCode() + { + string from_text = TxtFromCode.Text; + if (from_text == "") { TxtResultCode.Text = ""; return; } + #region 获取编码 + Encoding encoding = Encoding.UTF8; + switch (CbbEncodingCode.SelectedIndex) + { + case 0: encoding = Encoding.UTF8; break; + case 1: encoding = Encoding.GetEncoding("GBK"); break; + case 2: encoding = Encoding.GetEncoding("GB2312"); break; + case 3: encoding = Encoding.ASCII; break; + case 4: encoding = Encoding.Unicode; break; + case 5: encoding = Encoding.BigEndianUnicode; break; + case 6: encoding = Encoding.UTF7; break; + case 7: encoding = Encoding.UTF32; break; + } + #endregion + if (RbBase64Encode.Checked) + { + #region Base64加密 + try + { + byte[] bytedata = encoding.GetBytes(from_text); + TxtResultCode.Text = Convert.ToBase64String(bytedata, 0, bytedata.Length); + } + catch + { + TxtResultCode.Text = ""; + } + #endregion + } + else if (RbBase64Decode.Checked) + { + #region Base64解密 + try + { + byte[] bytes = Convert.FromBase64String(from_text); + TxtResultCode.Text = encoding.GetString(bytes); + } + catch + { + TxtResultCode.Text = ""; + } + #endregion + } + else if (RbURLEncode.Checked) + { + TxtResultCode.Text = web.UrlEncode(from_text, encoding); + } + else if (RbURLDecode.Checked) + { + TxtResultCode.Text = RyWeb.WebDecode.UrlDecode(from_text, encoding); + } + else if (RbUnicodeToChs.Checked) + { + #region Unicode转字符串 + try + { + TxtResultCode.Text = Regex.Unescape(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbChsToUnicode.Checked) + { + #region 字符串转Unicode码 + try + { + TxtResultCode.Text = GetUnicode(from_text); + } + catch { TxtResultCode.Text = ""; } + string GetUnicode(string text) + { + string result = ""; + for (int i = 0; i < text.Length; i++) + { + //if ((int)text[i] > 32 && (int)text[i] < 127) + //{ + // result += text[i].ToString(); + //} + //else + result += string.Format("\\u{0:x4}", (int)text[i]); + } + return result; + } + #endregion + } + else if (RbUTF8ToChs.Checked) + { + #region UTF8转字符串 + try + { + TxtResultCode.Text = RyWeb.WebDecode.Unescape(from_text.Replace("&#x","%u").Replace(";", "")); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbChsToUTF8.Checked) + { + #region 字符串转UTF8 + try + { + TxtResultCode.Text = RyWeb.WebDecode.Escape(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbMD5.Checked) + { + #region 获取MD5 + try + { + TxtResultCode.Text = rySafe.MD5Sha1.GetMD5(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbSHA1.Checked) + { + #region 获取SHA1 + try + { + TxtResultCode.Text = rySafe.MD5Sha1.GetSHA1(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbSHA224.Checked) + { + #region 获取SHA224 + try + { + //TxtResultCode.Text = rySafe.MD5Sha1.GetSHA224(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbSHA256.Checked) + { + #region 获取SHA256 + try + { + TxtResultCode.Text = rySafe.MD5Sha1.GetSHA256(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + else if (RbSHA512.Checked) + { + #region 获取SHA256 + try + { + TxtResultCode.Text = rySafe.MD5Sha1.GetSHA512(from_text); + } + catch { TxtResultCode.Text = ""; } + #endregion + } + } + public string get_uft8(string unicodeString) + { + UTF8Encoding utf8 = new UTF8Encoding(); + Byte[] encodedBytes = utf8.GetBytes(unicodeString); + String decodedString = utf8.GetString(encodedBytes); + return decodedString; + } + public static string gb2312_utf8(string text) + { + //声明字符集 + System.Text.Encoding utf8, gb2312; + //gb2312 + gb2312 = System.Text.Encoding.GetEncoding("gb2312"); + //utf8 + utf8 = System.Text.Encoding.GetEncoding("utf-8"); + byte[] gb; + gb = gb2312.GetBytes(text); + gb = System.Text.Encoding.Convert(gb2312, utf8, gb); + //返回转换后的字符 + return utf8.GetString(gb); + } + + private void CbbEncodingCode_SelectedIndexChanged(object sender, EventArgs e) + { + AutoCode(); + } + + private void RbBase64Encode_CheckedChanged(object sender, EventArgs e) + { + RadioButton chk = (RadioButton)sender; + if (chk.Checked) + { + CbbEncodingCode.Enabled = true; + } + AutoCode(); + } + + private void RbUnicodeToChs_CheckedChanged(object sender, EventArgs e) + { + RadioButton chk = (RadioButton)sender; + if (chk.Checked) + { + CbbEncodingCode.Enabled = false; + } + AutoCode(); + } + + private void RbNoEncoding_CheckedChanged(object sender, EventArgs e) + { + RadioButton chk = (RadioButton)sender; + if (chk.Checked) + { + CbbEncodingCode.Enabled = false; + } + AutoCode(); + } + + private void TxtFromCode_TextChanged(object sender, EventArgs e) + { + AutoCode(); + } + + private void TxtFromCode_DoubleClick_1(object sender, EventArgs e) + { + ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender; + 开发辅助工具.Controls.FrmText frm = new Controls.FrmText + { + Icon = Icon + }; + frm.richTextBox1.Text = txt.Text; + if (frm.ShowDialog() == DialogResult.OK) + { + txt.Text = frm.richTextBox1.Text; + } + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmEncode.resx b/Source/开发辅助工具/Tools/FrmEncode.resx new file mode 100644 index 0000000..f485801 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmEncode.resx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAACUWAAAlFgAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAAABAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABAAAAAQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAFAAAACAAA + AAgAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAACAAAAAgAAAAFAAAAAQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAIAAAANAAAAEAAAABAAAAAPAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAGAAAADwAAABAAAAAQAAAADQAA + AAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAUAAAAVAAAAGQAAABgAAAAWAAAACAAAAAAAAAAAAAAACAAAABYAAAAYAAAAGQAA + ABUAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAdAAAAIQAAACEAAAAcAAAABAAAAAQAAAAcAAAAIQAA + ACEAAAAdAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAmAAAAKgAAACMAAAAFAAAABQAA + ACMAAAAqAAAAJgAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAmAAAAEAAA + AAAAAAAAAAAAEAAAACYAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA + ACMAAAAEAAAAAAAAAAAAAAAEAAAAIwAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAMAAAB3AAAA3QAAAGMAAAAAAAAAAAAAAGMAAADdAAAAdwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAZwAAAPQAAAD/AAAA3gAAACIAAAAiAAAA3gAAAP8AAAD0AAAAZwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAFYAAADsAAAA/wAAAP8AAADTAAAAHQAAAB0AAADTAAAA/wAAAP8AAADsAAAAVgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABFAAAA4wAAAP8AAAD/AAAA4gAAAEcAAAAAAAAAAAAAAEcAAADiAAAA/wAA + AP8AAADjAAAARQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAANwAAANgAAAD/AAAA/wAAAOkAAABRAAAAAAAAAAAAAAAAAAAAAAAA + AFEAAADpAAAA/wAAAP8AAADYAAAANwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAADMAAAA/wAAAP8AAADuAAAAWwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAFsAAADuAAAA/wAAAP8AAADMAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdAAAAvAAAAP8AAAD/AAAA8gAAAGYAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGYAAADyAAAA/wAAAP8AAAC8AAAAHQAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAKwAAAD/AAAA/wAAAPYAAAByAAAAAgAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAHIAAAD2AAAA/wAAAP8AAACsAAAAFAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAACaAAAA/wAAAP8AAAD6AAAAfwAA + AAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAH8AAAD6AAAA/wAA + AP8AAACaAAAACwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKwAAAOsAAAD/AAAA/wAA + AOEAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAA + AOEAAAD/AAAA/wAAAOsAAAArAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAmgAA + AP8AAAD/AAAA+gAAAH8AAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAUAAAB/AAAA+gAAAP8AAAD/AAAAmgAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAUAAAArAAAAP8AAAD/AAAA9gAAAHIAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAACAAAAcgAAAPYAAAD/AAAA/wAAAKwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAdAAAAvAAAAP8AAAD/AAAA8gAAAGYAAAABAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAQAAAGYAAADyAAAA/wAAAP8AAAC8AAAAHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAAywAAAP8AAAD/AAAA7gAAAFwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABcAAAA7gAAAP8AAAD/AAAAywAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAA2AAAAP8AAAD/AAAA6AAA + AFEAAAAAAAAAAAAAAAAAAAAAAAAAUQAAAOgAAAD/AAAA/wAAANgAAAA2AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAA4wAA + AP8AAAD/AAAA4gAAAEcAAAAAAAAAAAAAAEcAAADiAAAA/wAAAP8AAADjAAAARAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABVAAAA7AAAAP8AAAD/AAAA0wAAAB0AAAAdAAAA0wAAAP8AAAD/AAAA7AAAAFUAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABnAAAA9AAAAP8AAADeAAAAIgAAACIAAADeAAAA/wAAAPQAAABnAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAB3AAAA3gAAAGMAAAAAAAAAAAAAAGMAAADeAAAAdwAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAeAAAABAAAAAAAAAAAAAAABAAA + AB4AAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA+APAH/gBgB/4AAAf+AAAH/wAAD/+AAB//wAA//+AAf//wAP//4AB//8A + AP/+AAB//AAAP/gAAB/wAAAP4AGAB+ADwAfgB+AH4A/wB+AH4AfgA8AH4AGAB/AAAA/4AAAf/AAAP/4A + AH//AAD//4AB///AA///4Af///////////8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmJson.Designer.cs b/Source/开发辅助工具/Tools/FrmJson.Designer.cs new file mode 100644 index 0000000..d244456 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmJson.Designer.cs @@ -0,0 +1,249 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmJson + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmJson)); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.textEditorControl1 = new ICSharpCode.TextEditor.TextEditorControl(); + this.contextMenuStripHighlightText1 = new ryProcessManager.hezuo.ContextMenuStripHighlightText(); + this.treeView1 = new System.Windows.Forms.TreeView(); + this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components); + this.复制键名ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.复制键值ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator(); + this.展开ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.折叠ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.BtnFormat = new System.Windows.Forms.ToolStripButton(); + this.BtnPasteJson = new System.Windows.Forms.ToolStripButton(); + this.BtnCopyJson = new System.Windows.Forms.ToolStripButton(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.CopyJsonByCHS = new System.Windows.Forms.ToolStripButton(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.contextMenuStrip1.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.Location = new System.Drawing.Point(0, 25); + this.splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.textEditorControl1); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.treeView1); + this.splitContainer1.Size = new System.Drawing.Size(800, 491); + this.splitContainer1.SplitterDistance = 400; + this.splitContainer1.TabIndex = 0; + // + // textEditorControl1 + // + this.textEditorControl1.ContextMenuStrip = this.contextMenuStripHighlightText1; + this.textEditorControl1.Dock = System.Windows.Forms.DockStyle.Fill; + this.textEditorControl1.IsReadOnly = false; + this.textEditorControl1.Location = new System.Drawing.Point(0, 0); + this.textEditorControl1.Name = "textEditorControl1"; + this.textEditorControl1.Size = new System.Drawing.Size(400, 491); + this.textEditorControl1.TabIndex = 22; + // + // contextMenuStripHighlightText1 + // + this.contextMenuStripHighlightText1.Name = "contextMenuStripHighlightText1"; + this.contextMenuStripHighlightText1.Size = new System.Drawing.Size(101, 186); + // + // treeView1 + // + this.treeView1.ContextMenuStrip = this.contextMenuStrip1; + this.treeView1.Dock = System.Windows.Forms.DockStyle.Fill; + this.treeView1.FullRowSelect = true; + this.treeView1.HideSelection = false; + this.treeView1.HotTracking = true; + this.treeView1.ItemHeight = 20; + this.treeView1.Location = new System.Drawing.Point(0, 0); + this.treeView1.Name = "treeView1"; + this.treeView1.Size = new System.Drawing.Size(396, 491); + this.treeView1.TabIndex = 0; + this.treeView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.TreeView1_MouseDown); + // + // contextMenuStrip1 + // + this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.复制键名ToolStripMenuItem, + this.复制键值ToolStripMenuItem, + this.toolStripMenuItem1, + this.展开ToolStripMenuItem, + this.折叠ToolStripMenuItem}); + this.contextMenuStrip1.Name = "contextMenuStrip1"; + this.contextMenuStrip1.Size = new System.Drawing.Size(125, 98); + // + // 复制键名ToolStripMenuItem + // + this.复制键名ToolStripMenuItem.Name = "复制键名ToolStripMenuItem"; + this.复制键名ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.复制键名ToolStripMenuItem.Text = "复制键名"; + this.复制键名ToolStripMenuItem.Click += new System.EventHandler(this.复制键名ToolStripMenuItem_Click); + // + // 复制键值ToolStripMenuItem + // + this.复制键值ToolStripMenuItem.Name = "复制键值ToolStripMenuItem"; + this.复制键值ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.复制键值ToolStripMenuItem.Text = "复制键值"; + this.复制键值ToolStripMenuItem.Click += new System.EventHandler(this.复制键值ToolStripMenuItem_Click); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(121, 6); + // + // 展开ToolStripMenuItem + // + this.展开ToolStripMenuItem.Name = "展开ToolStripMenuItem"; + this.展开ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.展开ToolStripMenuItem.Text = "展开"; + this.展开ToolStripMenuItem.Click += new System.EventHandler(this.展开ToolStripMenuItem_Click); + // + // 折叠ToolStripMenuItem + // + this.折叠ToolStripMenuItem.Name = "折叠ToolStripMenuItem"; + this.折叠ToolStripMenuItem.Size = new System.Drawing.Size(124, 22); + this.折叠ToolStripMenuItem.Text = "折叠"; + this.折叠ToolStripMenuItem.Click += new System.EventHandler(this.折叠ToolStripMenuItem_Click); + // + // toolStrip1 + // + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.BtnFormat, + this.BtnPasteJson, + this.BtnCopyJson, + this.CopyJsonByCHS}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(800, 25); + this.toolStrip1.TabIndex = 2; + this.toolStrip1.Text = "toolStrip1"; + // + // BtnFormat + // + this.BtnFormat.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.BtnFormat.Image = ((System.Drawing.Image)(resources.GetObject("BtnFormat.Image"))); + this.BtnFormat.ImageTransparentColor = System.Drawing.Color.Magenta; + this.BtnFormat.Name = "BtnFormat"; + this.BtnFormat.Size = new System.Drawing.Size(48, 22); + this.BtnFormat.Text = "格式化"; + this.BtnFormat.Click += new System.EventHandler(this.BtnFormat_Click); + // + // BtnPasteJson + // + this.BtnPasteJson.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.BtnPasteJson.Image = ((System.Drawing.Image)(resources.GetObject("BtnPasteJson.Image"))); + this.BtnPasteJson.ImageTransparentColor = System.Drawing.Color.Magenta; + this.BtnPasteJson.Name = "BtnPasteJson"; + this.BtnPasteJson.Size = new System.Drawing.Size(62, 22); + this.BtnPasteJson.Text = "粘贴Json"; + this.BtnPasteJson.Click += new System.EventHandler(this.BtnPasteJson_Click); + // + // BtnCopyJson + // + this.BtnCopyJson.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.BtnCopyJson.Image = ((System.Drawing.Image)(resources.GetObject("BtnCopyJson.Image"))); + this.BtnCopyJson.ImageTransparentColor = System.Drawing.Color.Magenta; + this.BtnCopyJson.Name = "BtnCopyJson"; + this.BtnCopyJson.Size = new System.Drawing.Size(62, 22); + this.BtnCopyJson.Text = "复制Json"; + this.BtnCopyJson.Click += new System.EventHandler(this.BtnCopyJson_Click); + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // CopyJsonByCHS + // + this.CopyJsonByCHS.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.CopyJsonByCHS.Image = ((System.Drawing.Image)(resources.GetObject("CopyJsonByCHS.Image"))); + this.CopyJsonByCHS.ImageTransparentColor = System.Drawing.Color.Magenta; + this.CopyJsonByCHS.Name = "CopyJsonByCHS"; + this.CopyJsonByCHS.Size = new System.Drawing.Size(84, 22); + this.CopyJsonByCHS.Text = "中文转义复制"; + this.CopyJsonByCHS.Click += new System.EventHandler(this.CopyJsonByCHS_Click); + // + // FrmJson + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 516); + this.Controls.Add(this.splitContainer1); + this.Controls.Add(this.toolStrip1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmJson"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "Json查看"; + this.Load += new System.EventHandler(this.FrmJson_Load); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.contextMenuStrip1.ResumeLayout(false); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private ICSharpCode.TextEditor.TextEditorControl textEditorControl1; + private System.Windows.Forms.TreeView treeView1; + private ryProcessManager.hezuo.ContextMenuStripHighlightText contextMenuStripHighlightText1; + private System.Windows.Forms.ContextMenuStrip contextMenuStrip1; + private System.Windows.Forms.ToolStripMenuItem 复制键名ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 复制键值ToolStripMenuItem; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton BtnFormat; + private System.Windows.Forms.ToolStripButton BtnPasteJson; + private System.Windows.Forms.ToolStripButton BtnCopyJson; + private ryPaiban.Model.MenuRight menuRight1; + private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem 展开ToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem 折叠ToolStripMenuItem; + private System.Windows.Forms.ToolStripButton CopyJsonByCHS; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmJson.cs b/Source/开发辅助工具/Tools/FrmJson.cs new file mode 100644 index 0000000..6da0d72 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmJson.cs @@ -0,0 +1,260 @@ +using ICSharpCode.TextEditor.Document; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmJson : DockContent + { + public FrmJson() + { + InitializeComponent(); + } + private void LoadTreeList(TreeNodeCollection nodes,JObject jo) + { + foreach (var item in jo) + { + if (item.Value.HasValues) + { + var node = nodes.Add(item.Key.ToString()); + node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() }; + try + { + JArray jar = JArray.Parse(item.Value.ToString()); + if (jar != null) + { + for (int i = 0; i < jar.Count; i++) + { + var node1 = node.Nodes.Add(i.ToString()); + node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() }; + LoadTreeList(node1.Nodes, (JObject)JsonConvert.DeserializeObject(jar[i].ToString())); + //TreeNode new_child = new TreeNode(); + //new_child.Text = jar[i].ToString(); + //node.Nodes.Add(new_child); + } + } + } + catch(Exception) + { LoadTreeList(node.Nodes, (JObject)JsonConvert.DeserializeObject(item.Value.ToString())); } + + //JArray jar = JArray.Parse(item.Value.ToString()); + //if (jar.Count != 0) + { + + //for (int i = 0; i < jar.Count; i++) + //{ + // TreeNode new_child = new TreeNode(); + // new_child.Text = jar[i].ToString(); + // nodes.Add(new_child); + //} + } + } + else + { + var node = nodes.Add(item.ToString()); + node.Tag = new JsonInfo() { name = item.Key.ToString(), value = item.Value.ToString() }; + } + } + } + private void BtnFormat_Click(object sender, EventArgs e) + { + string json_text = textEditorControl1.Text; + treeView1.Nodes.Clear(); + //if (Manager.Json.IsJson(json_text)) + { + try + { + textEditorControl1.Document.TextContent = Manager.Json.ConvertJsonString(json_text); + textEditorControl1.Refresh(); + JObject jo = null; + if (Manager.Json.IsArray(json_text)) + { + var node2 = treeView1.Nodes.Add("0"); + JArray jar = JArray.Parse(json_text); + ScanArray(node2.Nodes, jar); + } + else + { + jo = (JObject)JsonConvert.DeserializeObject(json_text); + Scan(treeView1.Nodes, jo); + } + void Scan(TreeNodeCollection nodes, JObject _jo) + { + IEnumerable properties = _jo.Properties(); + foreach (JProperty item in properties) + { + if (item.Value.Type == JTokenType.Array) + { + var node2 = nodes.Add(item.Name); + node2.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() }; + JArray jar = JArray.Parse(item.Value.ToString()); + ScanArray(node2.Nodes, jar); + } + else if (item.Value.Type == JTokenType.Object) + { + var node2 = nodes.Add(item.Name); + node2.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() }; + Scan(node2.Nodes, (JObject)JsonConvert.DeserializeObject(item.Value.ToString())); + } + else { + var node = nodes.Add(item.Name + ":" + item.Value + "|" + item.Value.Type.ToString()); + node.Tag = new JsonInfo() { name = item.Name, value = item.Value.ToString() }; + } + //Console.WriteLine(item.Name + ":" + item.Value); + } + //var values = _jo.Values(); + //foreach (var item in values) + //{ + // var va = item.Value().Children.Children(); + // var node = nodes.Add(item.ToString()); + // //if(item.HasValues) + // //Scan(node.Nodes,(JObject)JsonConvert.DeserializeObject(item.ToString())); + //} + } + void ScanArray(TreeNodeCollection nodes, JArray jar) + { + if (jar != null) + { + for (int i = 0; i < jar.Count; i++) + { + var node3 = nodes.Add(i.ToString()); + if (jar[i].Type == JTokenType.Object) + { + Scan(node3.Nodes, (JObject)jar[i]); + } + else + { + node3.Nodes.Add(jar[i].ToString()); + node3.Tag = new JsonInfo() { name = jar[i].ToString() }; + } + } + } + } + //if (Manager.Json.IsArray(json_text)) + //{ + // JArray jar = JArray.Parse(json_text); + // if (jar != null) + // { + // for (int i = 0; i < jar.Count; i++) + // { + // var node1 = treeView1.Nodes.Add(i.ToString()); + // LoadTreeList(node1.Nodes, (JObject)JsonConvert.DeserializeObject(jar[i].ToString())); + // //TreeNode new_child = new TreeNode(); + // //new_child.Text = jar[i].ToString(); + // //node.Nodes.Add(new_child); + // } + // } + //} + //else + //{ + // jo = (JObject)JsonConvert.DeserializeObject(json_text); + //} + //LoadTreeList(treeView1.Nodes,jo); + //for (int i = 0; i < jo.Count; i++) + //{ + // treeView1.Nodes.Add(jo..ToString()); + //} + } + catch(Exception ex) + { + MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + //else + //{ + // MessageBox.Show("无效的Json内容", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + // textEditorControl1.Document.TextContent = json_text; + // textEditorControl1.Refresh(); + //} + } + public void LoadJson(string json_text) + { + textEditorControl1.Document.TextContent = json_text; + textEditorControl1.Refresh(); + BtnFormat.PerformClick(); + } + private void 复制键名ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (treeView1.SelectedNode == null) { return; } + JsonInfo item = (JsonInfo)treeView1.SelectedNode.Tag; + ryCommon.RyFiles.CopyToClip(item.name); + } + + private void 复制键值ToolStripMenuItem_Click(object sender, EventArgs e) + { + if (treeView1.SelectedNode == null) { return; } + if (treeView1.SelectedNode.Tag == null) { return; } + JsonInfo item = (JsonInfo)treeView1.SelectedNode.Tag; + ryCommon.RyFiles.CopyToClip(item.value); + } + + private void BtnPasteJson_Click(object sender, EventArgs e) + { + textEditorControl1.BeginUpdate(); + textEditorControl1.Document.TextContent = Clipboard.GetText(); + textEditorControl1.Refresh(); + textEditorControl1.EndUpdate(); + BtnFormat.PerformClick(); + } + + private void BtnCopyJson_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.CopyToClip(textEditorControl1.Text); + } + + private void FrmJson_Load(object sender, EventArgs e) + { + textEditorControl1.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy("JSON"); + } + + private void TreeView1_MouseDown(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Right)//判断你点的是不是右键 + { + Point ClickPoint = new Point(e.X, e.Y); + TreeNode CurrentNode = treeView1.GetNodeAt(ClickPoint); + if (CurrentNode != null)//判断你点的是不是一个节点 + { + treeView1.SelectedNode = CurrentNode;//选中这个节点 + } + } + } + + private void 展开ToolStripMenuItem_Click(object sender, EventArgs e) + { + treeView1.ExpandAll(); + } + + private void 折叠ToolStripMenuItem_Click(object sender, EventArgs e) + { + treeView1.CollapseAll(); + } + + private void CopyJsonByCHS_Click(object sender, EventArgs e) + { + try + { + JObject jo = (JObject)JsonConvert.DeserializeObject(textEditorControl1.Text); + var aa = Newtonsoft.Json.JsonConvert.SerializeObject(jo, new Newtonsoft.Json.JsonSerializerSettings() { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeNonAscii }); + ryCommon.RyFiles.CopyToClip(aa); + } + catch(Exception ex) { + MessageBox.Show(ex.Message, "出错", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + } + public class JsonInfo + { + public string name = ""; + public string value = ""; + } +} diff --git a/Source/开发辅助工具/Tools/FrmJson.resx b/Source/开发辅助工具/Tools/FrmJson.resx new file mode 100644 index 0000000..25b23d0 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmJson.resx @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 262, 17 + + + 427, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG + YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9 + 0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw + bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc + VzOOpHI7Jr376Hi9ogHqFIANO0/MmmmbmSmm9a8ze+I4MrNWAdjtoJgWcx+PSzg166yZZ8xM8XvXDix9 + c4jIqFYAjoriBV9AhEPv1mH/sonogha0afbZMMZz+yreTGyhpusHwtNNCsA5U1zS4BLxzJIfg299qO32 + Ir7UJtZfftyATqeT+8o2D8JSjQrAJblrncYL7ZJ2+bfaFnC/1S1NjL3diRat7qrO7wLRP3HjWsojBeCo + mDEo5mNjuweFGvjWg2EBhCbpkW78htSHHwRyNdmgAFzPEee2iFkzayy2OLXzT4gr6UdUnlXrullsxxQ+ + kx0g8BTA3aZlButjSTyjODq/WcQcW/B/Je4OQhLvKQDnzN1mp0nnkvAhR8VuMzNrpm1mpjgkoVwB/v8D + TgDQASA1MVpwzwAAAABJRU5ErkJggg== + + + + 537, 17 + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAA + AAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAA + AwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAA + AwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwEAAAMBAAADAgAAAwMAAAMDAAADBAAAAwQAAAMFAAADBQAA + AwYAAAMGAAADBgAAAwYAAAMGAAADBgAAAwYAAAMGAAADBQAAAwUAAAMEAAADBAAAAwMAAAMDAAADAgAA + AwEAAAMBAAADAAAAAwAAAAMAAAADAAAAAwMAAAMMAAADFQAAAxsAAAMfAAACIgAAACIAAAAjAAAAJQAA + ACcAAAAoAAAAKQAAACkAAAAqAAAAKgAAACoAAAAqAAAAKQAAACkAAAAoAAAAJwAAACUAAAAjAAAAIQAA + ACIAAAMfAAADGwAAAxUAAAMMAAADAwAAAwAAAAMAAAADBAAAAxMAAAMhAAADKQAAAi4FBQgzaWlrYZSU + lo+YmJqVmJialpmZmpaampuXmpqbl5qanJeampyYm5ucmJubnJebm5yXm5ucl5ubnJabm5yWm5uclZqa + nJSDg4V2JiYoPAAAAC0AAAMpAAADIQAAAxMAAAMEAAADAAAAAwAAAAMBAAADAwAAAwYAAAIIAAAACLGx + slvFxcboysrL/8zMzf/Ozs//z8/Q/9HR0v/S0tP/09PU/9PT1P/T09T/09PU/9PT1P/T09T/0tLT/9HR + 0v/Q0NH/zs7P/8vLzPnAwMKXV1dZEgAAAAgAAAMGAAADAwAAAwEAAAMAAAADAAAAAwAAAAMAAAADAJSU + lgDU1NUIy8vMtszMzf/Ozs//0NDR/9LS0//U1NX/1dXW/9bW1//X19j/2NjZ/9jY2f/Y2Nn/2NjZ/9fX + 2P/X19j/1tbX/9TU1f/T09T/0dHS/8/P0O3Q0NEzwcHCAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAA + AwAAAAMA0tLTANLS0xHOztDL0NDR/9PT1P/V1db/19fY/9jY2f/a2tv/29vc/9zc3f/d3d7/3d3e/93d + 3v/d3d7/3Nzd/9vb3P/a2tv/2dna/9fX2P/V1db/09PU99LS00bS0tMAAAADAAAAAwAAAAMAAAAAAAAA + AAAAAAAAYoKHAHiTmADLztAA19fYEdPT1MvU1NX/19fY/9nZ2v/b29z/3d3e/9/f4P/g4OH/4ODh/+Dh + 4f/h4eL/4eHi/+Hh4f/g4OH/4ODh/9/f4P/e3t//3Nzd/9ra2//Y2Nn319bXRdHT1ABOcngATnJ4AAAA + AAAAAAAAAAAAAFyAhwAAGyQANWFpAH2angDS09QS1dXXy9fX2P/a2tv/3Nzd/97e3//f3+D/3+Dh/+Dg + 4f/g4eL/4OHi/+Hh4v/h4eL/4eHi/+Dh4v/g4eH/4ODh/9/f4P/e39//3d3e/9rb3PfY2NlG2d7fAC9d + ZQBHbnYAR292AAAAAAAAAAAAgYeRAC9cYwA7ZWwtNmBojTtja6NkgojrbIiN/2yJjv9tiY//bYqP/22K + j/9uio//boqP/26KkP9uipD/boqQ/26KkP9uipD/boqQ/26KkP9uio//boqP/22Kj/9tiY//bIiN/Elv + dbc0X2aYOGNqVVJ3fgNLcXgAAAAAAAAAAABRe4EAU32DCDppcK44Zm7/N2Zt/zVkbP83ZW3/NGNr/zVk + bP80ZGv/NGNr/zdmbf80ZGv/NGNr/zVkbP80Y2v/NGRr/zdmbf80Y2v/NGNr/zVkbP81ZGz/NWRs/zVk + bP80ZGv/OGZt/zhmbv85Z2/mPmxzLj1rcgAAAAAAAAAAAFB/hQBOfYQSP3J5zj1wd/9OfIP/oLi8/7fJ + zP+DoaX/P3B3/059g/+as7f/ssXI/6S6vv9ag4n/O292/1+Jj/+mvcD/t8nM/5+2uv9UfoT/PXB4/4yq + rv9kiY//OW11/2ePlP+kur3/SXZ9/z1wd/Y+cXhBPnF4AAAAAAAAAAAAVYeOAFOGjBJFfIPNQHmA/5W1 + uP/M19n/jq6y/+Do6f9hiY//obzA/77N0P9qlZr/r8jL/7zLzv9YhYv/0t/g/6q/wv95oaX/vtLV/8HP + 0f9MfYP/xtfZ/4Kgpf9MgIf/0N7g/+/y8v9Zg4n/QXqB9UN7gkBDe4IAAAAAAAAAAABZkZYAV4+VEkqG + jc1GhIv/gKuw/3igpP9QiY//1+Tl/3WYnf9xoKX/Z5ab/2eYnv+4z9L/xdLU/4aorP/W4OH/T4KI/0KB + iP9lmZ7/4Onq/2uSl//E19n/g6Km/5y7vv/Y4OL/3OPk/1yIjv9GhIv1SIWMQEiFjAAAAAAAAAAAAF6a + nwBcmZ4ST5CWzU2Plf9Nj5X/TI6U/1qXnf/X5eb/dZqf/2ifpP/H293/1+Pl/73S1P9tnaL/kbm8/83Y + 2v9MhYv/TI+V/1+boP/e6er/dpug/8PY2v+xw8b/0Nze/4Glqf/U4OH/Xo2S/0yOlPVNj5VATY+VAAAA + AAAAAAAAYqOoAGGiqBJUmqDNUpmf/1KZn/9SmZ//X6Gm/9nn6P92nKH/qMrN/8XT1f9hmp//h7e7/4Ss + sP92qq//4enq/3Gcof9TmJ7/j73B/93l5v9ilJn/yt/h//X29/+Rr7P/ZqGm/9jk5f9hkZf/UZie9VKZ + n0BSmZ8AAAAAAAAAAABnrLEAYqiuE16prs1apqv/V6Oo/1aiqP9hqK7/zuLj/3Oeo/+Dur7/zd/g/7fS + 1P/U5OX/hq2x/1afpP+q0dT/1OPk/8Tb3f/W5eb/kLS4/1Wdo//D3+H/wtLU/1WWnP9rr7T/zd7f/2GX + nP9cqK31WKSqQVijqQAAAAAAAAAAAGy0uQBkr7QPZbS5yXK+wv9tub7/bLm+/226vv+FxMj/cba7/2y5 + vv+Dxcn/mNDT/4PBxf9rtrv/bLm+/266v/+JyMz/l8/T/4C/xP9rtrv/bLm+/4HEyP95ur//are8/3C7 + wP+Ew8f/cbm9/2q5vvZcrbI+Xq6zAAAAAAAAAAAAcbzAAJDAxQFjtrtxa77D5XXEye54xcr7ecbK/3jF + yf95xsr/ecbK/3jFyf93xcn/eMXK/3nGyv95xsr/ecbK/3fFyf93xcn/eMXK/3nGyv95xsr/eMXJ/3jG + yv95xsr/ecbK/nXEyfJwwcbsZLi9q2W2uhVmt7sAAAAAAAAAAABvub4AaLvAAG/DyAVhur8nfsXJQMTd + 39bK4OH/yuDi/8rg4v/K4OL/y+Di/8vg4v/L4eL/y+Hi/8vh4v/L4eP/y+Hj/8vh4//L4eL/y+Hi/8vg + 4v/L4OL/y+Di/8vg4v/K4OH5ptPWaVm3vSxovsMQW7K3AFKprgAAAAAAAAAAAK7a3QBpvsIAa77DAJDL + zwD/9fQO7Ovry+zs7P/t7e3/7e3t/+3t7f/u7e3/7u3u/+7u7v/u7u7/7+7u/+/u7//v7u//7+7u/+7u + 7v/u7u7/7u3u/+7t7v/t7e3/7e3t/+3t7ffx7u5Ds9jaAGi9wgBVtrwAf8bKAAAAAAAAAAAAAAAAAAAA + AAAAAAAA7OztAOvs7BHq6+vL6+zs/+vs7P/r7Oz/6+zs/+zs7f/s7e3/7O3t/+3t7v/t7e7/7e3u/+3t + 7v/t7e7/7e3u/+zt7f/s7e3/7e3u/+zt7f/s7ez/6+zs9+vs7Ebr7OwAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADs7e0A6+zsEerr68vr7Oz/6+zs/+vs7P/s7O3/7Ozt/+zt7f/s7e3/7e3u/+3t + 7v/t7e7/7e3u/+3t7v/t7e7/7Ozt/+Xm5v/i4uP/4uLj/+Hi4//j5OT45+joRefo6AAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOzt7QDr7OwR6uvry+vs7P/r7Oz/6+zs/+zs7f/s7O3/7O3t/+zt + 7f/t7e7/7e3u/+3t7v/t7e7/7e3u/+rr7P/Ky8z/pqeo/6OjpP+nqKn/rKyt/7a2t7bQ0dIZzM3OAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7O3tAOvs7BHq6+vL6+zs/+vs7P/r7Oz/6+zs/+zs + 7f/s7e3/7O3t/+3t7v/t7e7/7e3u/+3t7v/u7u//1dXW/5aWmP+Pj5D/lpaX/5ycnf+hoaK3o6OkH76+ + vwDs7u4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs7OwA6+vsEerq6svr7Oz/6+zs/+vs + 7P/r7Oz/7Ozt/+zs7f/s7e3/7O3t/+3t7v/t7e7/7e3u/+3t7v/BwsP/jo+Q/5SVlv+am5z/oKChtqeo + qR+ioqMAg4OEAL+/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvs7ADq6+sR6erqzOrr + 6//r7Oz/6+zs/+vs7P/s7O3/7Ozt/+zt7f/s7e3/7O3t/+zt7f/t7e7/7O3t/8DBwf+RkpP/l5iZ/52e + n7WlpaYfoKGiAIOEhQDAwcEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6uvrAOnq + 6gzo6enC6urr/+vs7P/r7Oz/6+zs/+vs7P/s7O3/7Ozt/+zs7f/s7e3/7O3t/+zt7f/s7e3/wcLD/5WV + lv+am5y0n6ChHp2enwCFhYYAwMDBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADr7OwA4ePjAOjp6XHp6ur56uvr/+vs7P/r7Oz/6+zs/+vs7P/s7O3/7Ozt/+zs7f/s7O3/7Ozt/+zs + 7f/Dw8X/l5iZtJycnR2cnJ0Aj5CRAL6+vwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAOrr6wDp6uoA6erqCunq6mDq6+ug6+zspevs7KXr7Oyl6+zspevs7KXs7O2l7Oztpezs + 7aXs7O2l7Oztps/Q0Y6ampsem5ydAJaVlgChoqMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAOjp6QDp6uoA5+joAOrr6wHq6+sC6+zsAuvs7ALr7OwC6+zsAuns + 6gLr7OwC7OztAuzs7QLq6+sC////AJaXmACPj5AAoKChAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOvs7ADs7O0A6uvrAOvs7ADr7OwA6+zsAOvs + 7ADr7OwA6+zsAOzs7QDs7O0A7OztAOvs7ADi4+MAs7O0AMnKygAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAcAAAAOAAAABgAAAAYAA + AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB8AAAD/AAAA/wAAAP8AAAD/AA + AA/wAAAf8AAAP/AAAH/wAAD/+AAB//wAA/8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmPathInfo.Designer.cs b/Source/开发辅助工具/Tools/FrmPathInfo.Designer.cs new file mode 100644 index 0000000..7ac36c7 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmPathInfo.Designer.cs @@ -0,0 +1,301 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmPathInfo + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.ColName = new XPTable.Models.TextColumn(); + this.ColPath = new XPTable.Models.TextColumn(); + this.ColDes = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.BtnClean = new ryControls.ButtonEx(); + this.BtnBatchZip = new ryControls.ButtonEx(); + this.LblState = new System.Windows.Forms.Label(); + this.BtnInsertUpdate = new ryControls.ButtonEx(); + this.BtnUpdateDll = new ryControls.ButtonEx(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.BtnCreateFolder = new ryControls.ButtonEx(); + this.label1 = new System.Windows.Forms.Label(); + this.TxtFolder = new ryControls.TextBoxEx2(); + this.label2 = new System.Windows.Forms.Label(); + this.TxtUSQ_Ver = new ryControls.TextBoxEx2(); + this.BtnUpdateDllVer = new ryControls.ButtonEx(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.groupBox1.SuspendLayout(); + this.SuspendLayout(); + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(12, 142); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(905, 362); + this.table1.TabIndex = 20; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.DoubleClick += new System.EventHandler(this.table1_DoubleClick); + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColName, + this.ColPath, + this.ColDes}); + // + // ColName + // + this.ColName.Editable = false; + this.ColName.Tag = null; + this.ColName.Text = "名称"; + this.ColName.Width = 150; + // + // ColPath + // + this.ColPath.Editable = false; + this.ColPath.Tag = null; + this.ColPath.Text = "路径"; + this.ColPath.Width = 200; + // + // ColDes + // + this.ColDes.Editable = false; + this.ColDes.Tag = null; + this.ColDes.Text = "备注"; + this.ColDes.Width = 400; + // + // BtnClean + // + this.BtnClean.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnClean.Location = new System.Drawing.Point(216, 20); + this.BtnClean.Name = "BtnClean"; + this.BtnClean.Size = new System.Drawing.Size(99, 34); + this.BtnClean.TabIndex = 22; + this.BtnClean.Text = "清理垃圾"; + this.toolTip1.SetToolTip(this.BtnClean, "清理debug目录下的pdb文件"); + this.BtnClean.UseVisualStyleBackColor = true; + this.BtnClean.Click += new System.EventHandler(this.BtnClean_Click); + // + // BtnBatchZip + // + this.BtnBatchZip.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnBatchZip.Location = new System.Drawing.Point(531, 20); + this.BtnBatchZip.Name = "BtnBatchZip"; + this.BtnBatchZip.Size = new System.Drawing.Size(99, 34); + this.BtnBatchZip.TabIndex = 23; + this.BtnBatchZip.Text = "一键打包"; + this.toolTip1.SetToolTip(this.BtnBatchZip, "一键混淆并打包当前项目生成的文件。"); + this.BtnBatchZip.UseVisualStyleBackColor = true; + this.BtnBatchZip.Click += new System.EventHandler(this.BtnBatchZip_Click); + // + // LblState + // + this.LblState.AutoSize = true; + this.LblState.Location = new System.Drawing.Point(10, 127); + this.LblState.Name = "LblState"; + this.LblState.Size = new System.Drawing.Size(83, 12); + this.LblState.TabIndex = 24; + this.LblState.Text = "状态:准备就绪"; + // + // BtnInsertUpdate + // + this.BtnInsertUpdate.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnInsertUpdate.Location = new System.Drawing.Point(321, 20); + this.BtnInsertUpdate.Name = "BtnInsertUpdate"; + this.BtnInsertUpdate.Size = new System.Drawing.Size(99, 34); + this.BtnInsertUpdate.TabIndex = 25; + this.BtnInsertUpdate.Text = "插入更新日志"; + this.toolTip1.SetToolTip(this.BtnInsertUpdate, "将当前版本加入更新日志"); + this.BtnInsertUpdate.UseVisualStyleBackColor = true; + this.BtnInsertUpdate.Click += new System.EventHandler(this.BtnInsertUpdate_Click); + // + // BtnUpdateDll + // + this.BtnUpdateDll.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnUpdateDll.Location = new System.Drawing.Point(6, 20); + this.BtnUpdateDll.Name = "BtnUpdateDll"; + this.BtnUpdateDll.Size = new System.Drawing.Size(99, 34); + this.BtnUpdateDll.TabIndex = 26; + this.BtnUpdateDll.Text = "更新引用dll"; + this.toolTip1.SetToolTip(this.BtnUpdateDll, "将当前输出文件夹里的dll文件更新到最新版\r\n将当前项目文件里的引用dll位置修改至输出目录。"); + this.BtnUpdateDll.UseVisualStyleBackColor = true; + this.BtnUpdateDll.Click += new System.EventHandler(this.BtnUpdateDll_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.BtnUpdateDllVer); + this.groupBox1.Controls.Add(this.BtnCreateFolder); + this.groupBox1.Controls.Add(this.BtnUpdateDll); + this.groupBox1.Controls.Add(this.BtnInsertUpdate); + this.groupBox1.Controls.Add(this.BtnBatchZip); + this.groupBox1.Controls.Add(this.BtnClean); + this.groupBox1.Location = new System.Drawing.Point(12, 62); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(905, 62); + this.groupBox1.TabIndex = 27; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "项目管理"; + // + // BtnCreateFolder + // + this.BtnCreateFolder.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnCreateFolder.Location = new System.Drawing.Point(426, 20); + this.BtnCreateFolder.Name = "BtnCreateFolder"; + this.BtnCreateFolder.Size = new System.Drawing.Size(99, 34); + this.BtnCreateFolder.TabIndex = 27; + this.BtnCreateFolder.Text = "创建毕方文件夹"; + this.BtnCreateFolder.UseVisualStyleBackColor = true; + this.BtnCreateFolder.Click += new System.EventHandler(this.BtnCreateFolder_Click); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(10, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(77, 12); + this.label1.TabIndex = 29; + this.label1.Text = "毕方项目路径"; + // + // TxtFolder + // + this.TxtFolder.BackColor = System.Drawing.Color.White; + this.TxtFolder.EmptyText = ""; + this.TxtFolder.Location = new System.Drawing.Point(12, 23); + this.TxtFolder.MaxLength = 999999999; + this.TxtFolder.Multiline = false; + this.TxtFolder.Name = "TxtFolder"; + this.TxtFolder.OnlyNumeric = false; + this.TxtFolder.PasswordChar = '\0'; + this.TxtFolder.ReadOnly = false; + this.TxtFolder.SelectedText = ""; + this.TxtFolder.SelectionLength = 0; + this.TxtFolder.SelectionStart = 0; + this.TxtFolder.Size = new System.Drawing.Size(664, 33); + this.TxtFolder.TabIndex = 28; + this.TxtFolder.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtFolder.ToolTip = ""; + this.TxtFolder.WordWrap = true; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(695, 8); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(47, 12); + this.label2.TabIndex = 30; + this.label2.Text = "USQ版本"; + // + // TxtUSQ_Ver + // + this.TxtUSQ_Ver.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtUSQ_Ver.EmptyText = ""; + this.TxtUSQ_Ver.Location = new System.Drawing.Point(682, 24); + this.TxtUSQ_Ver.MaxLength = 999999999; + this.TxtUSQ_Ver.Multiline = false; + this.TxtUSQ_Ver.Name = "TxtUSQ_Ver"; + this.TxtUSQ_Ver.OnlyNumeric = false; + this.TxtUSQ_Ver.PasswordChar = '\0'; + this.TxtUSQ_Ver.ReadOnly = false; + this.TxtUSQ_Ver.SelectedText = ""; + this.TxtUSQ_Ver.SelectionLength = 0; + this.TxtUSQ_Ver.SelectionStart = 0; + this.TxtUSQ_Ver.Size = new System.Drawing.Size(81, 33); + this.TxtUSQ_Ver.TabIndex = 31; + this.TxtUSQ_Ver.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.TxtUSQ_Ver.ToolTip = ""; + this.TxtUSQ_Ver.WordWrap = true; + // + // BtnUpdateDllVer + // + this.BtnUpdateDllVer.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnUpdateDllVer.Location = new System.Drawing.Point(111, 20); + this.BtnUpdateDllVer.Name = "BtnUpdateDllVer"; + this.BtnUpdateDllVer.Size = new System.Drawing.Size(99, 34); + this.BtnUpdateDllVer.TabIndex = 28; + this.BtnUpdateDllVer.Text = "更新dll版本"; + this.toolTip1.SetToolTip(this.BtnUpdateDllVer, "将当前输出文件夹里的dll文件更新到最新版"); + this.BtnUpdateDllVer.UseVisualStyleBackColor = true; + this.BtnUpdateDllVer.Click += new System.EventHandler(this.BtnUpdateDllVer_Click); + // + // FrmPathInfo + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(929, 516); + this.CloseButton = false; + this.CloseButtonVisible = false; + this.Controls.Add(this.TxtUSQ_Ver); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.TxtFolder); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.LblState); + this.Controls.Add(this.table1); + this.Name = "FrmPathInfo"; + this.Text = "项目"; + this.Load += new System.EventHandler(this.FrmPathInfo_Load); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.groupBox1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private XPTable.Models.Table table1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn ColName; + private XPTable.Models.TextColumn ColPath; + private XPTable.Models.TextColumn ColDes; + private XPTable.Models.TableModel tableModel1; + private ryControls.ButtonEx BtnClean; + private ryControls.ButtonEx BtnBatchZip; + private System.Windows.Forms.Label LblState; + private ryControls.ButtonEx BtnInsertUpdate; + private ryControls.ButtonEx BtnUpdateDll; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 TxtFolder; + private ryControls.ButtonEx BtnCreateFolder; + private System.Windows.Forms.Label label2; + private ryControls.TextBoxEx2 TxtUSQ_Ver; + private ryControls.ButtonEx BtnUpdateDllVer; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmPathInfo.cs b/Source/开发辅助工具/Tools/FrmPathInfo.cs new file mode 100644 index 0000000..227695f --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmPathInfo.cs @@ -0,0 +1,471 @@ +using Microsoft.Win32; +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using System.Xml; +using WeifenLuo.WinFormsUI.Docking; +using 开发辅助工具.Manager; + +namespace 开发辅助工具.Tools +{ + public partial class FrmPathInfo : DockContent + { + string SelectPath = ""; + public FrmPathInfo(string _Path) + { + SelectPath = _Path; + InitializeComponent(); + LoadPath(); + } + /// + /// 获取毕方标准项目根路径 + /// + /// + private string GetBFFolderPath() + { + var _path = SelectPath; + if(System.IO.Directory.Exists(_path)) + { + if (System.IO.File.Exists(_path + "\\查看项目.ryp")) + { + return _path; + } + } + while (true) + { + _path = System.IO.Path.GetDirectoryName(_path.TrimEnd('\\')).TrimEnd('\\'); + if (System.IO.File.Exists(_path + "\\查看项目.ryp")) + { + return _path; + } + else + { + if (_path.Length < 4) { break; } + } + } + return ""; + } + private void LoadPath() + { + var _path = GetBFFolderPath(); + TxtFolder.Text = _path; + if (_path!="") + { + var folder = _path; + ryCommon.Ini ini = new Ini(folder + "\\查看项目.ryp"); + TxtUSQ_Ver.Text = ini.ReadIni("project", "usqver"); + AddPath(true,"Debug输出目录", "Bin\\Debug","包含调试信息的输出目录"); + AddPath(true, "Release输出目录", "Bin\\Release", "不包含调试信息的输出目录"); + AddPath(true,"源代码目录", "Source", "含有项目源码"); + AddPath(true, "安装包目录", "Publish", "对外发布的安装文件"); + AddPath(false, " - 免安装输出包目录", "Publish\\Green", "绿色免安装版本目录,通常为zip压缩包"); + AddPath(false, " - 安装输出包目录", "Publish\\Install", "需要安装的版本目录,通常为exe压缩包"); + AddPath(false, " - 输出底包目录", "Publish\\OriginalFiles", "输出底包,保留完整的文件结构,绿色版、安装包都以此来制作"); + AddPath(false, " - 升级输出包目录", "Publish\\UpdateFile", "升级包目录,通常为zip压缩包,非完整输出包"); + AddPath(true, "帮助文件目录", "Help", "帮助文档"); + AddPath(true, "外部资源目录", "Res", "项目用到的资源备份,例外图标、图片、第三方项目"); + AddPath(false, " - 第三方组件项目", "Res\\ThirdParty", "包含第三方组件的项目"); + AddPath(false, " - 图片文件夹", "Res\\Images", "含下载的项目图片"); + AddPath(true, "更新日志", "更新日志.txt", "当前项目更新日志文件"); + AddPath(true, "更新日志", "更新日志.md", "当前项目更新日志文件"); + AddPath(true, "更新日志", "CHANGELOG.md", "当前项目更新日志文件"); + AddPath(true, "自述文件", "README.md", "当前项目自述文件"); + void AddPath(bool bold,string name,string path,string des) + { + if (System.IO.File.Exists(folder + "\\" + path) || System.IO.Directory.Exists(folder + "\\" + path)) + { + XPTable.Models.Row itemList = new XPTable.Models.Row + { + Tag = folder + "\\" + path + }; + var cell_name = new XPTable.Models.Cell(name); + if(bold) + cell_name.ForeColor=Color.Blue; + else + { cell_name.ForeColor = Color.Tomato; } + itemList.Cells.Add(cell_name); + itemList.Cells.Add(new XPTable.Models.Cell(path)); + var cell = new XPTable.Models.Cell(des); + cell.ForeColor = Color.Gray; + itemList.Cells.Add(cell); + table1.TableModel.Rows.Add(itemList); + } + } + } + } + private void CloseApp() + { + Itrycn_Db.IsCloseConfirm = false; + this.DockPanel.FindForm().Close(); + } + /// + /// 获取Notepad++路径 + /// + /// + private string GetNotepadPlusPath() + { + var path = ""; + try + { + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Notepad++", true); + if (softwareRun.GetValue("") != null) + { + string notepad_plus_path = softwareRun.GetValue("").ToString() + "\\notepad++.exe"; + if (System.IO.File.Exists(notepad_plus_path)) + { + path = notepad_plus_path; + } + } + softwareRun.Close(); + LMach.Close(); + } + catch + { + } + return path; + } + + private void FrmProject_Load(object sender, EventArgs e) + { + + } + + private void table1_DoubleClick(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { return; } + var path = table1.SelectedItems[0].Tag.ToString(); + if (System.IO.Directory.Exists(path)) + { + ryCommon.RyFiles.OpenFile(path); + } + else if (System.IO.File.Exists(path)) + { + if (System.IO.Path.GetExtension(path).ToLower() == ".txt") + { + string notepad_plus_path = GetNotepadPlusPath(); + if (System.IO.File.Exists(notepad_plus_path)) + { + ryCommon.RyFiles.RunFile(notepad_plus_path, "\"" + path + "\""); + } + else + { + ryCommon.RyFiles.OpenFile(path); + } + } + else if (System.IO.Path.GetExtension(path).ToLower() == ".md") + { + ryCommon.RyFiles.OpenFile(path); + } + else + { + ryCommon.RyFiles.OpenFolderGotoFile(path); + } + } + } + + + private void BtnClean_Click(object sender, EventArgs e) + { + switch (MessageBox.Show("是否要进行清理不必要的文件,例如*.pdb", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information)) + { + case DialogResult.No: + return; + } + BtnClean.Enabled = false; + var folder = GetBFFolderPath(); + if(folder!="") + { + if (System.IO.Directory.Exists(folder + "\\Bin\\Debug")) + { + Itrycn_Db.DeleteFiles(folder + "\\Bin\\Debug", "*.pdb"); + Itrycn_Db.DeleteFiles(folder + "\\Bin\\Debug", "*.dcu"); + } + if (System.IO.Directory.Exists(folder + "\\Bin\\Release")) + { + Itrycn_Db.DeleteFiles(folder + "\\Bin\\Release", "*.pdb"); + Itrycn_Db.DeleteFiles(folder + "\\Bin\\Release", "*.dcu"); + } + if (System.IO.Directory.Exists(folder + "\\Source")) + { + Itrycn_Db.DeleteFiles(folder + "\\Source", "*.pdb"); + Itrycn_Db.DeleteFiles(folder + "\\Source", "*.dcu"); + } + } + BtnClean.Enabled = true; + MessageBox.Show("清理完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + + /// + /// 等待进程执行完毕 + /// + /// + /// + public static string Read_Prog(string exe,string cmd_text) + { + String cmd = exe; + Process p = new Process + { + StartInfo = new System.Diagnostics.ProcessStartInfo + { + FileName = cmd,//设定程序名 + Arguments = cmd_text, + UseShellExecute = false, //关闭shell的使用 + RedirectStandardInput = true, //重定向标准输入 + RedirectStandardOutput = true, //重定向标准输出 + RedirectStandardError = false, //重定向错误输出 + CreateNoWindow = true//设置不显示窗口 + } + }; + p.Start(); + string result = p.StandardOutput.ReadToEnd(); + p.WaitForExit(20000); + p.Close(); + return result; + } + private void BtnBatchZip_Click(object sender, EventArgs e) + { + BtnBatchZip.Enabled = false; + Thread th = new Thread(Start); + th.Start(); + void Start() + { + var com_mode = "Debug"; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + var ds = db.ReadData("select * from Settings where name='Setting'"); + if (mydb.HaveData(ds)) + { + var row = mydb.GetData(ds); + ryCommon.Storage mStor = new ryCommon.Storage(row["value"].ToString()); + mStor.SelectNodeBySet(); + var ReactorPath = mStor.GetAttrValue("ReactorPath"); + var WinRARPath = mStor.GetAttrValue("WinRARPath"); + if (WinRARPath == "") + { + if (System.IO.File.Exists(@"C:\Program Files\WinRAR\WinRAR.exe")) + { + WinRARPath = @"C:\Program Files\WinRAR\WinRAR.exe"; + } + } + var bf_folder = GetBFFolderPath(); + if (bf_folder != "") + { + ryCommon.Ini ini = new Ini(bf_folder + "\\查看项目.ryp"); + var eng_name = ini.ReadIni("project", "engname"); + var proglang = ini.ReadIni("project", "proglang"); + var ouput_folder = bf_folder + "\\Bin\\" + com_mode + "\\" + eng_name; + var file_ver = ""; + if (System.IO.File.Exists(ouput_folder + "\\" + eng_name + ".exe")) + { + FileVersionInfo fileVerInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(ouput_folder + "\\" + eng_name + ".exe"); + file_ver = fileVerInfo.ProductVersion; + } + if (proglang == "c#") + { + ShowState("正在进行混淆..."); + if (System.IO.File.Exists(bf_folder + "\\Bin\\混淆_" + com_mode + ".nrproj")) + { + var cmd = Read_Prog(ReactorPath, "-project \"" + bf_folder + "\\Bin\\混淆_" + com_mode + ".nrproj\""); + } + } + ShowState("正在清理不重要的缓存..."); + ryCommon.RyFiles.DeleteFile(ouput_folder + "\\Secure\\*.pdb"); + ShowState("复制混淆文件到底包目录..."); + ryCommon.RyFiles.CopyFile(ouput_folder + "\\Secure\\*", bf_folder + "\\Publish\\OriginalFiles\\"); + #region 复制自定义规则文件到底包目录 + ShowState("复制自定义规则文件到底包目录..."); + var Publish = ryCommon.RyFiles.ReadAllLines(bf_folder + "\\Publish\\Publish.set"); + for (int m = 0; m < Publish.Length; m++) + { + var line = Publish[m].Trim(); + if (line == "" || line.IndexOf("#") == 0) { continue; } + if (line.IndexOfEx("del:") == 0) + { + ryCommon.RyFiles.DeleteFile(bf_folder + "\\Publish\\OriginalFiles\\" + line.Substring(4)); + } + else if (line.IndexOfEx("copy:") == 0) + { + var from_to = line.Substring(5).Replace("->", "|").Split('|'); + if (from_to.Length == 2) + { + var from_path = from_to[0]; + var to_path = from_to[1]; + ryCommon.RyFiles.CopyFile(ouput_folder + "\\" + from_path, bf_folder + "\\Publish\\OriginalFiles\\" + to_path); + } + } + } + #endregion + ShowState("正在打包..."); + var cmd2 = Read_Prog(WinRARPath, "-r -ep1 a \"" + bf_folder + "\\Publish\\Green\\" + eng_name + ".zip\" \"" + bf_folder + "\\Publish\\OriginalFiles\\\""); + RyFiles.CopyFile(bf_folder + "\\Publish\\Green\\" + eng_name + ".zip", bf_folder + "\\Publish\\Green\\HistoryVer\\" + eng_name + "_" + file_ver + ".zip"); + ShowState("打包完成..."); + } + } + } + db.Free(); + void ShowState(string text) + { + this.Invoke(new Action(() => + { + LblState.Text = "状态:" + text; + })); + } + this.Invoke(new Action(() => + { + BtnBatchZip.Enabled = true; + })); + } + } + private void GetVersBySln(string path) + { + RyProject project = new RyProject(); + string update_logs_text = ""; + if (System.IO.File.Exists(path)) + { + var sln_text = ryCommon.RyFiles.ReadAllLines(path); + for (int i = 0; i < sln_text.Length; i++) + { + if(sln_text[i].StartsWith("Project")) + { + var item = sln_text[i].Replace(" = ",",").Split(','); + if (item.Length>=3) + { + var project_name = item[1].Trim().Trim('"'); + var project_path =System.IO.Path.GetDirectoryName(path).TrimEnd('\\')+"\\"+item[2].Trim().Trim('"'); + var ver = project.GetAssemblyVersion(project_path); + if (ver != "") + { + if (update_logs_text != "") { update_logs_text += "\r\n"; } + update_logs_text +="#### "+ project_name + " V" + ver+ "\r\n暂无\r\n"; + } + } + } + } + } + if (update_logs_text != "") + { + var _path = GetBFFolderPath(); + if (_path != "") + { + var update_text = ryCommon.RyFiles.ReadAllText(_path + "\\CHANGELOG.md"); + RyFiles.WriteAllText(_path+ "\\CHANGELOG.md", "### " + DateTime.Now.ToString("yyyy-MM-dd") + "更新\r\n------\r\n"+ update_logs_text + update_text, Encoding.UTF8); + RyFiles.OpenFile(_path + "\\CHANGELOG.md"); + } + } + } + private void BtnInsertUpdate_Click(object sender, EventArgs e) + { + var _path = GetBFFolderPath(); + if (_path != "") + { + var files = System.IO.Directory.GetFiles(_path+"\\Source"); + for (int i = 0; i < files.Length; i++) + { + var ext = System.IO.Path.GetExtension(files[i]).ToLower(); + if(ext==".sln") + { + GetVersBySln(files[i]); + return; + } + } + var dirs = System.IO.Directory.GetDirectories(_path + "\\Source"); + for (int i = 0; i < dirs.Length; i++) + { + var files2 = System.IO.Directory.GetFiles(dirs[i]); + for (int m = 0; m < files2.Length; m++) + { + var ext = System.IO.Path.GetExtension(files2[m]).ToLower(); + if (ext == ".sln") + { + GetVersBySln(files2[m]); + return; + } + } + } + var sln_path = _path + "\\CHANGELOG.md"; + } + } + + private void BtnUpdateDll_Click(object sender, EventArgs e) + { + BtnUpdateDll.Enabled = false; + int error = 0; + RyProject project = new RyProject + { + CopyDllToBin = true, + ChangedOutputPath = false + }; + var bf_folder = GetBFFolderPath(); + if(bf_folder!="") + { + error+= project.UpdateCSproj(bf_folder+"\\Source"); + } + error +=project.UpdateDlls(bf_folder+"\\Bin",out string _error_str); + BtnUpdateDll.Enabled = true; + if (error == 0) + { + MessageBox.Show("更新dll完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("更新dll完成,共失败"+error+ "项。\r\n\r\n" + _error_str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + + + private void FrmPathInfo_Load(object sender, EventArgs e) + { + + } + + private void BtnCreateFolder_Click(object sender, EventArgs e) + { + ryCommon.Ini ini= new Ini(TxtFolder.Text+ "\\查看项目.ryp"); + FrmCreateProject frm = new FrmCreateProject(); + frm.TxtFolder.Text = TxtFolder.Text; + frm.ChkUnCreateProject.Checked = true; + frm.TxtProjectEngName.Text = ini.ReadIni("project", "engname"); + frm.TxtProjectName.Text = ini.ReadIni("project", "name"); + frm.StartPosition = FormStartPosition.CenterParent; + frm.ShowDialog(); + } + + private void BtnUpdateDllVer_Click(object sender, EventArgs e) + { + BtnUpdateDllVer.Enabled = false; + int error = 0; + RyProject project = new RyProject + { + CopyDllToBin = true, + ChangedOutputPath = false + }; + var bf_folder = GetBFFolderPath(); + var _error_str = ""; + if (bf_folder != "") + { + error += project.UpdateDlls(bf_folder + "\\Bin", out _error_str); + } + BtnUpdateDllVer.Enabled = true; + if (error == 0) + { + MessageBox.Show("更新dll完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("更新dll完成,共失败" + error + "项。\r\n\r\n"+ _error_str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmPathInfo.resx b/Source/开发辅助工具/Tools/FrmPathInfo.resx new file mode 100644 index 0000000..d8c54c5 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmPathInfo.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 158, 17 + + + 285, 17 + + + 285, 17 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmProject.Designer.cs b/Source/开发辅助工具/Tools/FrmProject.Designer.cs new file mode 100644 index 0000000..2384707 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmProject.Designer.cs @@ -0,0 +1,304 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmProject + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.BtnCustomMessageBox = new ryControls.ButtonEx(); + this.BtnCopyCMD = new System.Windows.Forms.Button(); + this.BtnOpenOutput = new System.Windows.Forms.Button(); + this.BtnMessageBox = new ryControls.ButtonEx(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.ColName = new XPTable.Models.TextColumn(); + this.ColPath = new XPTable.Models.TextColumn(); + this.ColDes = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.BtnClean = new ryControls.ButtonEx(); + this.BtnBatchZip = new ryControls.ButtonEx(); + this.LblState = new System.Windows.Forms.Label(); + this.BtnInsertUpdate = new ryControls.ButtonEx(); + this.BtnUpdateDll = new ryControls.ButtonEx(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); + this.BtnUpdateVer = new ryControls.ButtonEx(); + this.BtnUpdateDllVer = new ryControls.ButtonEx(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.groupBox1.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.SuspendLayout(); + // + // BtnCustomMessageBox + // + this.BtnCustomMessageBox.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnCustomMessageBox.Location = new System.Drawing.Point(111, 19); + this.BtnCustomMessageBox.Name = "BtnCustomMessageBox"; + this.BtnCustomMessageBox.Size = new System.Drawing.Size(99, 34); + this.BtnCustomMessageBox.TabIndex = 12; + this.BtnCustomMessageBox.Text = "自定义对话框"; + this.BtnCustomMessageBox.UseVisualStyleBackColor = true; + this.BtnCustomMessageBox.Click += new System.EventHandler(this.BtnCustomMessageBox_Click); + // + // BtnCopyCMD + // + this.BtnCopyCMD.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.BtnCopyCMD.Location = new System.Drawing.Point(775, 12); + this.BtnCopyCMD.Name = "BtnCopyCMD"; + this.BtnCopyCMD.Size = new System.Drawing.Size(142, 38); + this.BtnCopyCMD.TabIndex = 11; + this.BtnCopyCMD.Text = "设置自动更新版本号"; + this.BtnCopyCMD.UseVisualStyleBackColor = true; + this.BtnCopyCMD.Click += new System.EventHandler(this.BtnCopyCMD_Click); + // + // BtnOpenOutput + // + this.BtnOpenOutput.Location = new System.Drawing.Point(12, 12); + this.BtnOpenOutput.Name = "BtnOpenOutput"; + this.BtnOpenOutput.Size = new System.Drawing.Size(142, 38); + this.BtnOpenOutput.TabIndex = 9; + this.BtnOpenOutput.Text = "打开输出文件夹"; + this.BtnOpenOutput.UseVisualStyleBackColor = true; + this.BtnOpenOutput.Click += new System.EventHandler(this.BtnOpenOutput_Click); + // + // BtnMessageBox + // + this.BtnMessageBox.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnMessageBox.Location = new System.Drawing.Point(6, 19); + this.BtnMessageBox.Name = "BtnMessageBox"; + this.BtnMessageBox.Size = new System.Drawing.Size(99, 34); + this.BtnMessageBox.TabIndex = 8; + this.BtnMessageBox.Text = "对话框代码"; + this.BtnMessageBox.UseVisualStyleBackColor = true; + this.BtnMessageBox.Click += new System.EventHandler(this.BtnMessageBox_Click); + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(12, 208); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(905, 296); + this.table1.TabIndex = 20; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.DoubleClick += new System.EventHandler(this.table1_DoubleClick); + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColName, + this.ColPath, + this.ColDes}); + // + // ColName + // + this.ColName.Editable = false; + this.ColName.Tag = null; + this.ColName.Text = "名称"; + this.ColName.Width = 150; + // + // ColPath + // + this.ColPath.Editable = false; + this.ColPath.Tag = null; + this.ColPath.Text = "路径"; + this.ColPath.Width = 200; + // + // ColDes + // + this.ColDes.Editable = false; + this.ColDes.Tag = null; + this.ColDes.Text = "备注"; + this.ColDes.Width = 400; + // + // BtnClean + // + this.BtnClean.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnClean.Location = new System.Drawing.Point(216, 20); + this.BtnClean.Name = "BtnClean"; + this.BtnClean.Size = new System.Drawing.Size(99, 34); + this.BtnClean.TabIndex = 22; + this.BtnClean.Text = "清理垃圾"; + this.toolTip1.SetToolTip(this.BtnClean, "清理debug目录下的pdb、dcu文件"); + this.BtnClean.UseVisualStyleBackColor = true; + this.BtnClean.Click += new System.EventHandler(this.BtnClean_Click); + // + // BtnBatchZip + // + this.BtnBatchZip.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnBatchZip.Location = new System.Drawing.Point(531, 20); + this.BtnBatchZip.Name = "BtnBatchZip"; + this.BtnBatchZip.Size = new System.Drawing.Size(99, 34); + this.BtnBatchZip.TabIndex = 23; + this.BtnBatchZip.Text = "一键打包"; + this.toolTip1.SetToolTip(this.BtnBatchZip, "一键混淆并打包当前项目生成的文件。"); + this.BtnBatchZip.UseVisualStyleBackColor = true; + this.BtnBatchZip.Click += new System.EventHandler(this.BtnBatchZip_Click); + // + // LblState + // + this.LblState.AutoSize = true; + this.LblState.Location = new System.Drawing.Point(10, 190); + this.LblState.Name = "LblState"; + this.LblState.Size = new System.Drawing.Size(83, 12); + this.LblState.TabIndex = 24; + this.LblState.Text = "状态:准备就绪"; + // + // BtnInsertUpdate + // + this.BtnInsertUpdate.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnInsertUpdate.Location = new System.Drawing.Point(321, 20); + this.BtnInsertUpdate.Name = "BtnInsertUpdate"; + this.BtnInsertUpdate.Size = new System.Drawing.Size(99, 34); + this.BtnInsertUpdate.TabIndex = 25; + this.BtnInsertUpdate.Text = "插入更新日志"; + this.toolTip1.SetToolTip(this.BtnInsertUpdate, "将当前版本加入更新日志"); + this.BtnInsertUpdate.UseVisualStyleBackColor = true; + this.BtnInsertUpdate.Click += new System.EventHandler(this.BtnInsertUpdate_Click); + // + // BtnUpdateDll + // + this.BtnUpdateDll.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnUpdateDll.Location = new System.Drawing.Point(6, 20); + this.BtnUpdateDll.Name = "BtnUpdateDll"; + this.BtnUpdateDll.Size = new System.Drawing.Size(99, 34); + this.BtnUpdateDll.TabIndex = 26; + this.BtnUpdateDll.Text = "更新引用dll"; + this.toolTip1.SetToolTip(this.BtnUpdateDll, "将当前输出文件夹里的dll文件更新到最新版\r\n将当前项目文件里的引用dll位置修改至输出目录。"); + this.BtnUpdateDll.UseVisualStyleBackColor = true; + this.BtnUpdateDll.Click += new System.EventHandler(this.BtnUpdateDll_Click); + // + // BtnUpdateVer + // + this.BtnUpdateVer.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnUpdateVer.Location = new System.Drawing.Point(426, 20); + this.BtnUpdateVer.Name = "BtnUpdateVer"; + this.BtnUpdateVer.Size = new System.Drawing.Size(99, 34); + this.BtnUpdateVer.TabIndex = 27; + this.BtnUpdateVer.Text = "更新版本号"; + this.toolTip1.SetToolTip(this.BtnUpdateVer, "每点一次自动更新一下版本号。"); + this.BtnUpdateVer.UseVisualStyleBackColor = true; + this.BtnUpdateVer.Click += new System.EventHandler(this.BtnUpdateVer_Click); + // + // BtnUpdateDllVer + // + this.BtnUpdateDllVer.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnUpdateDllVer.Location = new System.Drawing.Point(111, 20); + this.BtnUpdateDllVer.Name = "BtnUpdateDllVer"; + this.BtnUpdateDllVer.Size = new System.Drawing.Size(99, 34); + this.BtnUpdateDllVer.TabIndex = 29; + this.BtnUpdateDllVer.Text = "更新dll版本"; + this.toolTip1.SetToolTip(this.BtnUpdateDllVer, "将当前输出文件夹里的dll文件更新到最新版"); + this.BtnUpdateDllVer.UseVisualStyleBackColor = true; + this.BtnUpdateDllVer.Click += new System.EventHandler(this.BtnUpdateDllVer_Click); + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.BtnUpdateDllVer); + this.groupBox1.Controls.Add(this.BtnUpdateVer); + this.groupBox1.Controls.Add(this.BtnUpdateDll); + this.groupBox1.Controls.Add(this.BtnInsertUpdate); + this.groupBox1.Controls.Add(this.BtnBatchZip); + this.groupBox1.Controls.Add(this.BtnClean); + this.groupBox1.Location = new System.Drawing.Point(12, 120); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(905, 62); + this.groupBox1.TabIndex = 27; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "项目管理"; + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.BtnMessageBox); + this.groupBox2.Controls.Add(this.BtnCustomMessageBox); + this.groupBox2.Location = new System.Drawing.Point(12, 56); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(905, 60); + this.groupBox2.TabIndex = 28; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "快速代码"; + // + // FrmProject + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(929, 516); + this.CloseButton = false; + this.CloseButtonVisible = false; + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.LblState); + this.Controls.Add(this.table1); + this.Controls.Add(this.BtnCopyCMD); + this.Controls.Add(this.BtnOpenOutput); + this.Name = "FrmProject"; + this.Text = "项目"; + this.Load += new System.EventHandler(this.FrmProject_Load); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.groupBox1.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.ButtonEx BtnCustomMessageBox; + private System.Windows.Forms.Button BtnCopyCMD; + private System.Windows.Forms.Button BtnOpenOutput; + private ryControls.ButtonEx BtnMessageBox; + private XPTable.Models.Table table1; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TextColumn ColName; + private XPTable.Models.TextColumn ColPath; + private XPTable.Models.TextColumn ColDes; + private XPTable.Models.TableModel tableModel1; + private ryControls.ButtonEx BtnClean; + private ryControls.ButtonEx BtnBatchZip; + private System.Windows.Forms.Label LblState; + private ryControls.ButtonEx BtnInsertUpdate; + private ryControls.ButtonEx BtnUpdateDll; + private System.Windows.Forms.ToolTip toolTip1; + private System.Windows.Forms.GroupBox groupBox1; + private ryControls.ButtonEx BtnUpdateVer; + private System.Windows.Forms.GroupBox groupBox2; + private ryControls.ButtonEx BtnUpdateDllVer; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmProject.cs b/Source/开发辅助工具/Tools/FrmProject.cs new file mode 100644 index 0000000..d56420c --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmProject.cs @@ -0,0 +1,592 @@ +using Microsoft.Win32; +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using System.Xml; +using WeifenLuo.WinFormsUI.Docking; +using 开发辅助工具.Manager; + +namespace 开发辅助工具.Tools +{ + public partial class FrmProject : DockContent + { + public FrmProject(string ProjectPath) + { + _ProjectPath = ProjectPath; + InitializeComponent(); + try + { + if (_ProjectPath == "") { return; } + System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); + xml.Load(_ProjectPath); + var xmlnsm = new XmlNamespaceManager(xml.NameTable); + xmlnsm.AddNamespace("d", xml.DocumentElement.NamespaceURI); + var root = @"d:Project//d:PropertyGroup//d:"; + var project_name = GetValue("AssemblyName"); + if (project_name != "") { Text = project_name; } + #region 读取图标 + var ApplicationIcon = GetValue("ApplicationIcon"); + ApplicationIcon = System.IO.Path.GetDirectoryName(_ProjectPath) + "\\" + ApplicationIcon; + if (System.IO.File.Exists(ApplicationIcon)) + { + try + { + Icon = new Icon(ApplicationIcon); + } + catch + { + } + } + #endregion + LoadPath(); + string GetValue(string name) + { + var node = xml.SelectSingleNode(root + name, xmlnsm); + if (node != null) + { + return node.InnerText; + } + return ""; + } + } + catch { } + } + /// + /// 获取毕方标准项目根路径 + /// + /// + private string GetBFFolderPath() + { + var _path = _ProjectPath; + while (true) + { + _path = System.IO.Path.GetDirectoryName(_path.TrimEnd('\\')).TrimEnd('\\'); + if (System.IO.File.Exists(_path + "\\查看项目.ryp")) + { + return _path; + } + else + { + if (_path.Length < 4) { break; } + } + } + return ""; + } + private void LoadPath() + { + var _path = GetBFFolderPath(); + if (_path!="") + { + var folder = _path; + AddPath(true,"Debug输出目录", "Bin\\Debug","包含调试信息的输出目录"); + AddPath(true, "Release输出目录", "Bin\\Release", "不包含调试信息的输出目录"); + AddPath(true,"源代码目录", "Source", "含有项目源码"); + AddPath(true, "安装包目录", "Publish", "对外发布的安装文件"); + AddPath(false, " - 免安装输出包目录", "Publish\\Green", "绿色免安装版本目录,通常为zip压缩包"); + AddPath(false, " - 安装输出包目录", "Publish\\Install", "需要安装的版本目录,通常为exe压缩包"); + AddPath(false, " - 输出底包目录", "Publish\\OriginalFiles", "输出底包,保留完整的文件结构,绿色版、安装包都以此来制作"); + AddPath(false, " - 升级输出包目录", "Publish\\UpdateFile", "升级包目录,通常为zip压缩包,非完整输出包"); + AddPath(true, "帮助文件目录", "Help", "帮助文档"); + AddPath(true, "外部资源目录", "Res", "项目用到的资源备份,例外图标、图片、第三方项目"); + AddPath(false, " - 第三方组件项目", "Res\\ThirdParty", "包含第三方组件的项目"); + AddPath(false, " - 图片文件夹", "Res\\Images", "含下载的项目图片"); + AddPath(true, "更新日志", "更新日志.txt", "当前项目更新日志文件"); + AddPath(true, "更新日志", "更新日志.md", "当前项目更新日志文件"); + AddPath(true, "更新日志", "CHANGELOG.md", "当前项目更新日志文件"); + AddPath(true, "自述文件", "README.md", "当前项目自述文件"); + void AddPath(bool bold,string name,string path,string des) + { + if (System.IO.File.Exists(folder + "\\" + path) || System.IO.Directory.Exists(folder + "\\" + path)) + { + XPTable.Models.Row itemList = new XPTable.Models.Row + { + Tag = folder + "\\" + path + }; + var cell_name = new XPTable.Models.Cell(name); + if(bold) + cell_name.ForeColor=Color.Blue; + else + { cell_name.ForeColor = Color.Tomato; } + itemList.Cells.Add(cell_name); + itemList.Cells.Add(new XPTable.Models.Cell(path)); + var cell = new XPTable.Models.Cell(des); + cell.ForeColor = Color.Gray; + itemList.Cells.Add(cell); + table1.TableModel.Rows.Add(itemList); + } + } + } + } + string _ProjectPath = ""; + private string GetPath(string _path) + { + string tmp_path = _path; + if (_path.IndexOf("..") == 0) + { + tmp_path = System.IO.Path.GetDirectoryName(System.IO.Path.GetDirectoryName(_ProjectPath).Trim('\\')); + tmp_path = tmp_path + "\\" + _path.Substring(2); + } + else if (_path.IndexOf(".") == 0) + { + tmp_path = System.IO.Path.GetDirectoryName(_ProjectPath); + tmp_path = tmp_path + "\\" + _path.Substring(1); + } + else if (_path.IndexOf(":") < 0) + { + tmp_path = System.IO.Path.GetDirectoryName(_ProjectPath); + tmp_path = tmp_path + "\\" + _path; + } + return tmp_path.Replace("\\\\", "\\"); + } + private string GetDebugPath() + { + if (_ProjectPath == "") { return ""; } + System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); + xml.Load(_ProjectPath); + var xmlnsm = new XmlNamespaceManager(xml.NameTable); + xmlnsm.AddNamespace("d", xml.DocumentElement.NamespaceURI); + var node = xml.SelectSingleNode(@"d:Project//d:PropertyGroup//d:OutputPath", xmlnsm); + if (node != null) + { + string path = node.InnerText; + path = GetPath(path); + return path; + } + return ""; + } + + private void BtnCopyCMD_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.CopyToClip("\"" + Application.ExecutablePath + "\" ver \"$(ProjectDir)\""); + if (_ProjectPath == "") { MessageBox.Show("当前项目无效,无法设置", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } + System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); + xml.Load(_ProjectPath); + var xmlnsm = new XmlNamespaceManager(xml.NameTable); + xmlnsm.AddNamespace("d", xml.DocumentElement.NamespaceURI); + var node = xml.SelectSingleNode(@"d:Project//d:PropertyGroup//d:PreBuildEvent", xmlnsm); + if (node != null) + { + if (node.InnerText == "") + { + node.InnerText = "\"" + Application.ExecutablePath + "\" ver \"$(ProjectDir)\""; + xml.Save(_ProjectPath); + } + else + { + MessageBox.Show("当前项目已经存在生成动作,为防止误删,请手工操作。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + } + else + { + XmlElement ww = xml.CreateElement("PropertyGroup", xml.DocumentElement.NamespaceURI); + XmlElement ww2 = xml.CreateElement("PreBuildEvent", xml.DocumentElement.NamespaceURI); + //ww.("xmlns"); + ww2.InnerText = "\"" + Application.ExecutablePath + "\" ver \"$(ProjectDir)\""; + xml.DocumentElement.AppendChild(ww); + ww.AppendChild(ww2); + xml.Save(_ProjectPath); + } + MessageBox.Show("写入成功。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + private void CloseApp() + { + Itrycn_Db.IsCloseConfirm = false; + this.DockPanel.FindForm().Close(); + } + private void BtnOpenOutput_Click(object sender, EventArgs e) + { + var debug_path = GetDebugPath(); + if (System.IO.Directory.Exists(debug_path)) + { + ryCommon.RyFiles.OpenFile(debug_path); + CloseApp(); + } + else + { + MessageBox.Show("打开输出目录失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + /// + /// 获取Notepad++路径 + /// + /// + private string GetNotepadPlusPath() + { + var path = ""; + try + { + RegistryKey LMach = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); + RegistryKey softwareRun = LMach.OpenSubKey(@"SOFTWARE\Notepad++", true); + if (softwareRun.GetValue("") != null) + { + string notepad_plus_path = softwareRun.GetValue("").ToString() + "\\notepad++.exe"; + if (System.IO.File.Exists(notepad_plus_path)) + { + path = notepad_plus_path; + } + } + softwareRun.Close(); + LMach.Close(); + } + catch + { + } + return path; + } + + private void BtnMessageBox_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.CopyToClip("MessageBox.Show(\"这是一个测试\",\"提示\",MessageBoxButtons.OK,MessageBoxIcon.Information);"); + CloseApp(); + } + + private void BtnCustomMessageBox_Click(object sender, EventArgs e) + { + FrmMessageBox frm = new FrmMessageBox + { + Icon = Icon + }; + if (frm.ShowDialog() == DialogResult.OK) + { + CloseApp(); + } + } + + private void FrmProject_Load(object sender, EventArgs e) + { + + } + + private void table1_DoubleClick(object sender, EventArgs e) + { + if (table1.SelectedItems.Length == 0) { return; } + var path = table1.SelectedItems[0].Tag.ToString(); + if (System.IO.Directory.Exists(path)) + { + ryCommon.RyFiles.OpenFile(path); + } + else if (System.IO.File.Exists(path)) + { + if (System.IO.Path.GetExtension(path).ToLower() == ".txt") + { + string notepad_plus_path = GetNotepadPlusPath(); + if (System.IO.File.Exists(notepad_plus_path)) + { + ryCommon.RyFiles.RunFile(notepad_plus_path, "\"" + path + "\""); + } + else + { + ryCommon.RyFiles.OpenFile(path); + } + } + else if (System.IO.Path.GetExtension(path).ToLower() == ".md") + { + ryCommon.RyFiles.OpenFile(path); + } + else + { + ryCommon.RyFiles.OpenFolderGotoFile(path); + } + } + } + + + private void BtnClean_Click(object sender, EventArgs e) + { + switch (MessageBox.Show("是否要进行清理不必要的文件,例如*.pdb", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information)) + { + case DialogResult.No: + return; + } + var debug_path = GetDebugPath(); + if (System.IO.Directory.Exists(debug_path)) + { + Itrycn_Db.DeleteFiles(debug_path, "*.pdb"); + Itrycn_Db.DeleteFiles(debug_path, "*.dcu"); + } + var folder = GetBFFolderPath(); + if(folder!="") + { + if(System.IO.Directory.Exists(folder + "\\Bin\\Release")) + { + Itrycn_Db.DeleteFiles(folder + "\\Bin\\Release", "*.pdb"); + Itrycn_Db.DeleteFiles(folder + "\\Bin\\Release", "*.dcu"); + } + } + MessageBox.Show("清理完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + /// + /// 等待进程执行完毕 + /// + /// + /// + public static string Read_Prog(string exe,string cmd_text) + { + String cmd = exe; + Process p = new Process + { + StartInfo = new System.Diagnostics.ProcessStartInfo + { + FileName = cmd,//设定程序名 + Arguments = cmd_text, + UseShellExecute = false, //关闭shell的使用 + RedirectStandardInput = true, //重定向标准输入 + RedirectStandardOutput = true, //重定向标准输出 + RedirectStandardError = false, //重定向错误输出 + CreateNoWindow = true//设置不显示窗口 + } + }; + p.Start(); + string result = p.StandardOutput.ReadToEnd(); + p.WaitForExit(20000); + p.Close(); + return result; + } + private void BtnBatchZip_Click(object sender, EventArgs e) + { + BtnBatchZip.Enabled = false; + Thread th = new Thread(Start); + th.Start(); + void Start() + { + var com_mode = "Debug"; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + var ds = db.ReadData("select * from Settings where name='Setting'"); + if (mydb.HaveData(ds)) + { + var row = mydb.GetData(ds); + ryCommon.Storage mStor = new ryCommon.Storage(row["value"].ToString()); + mStor.SelectNodeBySet(); + var ReactorPath = mStor.GetAttrValue("ReactorPath"); + var WinRARPath = mStor.GetAttrValue("WinRARPath"); + if (WinRARPath == "") + { + if (System.IO.File.Exists(@"C:\Program Files\WinRAR\WinRAR.exe")) + { + WinRARPath = @"C:\Program Files\WinRAR\WinRAR.exe"; + } + } + var bf_folder = GetBFFolderPath(); + if (bf_folder != "") + { + ryCommon.Ini ini = new Ini(bf_folder+ "\\查看项目.ryp"); + var eng_name = ini.ReadIni("project", "engname"); + var proglang= ini.ReadIni("project", "proglang"); + var ouput_folder = bf_folder + "\\Bin\\" + com_mode + "\\" + eng_name; + var file_ver = ""; + if (System.IO.File.Exists(ouput_folder + "\\" + eng_name + ".exe")) + { + FileVersionInfo fileVerInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(ouput_folder + "\\" + eng_name + ".exe"); + file_ver = fileVerInfo.ProductVersion; + } + if (proglang == "c#") + { + ShowState("正在进行混淆..."); + if (System.IO.File.Exists(bf_folder + "\\Bin\\混淆_" + com_mode + ".nrproj")) + { + var cmd = Read_Prog(ReactorPath, "-project \"" + bf_folder + "\\Bin\\混淆_" + com_mode + ".nrproj\""); + MessageBox.Show(cmd, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + ShowState("正在清理不重要的缓存..."); + ryCommon.RyFiles.DeleteFile(ouput_folder + "\\Secure\\*.pdb"); + ShowState("复制混淆文件到底包目录..."); + ryCommon.RyFiles.CopyFile(ouput_folder + "\\Secure\\*", bf_folder + "\\Publish\\OriginalFiles\\"); + #region 复制自定义规则文件到底包目录 + ShowState("复制自定义规则文件到底包目录..."); + var Publish = ryCommon.RyFiles.ReadAllLines(bf_folder + "\\Publish\\Publish.set"); + for (int m = 0; m < Publish.Length; m++) + { + var line = Publish[m].Trim(); + if (line == "" || line.IndexOf("#") == 0) { continue; } + if (line.IndexOfEx("del:") == 0) + { + ryCommon.RyFiles.DeleteFile(bf_folder + "\\Publish\\OriginalFiles\\" + line.Substring(4)); + } + else if (line.IndexOfEx("copy:") == 0) + { + var from_to = line.Substring(5).Replace("->", "|").Split('|'); + if (from_to.Length == 2) + { + var from_path = from_to[0]; + var to_path = from_to[1]; + ryCommon.RyFiles.CopyFile(ouput_folder + "\\"+ from_path, bf_folder + "\\Publish\\OriginalFiles\\" + to_path); + } + } + } + #endregion + ShowState("正在打包..."); + var cmd2 = Read_Prog(WinRARPath, "-r -ep1 a \""+ bf_folder + "\\Publish\\Green\\"+ eng_name + ".zip\" \""+ bf_folder + "\\Publish\\OriginalFiles\\\""); + RyFiles.CopyFile(bf_folder + "\\Publish\\Green\\" + eng_name + ".zip", bf_folder + "\\Publish\\Green\\HistoryVer\\" + eng_name + "_"+file_ver+".zip"); + ShowState("打包完成..."); + } + } + } + db.Free(); + void ShowState(string text) + { + this.Invoke(new Action(() => + { + LblState.Text = "状态:" + text; + })); + } + this.Invoke(new Action(() => + { + BtnBatchZip.Enabled = true; + })); + } + } + private void GetVersBySln(string path) + { + var _bf_path = GetBFFolderPath(); + RyProject project = new RyProject(); + string update_logs_text = ""; + if (System.IO.File.Exists(path)) + { + ryCommon.Ini ini = new Ini(_bf_path + "\\查看项目.ryp"); + var sln_text = ryCommon.RyFiles.ReadAllLines(path); + for (int i = 0; i < sln_text.Length; i++) + { + if(sln_text[i].StartsWith("Project")) + { + var item = sln_text[i].Replace(" = ",",").Split(','); + if (item.Length>=3) + { + var project_name = item[1].Trim().Trim('"'); + var project_path =System.IO.Path.GetDirectoryName(path).TrimEnd('\\')+"\\"+item[2].Trim().Trim('"'); + var ver = project.GetAssemblyVersion(project_path); + if (ver != "") + { + if(ini.ReadIni("NoVerMD", project_name,0) == 1) { continue; } + if (update_logs_text != "") { update_logs_text += "\r\n"; } + update_logs_text +="#### "+ project_name + " V" + ver+ "\r\n暂无\r\n"; + } + } + } + } + } + if (update_logs_text != "") + { + if (_bf_path != "") + { + var update_text = ryCommon.RyFiles.ReadAllText(_bf_path + "\\CHANGELOG.md"); + RyFiles.WriteAllText(_bf_path+ "\\CHANGELOG.md", "### " + DateTime.Now.ToString("yyyy-MM-dd") + "更新\r\n------\r\n"+ update_logs_text + update_text, Encoding.UTF8); + RyFiles.OpenFile(_bf_path + "\\CHANGELOG.md"); + } + } + } + private void BtnInsertUpdate_Click(object sender, EventArgs e) + { + var _path = GetBFFolderPath(); + if (_path != "") + { + var files = System.IO.Directory.GetFiles(_path+"\\Source"); + for (int i = 0; i < files.Length; i++) + { + var ext = System.IO.Path.GetExtension(files[i]).ToLower(); + if(ext==".sln") + { + GetVersBySln(files[i]); + return; + } + } + var dirs = System.IO.Directory.GetDirectories(_path + "\\Source"); + for (int i = 0; i < dirs.Length; i++) + { + var files2 = System.IO.Directory.GetFiles(dirs[i]); + for (int m = 0; m < files2.Length; m++) + { + var ext = System.IO.Path.GetExtension(files2[m]).ToLower(); + if (ext == ".sln") + { + GetVersBySln(files2[m]); + return; + } + } + } + //var sln_path = _path + "\\更新日志.md"; + } + } + + private void BtnUpdateDll_Click(object sender, EventArgs e) + { + BtnUpdateDll.Enabled = false; + var debug_path = GetDebugPath(); + int error = 0; + var _error_str = ""; + if (System.IO.Directory.Exists(debug_path)) + { + RyProject project = new RyProject + { + CopyDllToBin = true, + ChangedOutputPath = false + }; + var bf_folder = GetBFFolderPath(); + if(bf_folder!="") + { + error+= project.UpdateCSproj(bf_folder+"\\Source"); + } + else + { + project.SetCSproj(_ProjectPath, ""); + } + error +=project.UpdateDlls(debug_path,out _error_str); + } + BtnUpdateDll.Enabled = true; + if (error == 0) + { + MessageBox.Show("更新dll完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("更新dll完成,共失败"+error+"项。\r\n\r\n"+ _error_str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + + private void BtnUpdateVer_Click(object sender, EventArgs e) + { + var folder = System.IO.Path.GetDirectoryName(_ProjectPath); + Manager.RyProject.UpdateVer(folder + "\\Properties\\AssemblyInfo.cs"); + CloseApp(); + } + + private void BtnUpdateDllVer_Click(object sender, EventArgs e) + { + BtnUpdateDllVer.Enabled = false; + int error = 0; + RyProject project = new RyProject + { + CopyDllToBin = true, + ChangedOutputPath = false + }; + var bf_folder = GetBFFolderPath(); + var _error_str = ""; + if (bf_folder != "") + { + error += project.UpdateDlls(bf_folder + "\\Bin",out _error_str); + } + BtnUpdateDllVer.Enabled = true; + if (error == 0) + { + MessageBox.Show("更新dll完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("更新dll完成,共失败" + error + "项。\r\n\r\n"+ _error_str, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmProject.resx b/Source/开发辅助工具/Tools/FrmProject.resx new file mode 100644 index 0000000..48a07bf --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmProject.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 158, 17 + + + 285, 17 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmProjectSearch.Designer.cs b/Source/开发辅助工具/Tools/FrmProjectSearch.Designer.cs new file mode 100644 index 0000000..bf82ece --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmProjectSearch.Designer.cs @@ -0,0 +1,153 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmProjectSearch + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.BtnBrowser = new ryControls.ButtonEx(); + this.label1 = new System.Windows.Forms.Label(); + this.TxtFolder = new ryControls.TextBoxEx2(); + this.LblState = new System.Windows.Forms.Label(); + this.ChkDealWithVer = new System.Windows.Forms.CheckBox(); + this.CbbAutoVer = new ryControls.RyComboBox(); + this.BtnScan = new ryControls.ButtonEx(); + this.SuspendLayout(); + // + // BtnBrowser + // + this.BtnBrowser.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnBrowser.Location = new System.Drawing.Point(593, 25); + this.BtnBrowser.Name = "BtnBrowser"; + this.BtnBrowser.Size = new System.Drawing.Size(75, 33); + this.BtnBrowser.TabIndex = 5; + this.BtnBrowser.Text = "选择"; + this.BtnBrowser.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(10, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 4; + this.label1.Text = "选择文件夹"; + // + // TxtFolder + // + this.TxtFolder.BackColor = System.Drawing.Color.White; + this.TxtFolder.EmptyText = ""; + this.TxtFolder.Location = new System.Drawing.Point(12, 25); + this.TxtFolder.MaxLength = 999999999; + this.TxtFolder.Multiline = false; + this.TxtFolder.Name = "TxtFolder"; + this.TxtFolder.OnlyNumeric = false; + this.TxtFolder.PasswordChar = '\0'; + this.TxtFolder.ReadOnly = false; + this.TxtFolder.SelectedText = ""; + this.TxtFolder.SelectionLength = 0; + this.TxtFolder.SelectionStart = 0; + this.TxtFolder.Size = new System.Drawing.Size(575, 33); + this.TxtFolder.TabIndex = 3; + this.TxtFolder.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtFolder.ToolTip = ""; + this.TxtFolder.WordWrap = true; + // + // LblState + // + this.LblState.AutoSize = true; + this.LblState.Location = new System.Drawing.Point(12, 139); + this.LblState.Name = "LblState"; + this.LblState.Size = new System.Drawing.Size(83, 12); + this.LblState.TabIndex = 25; + this.LblState.Text = "状态:准备就绪"; + // + // ChkDealWithVer + // + this.ChkDealWithVer.AutoSize = true; + this.ChkDealWithVer.Location = new System.Drawing.Point(12, 67); + this.ChkDealWithVer.Name = "ChkDealWithVer"; + this.ChkDealWithVer.Size = new System.Drawing.Size(96, 16); + this.ChkDealWithVer.TabIndex = 26; + this.ChkDealWithVer.Text = "处理版本信息"; + this.ChkDealWithVer.UseVisualStyleBackColor = true; + // + // CbbAutoVer + // + this.CbbAutoVer.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbAutoVer.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbAutoVer.FormattingEnabled = true; + this.CbbAutoVer.Items.AddRange(new object[] { + "不自动更新版本号", + "自动更新版本号"}); + this.CbbAutoVer.Location = new System.Drawing.Point(114, 64); + this.CbbAutoVer.Name = "CbbAutoVer"; + this.CbbAutoVer.Size = new System.Drawing.Size(136, 22); + this.CbbAutoVer.TabIndex = 27; + // + // BtnScan + // + this.BtnScan.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnScan.Location = new System.Drawing.Point(674, 25); + this.BtnScan.Name = "BtnScan"; + this.BtnScan.Size = new System.Drawing.Size(75, 33); + this.BtnScan.TabIndex = 28; + this.BtnScan.Text = "扫描"; + this.BtnScan.UseVisualStyleBackColor = true; + this.BtnScan.Click += new System.EventHandler(this.BtnScan_Click); + // + // FrmProjectSearch + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(771, 438); + this.Controls.Add(this.BtnScan); + this.Controls.Add(this.CbbAutoVer); + this.Controls.Add(this.ChkDealWithVer); + this.Controls.Add(this.LblState); + this.Controls.Add(this.BtnBrowser); + this.Controls.Add(this.label1); + this.Controls.Add(this.TxtFolder); + this.Name = "FrmProjectSearch"; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "项目自动更新设置"; + this.Load += new System.EventHandler(this.FrmProjectSearch_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private ryControls.ButtonEx BtnBrowser; + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 TxtFolder; + private System.Windows.Forms.Label LblState; + private System.Windows.Forms.CheckBox ChkDealWithVer; + private ryControls.RyComboBox CbbAutoVer; + private ryControls.ButtonEx BtnScan; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmProjectSearch.cs b/Source/开发辅助工具/Tools/FrmProjectSearch.cs new file mode 100644 index 0000000..b5e849d --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmProjectSearch.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace 开发辅助工具.Tools +{ + public partial class FrmProjectSearch : Form + { + public FrmProjectSearch() + { + InitializeComponent(); + CbbAutoVer.SelectedIndex = 0; + } + + private void FrmProjectSearch_Load(object sender, EventArgs e) + { + ryCommon.RyFiles.AddDropDrag(TxtFolder.Handle).ElevatedDragDrop += FrmCreateProject_ElevatedDragDrop; + } + private void FrmCreateProject_ElevatedDragDrop(object sender, ElevatedDragDropArgs e) + { + TxtFolder.Text = e.Files[0]; + } + /// + /// 是否处理版本信息 + /// + bool DealWithVer_ON = false; + /// + /// 处理版本信息的方式 + /// + int AutoVer = 0; + private void AutoScan(string folder) + { + Manager.RyProject project = new Manager.RyProject(); + project.ChangedOutputPath = false; + project.CopyDllToBin = false; + project.UpdateCSproj(folder); + this.Invoke(new Action(() => + { + MessageBox.Show("更新完成。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + })); + } + + private void BtnScan_Click(object sender, EventArgs e) + { + DealWithVer_ON = ChkDealWithVer.Checked; + AutoVer = CbbAutoVer.SelectedIndex = 0; + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmProjectSearch.resx b/Source/开发辅助工具/Tools/FrmProjectSearch.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmProjectSearch.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmQrCode.Designer.cs b/Source/开发辅助工具/Tools/FrmQrCode.Designer.cs new file mode 100644 index 0000000..77f842e --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmQrCode.Designer.cs @@ -0,0 +1,279 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmQrCode + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmQrCode)); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.BtnCreate = new ryControls.ButtonEx(); + this.TxtFromStr = new ryControls.TextBoxEx2(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.BtnCapture = new ryControls.ButtonEx(); + this.BtnAnaly = new ryControls.ButtonEx(); + this.TxtToResult = new ryControls.TextBoxEx2(); + this.pictureBox2 = new System.Windows.Forms.PictureBox(); + this.BtnBrowser = new ryControls.ButtonEx(); + this.TxtQrCodePath = new ryControls.TextBoxEx2(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); + this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.tabPage2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit(); + this.SuspendLayout(); + // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Location = new System.Drawing.Point(3, 1); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(906, 502); + this.tabControl1.TabIndex = 0; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.pictureBox1); + this.tabPage1.Controls.Add(this.BtnCreate); + this.tabPage1.Controls.Add(this.TxtFromStr); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(898, 476); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "二维码生成"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // pictureBox1 + // + this.pictureBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox1.Location = new System.Drawing.Point(7, 158); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(882, 312); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 2; + this.pictureBox1.TabStop = false; + this.pictureBox1.Click += new System.EventHandler(this.PictureBox1_Click); + // + // BtnCreate + // + this.BtnCreate.ForeColor = System.Drawing.Color.White; + this.BtnCreate.Location = new System.Drawing.Point(7, 6); + this.BtnCreate.Name = "BtnCreate"; + this.BtnCreate.Size = new System.Drawing.Size(67, 23); + this.BtnCreate.TabIndex = 1; + this.BtnCreate.Text = "生成"; + this.BtnCreate.UseVisualStyleBackColor = true; + this.BtnCreate.Click += new System.EventHandler(this.BtnCreate_Click); + // + // TxtFromStr + // + this.TxtFromStr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtFromStr.BackColor = System.Drawing.Color.White; + this.TxtFromStr.EmptyText = ""; + this.TxtFromStr.Location = new System.Drawing.Point(7, 35); + this.TxtFromStr.MaxLength = 999999999; + this.TxtFromStr.Multiline = true; + this.TxtFromStr.Name = "TxtFromStr"; + this.TxtFromStr.OnlyNumeric = false; + this.TxtFromStr.PasswordChar = '\0'; + this.TxtFromStr.ReadOnly = false; + this.TxtFromStr.SelectedText = ""; + this.TxtFromStr.SelectionLength = 0; + this.TxtFromStr.SelectionStart = 0; + this.TxtFromStr.Size = new System.Drawing.Size(882, 117); + this.TxtFromStr.TabIndex = 0; + this.TxtFromStr.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtFromStr.ToolTip = ""; + this.TxtFromStr.DoubleClick += new System.EventHandler(this.TxtFromStr_DoubleClick); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.BtnCapture); + this.tabPage2.Controls.Add(this.BtnAnaly); + this.tabPage2.Controls.Add(this.TxtToResult); + this.tabPage2.Controls.Add(this.pictureBox2); + this.tabPage2.Controls.Add(this.BtnBrowser); + this.tabPage2.Controls.Add(this.TxtQrCodePath); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(898, 476); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "二维码解析"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // BtnCapture + // + this.BtnCapture.ForeColor = System.Drawing.Color.White; + this.BtnCapture.Location = new System.Drawing.Point(622, 6); + this.BtnCapture.Name = "BtnCapture"; + this.BtnCapture.Size = new System.Drawing.Size(71, 30); + this.BtnCapture.TabIndex = 6; + this.BtnCapture.Text = "截图"; + this.BtnCapture.UseVisualStyleBackColor = true; + this.BtnCapture.Click += new System.EventHandler(this.BtnCapture_Click); + // + // BtnAnaly + // + this.BtnAnaly.ForeColor = System.Drawing.Color.White; + this.BtnAnaly.Location = new System.Drawing.Point(699, 6); + this.BtnAnaly.Name = "BtnAnaly"; + this.BtnAnaly.Size = new System.Drawing.Size(71, 30); + this.BtnAnaly.TabIndex = 5; + this.BtnAnaly.Text = "解析"; + this.BtnAnaly.UseVisualStyleBackColor = true; + this.BtnAnaly.Click += new System.EventHandler(this.BtnAnaly_Click); + // + // TxtToResult + // + this.TxtToResult.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtToResult.BackColor = System.Drawing.Color.White; + this.TxtToResult.EmptyText = "解析出来的内容"; + this.TxtToResult.Location = new System.Drawing.Point(6, 42); + this.TxtToResult.MaxLength = 999999999; + this.TxtToResult.Multiline = true; + this.TxtToResult.Name = "TxtToResult"; + this.TxtToResult.OnlyNumeric = false; + this.TxtToResult.PasswordChar = '\0'; + this.TxtToResult.ReadOnly = false; + this.TxtToResult.SelectedText = ""; + this.TxtToResult.SelectionLength = 0; + this.TxtToResult.SelectionStart = 0; + this.TxtToResult.Size = new System.Drawing.Size(882, 117); + this.TxtToResult.TabIndex = 4; + this.TxtToResult.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtToResult.ToolTip = ""; + // + // pictureBox2 + // + this.pictureBox2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.pictureBox2.Location = new System.Drawing.Point(8, 165); + this.pictureBox2.Name = "pictureBox2"; + this.pictureBox2.Size = new System.Drawing.Size(882, 305); + this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox2.TabIndex = 3; + this.pictureBox2.TabStop = false; + // + // BtnBrowser + // + this.BtnBrowser.ForeColor = System.Drawing.Color.White; + this.BtnBrowser.Location = new System.Drawing.Point(541, 6); + this.BtnBrowser.Name = "BtnBrowser"; + this.BtnBrowser.Size = new System.Drawing.Size(75, 30); + this.BtnBrowser.TabIndex = 1; + this.BtnBrowser.Text = "浏览"; + this.BtnBrowser.UseVisualStyleBackColor = true; + this.BtnBrowser.Click += new System.EventHandler(this.BtnBrowser_Click); + // + // TxtQrCodePath + // + this.TxtQrCodePath.BackColor = System.Drawing.Color.White; + this.TxtQrCodePath.EmptyText = "二维码图片路径"; + this.TxtQrCodePath.Location = new System.Drawing.Point(6, 6); + this.TxtQrCodePath.MaxLength = 999999999; + this.TxtQrCodePath.Multiline = false; + this.TxtQrCodePath.Name = "TxtQrCodePath"; + this.TxtQrCodePath.OnlyNumeric = false; + this.TxtQrCodePath.PasswordChar = '\0'; + this.TxtQrCodePath.ReadOnly = false; + this.TxtQrCodePath.SelectedText = ""; + this.TxtQrCodePath.SelectionLength = 0; + this.TxtQrCodePath.SelectionStart = 0; + this.TxtQrCodePath.Size = new System.Drawing.Size(529, 30); + this.TxtQrCodePath.TabIndex = 0; + this.TxtQrCodePath.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtQrCodePath.ToolTip = ""; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // openFileDialog1 + // + this.openFileDialog1.Filter = "图片文件|*.jpg;*.bmp;*.png;*.jpeg;"; + // + // saveFileDialog1 + // + this.saveFileDialog1.Filter = "图片文件|*.jpg;*.bmp;*.png;*.jpeg;|BMP图片|*.bmp|JPG图片|*.jpg;*.jpeg|PNG图片|*.png"; + // + // FrmQrCode + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(907, 509); + this.Controls.Add(this.tabControl1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmQrCode"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "二维码生成和读取"; + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.tabPage2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private ryControls.ButtonEx BtnCreate; + private ryControls.TextBoxEx2 TxtFromStr; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.PictureBox pictureBox1; + private ryPaiban.Model.MenuRight menuRight1; + private ryControls.ButtonEx BtnAnaly; + private ryControls.TextBoxEx2 TxtToResult; + private System.Windows.Forms.PictureBox pictureBox2; + private ryControls.ButtonEx BtnBrowser; + private ryControls.TextBoxEx2 TxtQrCodePath; + private System.Windows.Forms.OpenFileDialog openFileDialog1; + private ryControls.ButtonEx BtnCapture; + private System.Windows.Forms.SaveFileDialog saveFileDialog1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmQrCode.cs b/Source/开发辅助工具/Tools/FrmQrCode.cs new file mode 100644 index 0000000..229592c --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmQrCode.cs @@ -0,0 +1,164 @@ +using _SCREEN_CAPTURE; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using ZXing; + +namespace 开发辅助工具.Tools +{ + public partial class FrmQrCode : DockContent + { + public FrmQrCode() + { + InitializeComponent(); + } + /// + /// 生成二维码图片 + /// + /// 要生成二维码的字符串 + /// 二维码图片宽度 + /// 二维码图片高度 + /// + private Bitmap CreateQrCode(String strMessage, Int32 width, Int32 height) + { + Bitmap result = null; + try + { + BarcodeWriter barCodeWriter = new BarcodeWriter + { + Format = BarcodeFormat.QR_CODE + }; + barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); + barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H); + barCodeWriter.Options.Height = height; + barCodeWriter.Options.Width = width; + barCodeWriter.Options.Margin = 0; + ZXing.Common.BitMatrix bm = barCodeWriter.Encode(strMessage); + result = barCodeWriter.Write(bm); + Bitmap qr_bg = (Bitmap)ryCommon.RyFiles.LoadPicFromFile(Application.StartupPath + "\\mod\\qr_bg.jpg"); + Graphics g = Graphics.FromImage(qr_bg); + g.DrawImage(result, new Rectangle(25, 25, qr_bg.Width - 50, qr_bg.Height - 50)); + result = qr_bg; + } + catch (Exception) + { + //异常输出 + } + return result; + } + private void BtnCreate_Click(object sender, EventArgs e) + { + pictureBox1.Image= CreateQrCode(TxtFromStr.Text, 256, 256); + } + + private void BtnBrowser_Click(object sender, EventArgs e) + { + if(openFileDialog1.ShowDialog()==DialogResult.OK) + { + TxtQrCodePath.Text = openFileDialog1.FileName; + BtnAnaly.PerformClick(); + } + } + + private void BtnAnaly_Click(object sender, EventArgs e) + { + string path = TxtQrCodePath.Text; + if (!System.IO.File.Exists(path)) { Init(); return; } + var img = ryCommon.RyFiles.LoadPicFromFile(path); + if (img == null) { Init(); return; } + Bitmap bmap; + try + { + bmap = new Bitmap(img); + } + catch (System.IO.IOException ioe) + { + MessageBox.Show(ioe.ToString(),"提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + if (bmap == null) + { + MessageBox.Show("不能解码图片","提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + try + { + BarcodeReader reader = new BarcodeReader(); + reader.Options.CharacterSet = "UTF-8"; + var result = reader.Decode(bmap); + TxtToResult.Text = (result == null) ? "" : result.Text; + pictureBox2.Image = img; + } + catch (Exception) + { + Init(); + MessageBox.Show("解析二维码失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + void Init() + { + pictureBox2.Image = null; TxtToResult.Text = ""; + } + } + + private void PictureBox1_Click(object sender, EventArgs e) + { + if(saveFileDialog1.ShowDialog()==DialogResult.OK) + { + try + { + pictureBox1.Image.Save(saveFileDialog1.FileName); + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + } + } + + private void BtnCapture_Click(object sender, EventArgs e) + { + ScreenCapture capture = new _SCREEN_CAPTURE.ScreenCapture(); + Bitmap m = capture.StartCapture(false); + if (m != null) + { + try + { + BarcodeReader reader = new BarcodeReader(); + reader.Options.CharacterSet = "UTF-8"; + var result = reader.Decode(m); + TxtToResult.Text = (result == null) ? "" : result.Text; + pictureBox2.Image = m; + } + catch (Exception) + { + Init(); + MessageBox.Show("解析二维码失败。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + void Init() + { + pictureBox2.Image = null; TxtToResult.Text = ""; + } + } + } + + private void TxtFromStr_DoubleClick(object sender, EventArgs e) + { + ryControls.TextBoxEx2 txt = (ryControls.TextBoxEx2)sender; + 开发辅助工具.Controls.FrmText frm = new Controls.FrmText + { + Icon = Icon + }; + frm.richTextBox1.Text = txt.Text; + if (frm.ShowDialog() == DialogResult.OK) + { + txt.Text = frm.richTextBox1.Text; + } + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmQrCode.resx b/Source/开发辅助工具/Tools/FrmQrCode.resx new file mode 100644 index 0000000..07fc80b --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmQrCode.resx @@ -0,0 +1,206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAGEPAABhDwAAAAAAAAAA + AAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOUAAAAkAAAAAAAA + AAAAAAAbAAAA4gAAAOsAAAAkAAAAGwAAAOIAAADqAAAAIQAAABgAAADiAAAA6gAAACEAAAAZAAAA4gAA + AOkAAAAiAAAAAAAAAP8AAAD8AAAA4wAAAN4AAADeAAAA3gAAAN4AAADeAAAA3gAAAOIAAAD9AAAA5QAA + ACQAAAACAAAAHgAAADoAAADIAAAAywAAAB8AAAAXAAAAwwAAAM8AAAA+AAAAOAAAAMgAAADOAAAAPgAA + ADgAAADIAAAAzgAAAD8AAAAiAAAA/wAAAOgAAAA8AAAAGgAAABsAAAAaAAAAGgAAABsAAAAbAAAANwAA + AOQAAADnAAAAIgAAABkAAADMAAAA1QAAADgAAAAWAAAABAAAAAMAAAAVAAAAMwAAANAAAADVAAAANgAA + ADAAAADPAAAA1QAAADkAAAAyAAAAzgAAAOkAAAD/AAAA5QAAACIAAAAAAAAAHgAAACMAAAAjAAAAHwAA + AAEAAAAcAAAA4AAAAOcAAAAiAAAAGAAAAMYAAADPAAAAPgAAAB4AAAAFAAAABAAAAB0AAAA6AAAAygAA + AM8AAAA9AAAANwAAAMoAAADLAAAAHQAAABYAAADDAAAA4gAAAP8AAADlAAAAIgAAABkAAADJAAAA6AAA + AOcAAADOAAAAHwAAABsAAADhAAAA5wAAACQAAAABAAAAFgAAADMAAADPAAAA0wAAAB4AAAAWAAAAywAA + ANYAAAA6AAAAMwAAAM8AAADVAAAAOQAAABYAAAAEAAAAAwAAABcAAAAbAAAA/wAAAOUAAAAiAAAAHAAA + AOEAAAD/AAAA/wAAAOcAAAAjAAAAGwAAAOEAAADnAAAAJAAAAAIAAAAdAAAAOQAAAMkAAADQAAAAQAAA + ADgAAADKAAAAzAAAAB0AAAAWAAAAxAAAANAAAAA/AAAAHgAAAAUAAAAEAAAAHgAAACMAAAD/AAAA5QAA + ACIAAAAcAAAA4QAAAP8AAAD/AAAA5wAAACMAAAAbAAAA4QAAAOcAAAAiAAAAGQAAAMwAAADVAAAANgAA + ADIAAADRAAAA1QAAADgAAAAWAAAABAAAAAMAAAAWAAAAMwAAANAAAADSAAAAHgAAABYAAADKAAAA6gAA + AP8AAADlAAAAIgAAABgAAADDAAAA4AAAAOAAAADIAAAAHgAAABwAAADhAAAA5wAAACIAAAAYAAAAxQAA + AM8AAAA8AAAAOAAAAMsAAADOAAAAPgAAAB0AAAAFAAAABAAAAB0AAAA5AAAAygAAAM8AAAA+AAAAOAAA + AMgAAADiAAAA/wAAAOUAAAAhAAAAAAAAABcAAAAbAAAAGwAAABgAAAAAAAAAGwAAAOAAAADnAAAAJAAA + AAEAAAAWAAAAMgAAAM8AAADWAAAAOAAAADAAAADPAAAA0gAAAB4AAAAWAAAAywAAANUAAAA3AAAAMAAA + AM8AAADVAAAAOAAAABgAAAD/AAAA6QAAAEMAAAAjAAAAIwAAACMAAAAjAAAAIwAAACMAAAA+AAAA5QAA + AOcAAAAkAAAAAgAAAB0AAAA5AAAAygAAANEAAAA+AAAANwAAAMoAAADQAAAAQAAAADkAAADKAAAA0AAA + AD4AAAA4AAAAygAAANAAAAA+AAAAIQAAAP8AAAD/AAAA7AAAAOgAAADoAAAA6AAAAOgAAADoAAAA6AAA + AOsAAAD/AAAA5wAAACMAAAAZAAAAzQAAANUAAAA3AAAAMgAAANEAAADVAAAANwAAADIAAADQAAAA1gAA + ADkAAAAzAAAA0AAAANYAAAA4AAAAMQAAAM4AAADqAAAA3gAAAN4AAADgAAAA4AAAAOAAAADgAAAA4AAA + AOAAAADgAAAA4AAAAOAAAADIAAAAHgAAABgAAADFAAAAzwAAADwAAAA4AAAAywAAAM4AAAA8AAAANwAA + AMoAAADLAAAAHAAAABYAAADEAAAAzwAAADwAAAA2AAAAyAAAAOIAAAAdAAAAHQAAABsAAAAbAAAAHQAA + AB0AAAAdAAAAHQAAAB0AAAAdAAAAGwAAABgAAAAEAAAAAwAAABYAAAAyAAAAzgAAANYAAAA4AAAAMAAA + AM4AAADVAAAAOQAAABYAAAAEAAAAAwAAABYAAAAyAAAAzwAAANQAAAA4AAAAGAAAAAAAAAACAAAAHwAA + ACAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAfAAAAIAAAAAUAAAAEAAAAHgAAADoAAADLAAAA0QAA + AD8AAAA4AAAAywAAANEAAABAAAAAHgAAAAUAAAAEAAAAHgAAADoAAADLAAAA0AAAAD8AAAAiAAAAAAAA + ABgAAADMAAAA0wAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAGQAAAM0AAADTAAAAHQAAABcAAADNAAAA1gAA + ADoAAAA1AAAA0gAAANYAAAA4AAAAMgAAANEAAADSAAAAHQAAABYAAADMAAAA1wAAADgAAAAxAAAAzwAA + AOoAAAAiAAAAOgAAAMoAAADPAAAAQAAAAB8AAAAFAAAABAAAAB4AAAA7AAAAygAAAM8AAAA9AAAAOQAA + AMsAAADKAAAAHAAAABcAAADGAAAAzwAAADwAAAA3AAAAygAAAM8AAAA+AAAAOAAAAMoAAADPAAAAPAAA + ADYAAADIAAAA4gAAAOkAAADTAAAAOAAAADMAAADQAAAA0QAAAB8AAAAZAAAAywAAANUAAAA5AAAAMgAA + AM8AAADVAAAAOQAAABYAAAAEAAAAAwAAABgAAAA0AAAAzwAAANUAAAA5AAAAMgAAAM8AAADVAAAAOQAA + ADMAAADPAAAA1QAAADoAAAAbAAAA4wAAAMoAAAAcAAAAFwAAAMYAAADMAAAAHgAAABgAAADGAAAAzAAA + AB0AAAAWAAAAxQAAANEAAAA/AAAAHgAAAAUAAAAAAAAAAAAAABgAAADFAAAAzQAAAB0AAAAWAAAAxQAA + AMwAAAAdAAAAFgAAAMYAAADMAAAAHgAAAAAAAAAcAAAAGQAAAAIAAAABAAAAGAAAABkAAAACAAAAAQAA + ABgAAAAZAAAAAgAAAAEAAAAYAAAANgAAANEAAADSAAAAHwAAAAAAAAAAAAAAAwAAABgAAAAZAAAAAgAA + AAEAAAAYAAAAGQAAAAIAAAABAAAAGAAAABkAAAACAAAAAAAAACIAAAAiAAAAJAAAACQAAAAiAAAAIgAA + ACQAAAAkAAAAIgAAACIAAAAkAAAAIAAAAAIAAAAYAAAAxQAAAM8AAAA/AAAAHwAAAAUAAAAEAAAAHgAA + ACMAAAAkAAAAJAAAACIAAAAiAAAAJAAAACQAAAAiAAAAIgAAACQAAAAkAAAA5QAAAOUAAADnAAAA5wAA + AOcAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADOAAAAIAAAAAEAAAAWAAAAMgAAAM8AAADTAAAAIAAA + ABgAAADIAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5wAAAOcAAADnAAAA5QAAAOUAAAD/AAAA/QAA + AOUAAADgAAAA4QAAAOEAAADhAAAA4QAAAOAAAADkAAAA/gAAAOcAAAAkAAAAAgAAAB0AAAA5AAAAygAA + AM0AAAAfAAAAGwAAAOAAAAD/AAAA5QAAAOAAAADhAAAA4QAAAOEAAADhAAAA4AAAAOQAAAD9AAAA/wAA + AP8AAADoAAAAPQAAABsAAAAbAAAAGwAAABsAAAAbAAAAHAAAADgAAADkAAAA5wAAACIAAAAZAAAAzAAA + ANUAAAA4AAAAFwAAAAIAAAAdAAAA4AAAAOsAAAA+AAAAGwAAABwAAAAbAAAAGwAAABsAAAAcAAAANwAA + AOIAAAD/AAAA/wAAAOUAAAAiAAAAAAAAAB4AAAAjAAAAIwAAAB8AAAABAAAAHAAAAOAAAADnAAAAIgAA + ABgAAADGAAAAzwAAAD4AAAAdAAAAAwAAAB0AAADgAAAA6AAAACMAAAAAAAAAHgAAACMAAAAjAAAAHwAA + AAEAAAAbAAAA3gAAAP8AAAD/AAAA5QAAACIAAAAZAAAAyQAAAOcAAADnAAAAzgAAAB8AAAAbAAAA4QAA + AOcAAAAkAAAAAQAAABYAAAAzAAAAzwAAANMAAAAgAAAAGwAAAOAAAADoAAAAIwAAABgAAADIAAAA5wAA + AOcAAADOAAAAHwAAABsAAADeAAAA/wAAAP8AAADlAAAAIgAAABwAAADhAAAA/wAAAP8AAADnAAAAIwAA + ABsAAADhAAAA5wAAACQAAAACAAAAHAAAADgAAADKAAAAzAAAAB8AAAAbAAAA4AAAAOgAAAAjAAAAGwAA + AOAAAAD/AAAA/wAAAOcAAAAjAAAAGgAAAN4AAAD/AAAA/wAAAOUAAAAiAAAAHAAAAOEAAAD/AAAA/wAA + AOcAAAAjAAAAGwAAAOEAAADnAAAAIgAAABkAAADMAAAA1AAAADgAAAAWAAAAAgAAAB0AAADgAAAA6AAA + ACMAAAAbAAAA4AAAAP8AAAD/AAAA6AAAACMAAAAaAAAA3gAAAP8AAAD/AAAA5QAAACIAAAAYAAAAxAAA + AOEAAADhAAAAyQAAAB4AAAAbAAAA4QAAAOcAAAAiAAAAGAAAAMYAAADQAAAAPgAAAB4AAAADAAAAHQAA + AOAAAADoAAAAIwAAABcAAADDAAAA4QAAAOEAAADJAAAAHgAAABsAAADeAAAA/wAAAP8AAADlAAAAIQAA + AAAAAAAYAAAAHAAAABwAAAAZAAAAAAAAABsAAADgAAAA5wAAACQAAAABAAAAFwAAADMAAADPAAAA0wAA + ACAAAAAbAAAA4AAAAOgAAAAjAAAAAAAAABgAAAAcAAAAHAAAABkAAAAAAAAAGgAAAN4AAAD/AAAA/wAA + AOkAAABCAAAAIQAAACIAAAAiAAAAIgAAACIAAAAiAAAAPQAAAOUAAADnAAAAJAAAAAIAAAAcAAAAOAAA + AMoAAADMAAAAHwAAABsAAADgAAAA7AAAAEMAAAAhAAAAIgAAACIAAAAiAAAAIgAAACIAAAA8AAAA4wAA + AP8AAAD/AAAA/AAAAOkAAADlAAAA5QAAAOUAAADlAAAA5QAAAOUAAADoAAAA/QAAAOUAAAAiAAAAGQAA + AMoAAADTAAAAOgAAABgAAAACAAAAHQAAAN4AAAD/AAAA6QAAAOUAAADlAAAA5QAAAOUAAADlAAAA5QAA + AOgAAAD8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA5QAA + ACIAAAAcAAAA4wAAAOkAAAAiAAAAAAAAAAAAAAAdAAAA3gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA + AP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + + 141, 17 + + + 289, 17 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmRegex.Designer.cs b/Source/开发辅助工具/Tools/FrmRegex.Designer.cs new file mode 100644 index 0000000..046d14d --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmRegex.Designer.cs @@ -0,0 +1,290 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmRegex + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmRegex)); + this.tabControl3 = new System.Windows.Forms.TabControl(); + this.TabTxtResult = new System.Windows.Forms.TabPage(); + this.RichRegexOutput = new System.Windows.Forms.RichTextBox(); + this.contextMenuStripRichText1 = new ryProcessManager.hezuo.ContextMenuStripRichText(); + this.tabPage10 = new System.Windows.Forms.TabPage(); + this.table1 = new XPTable.Models.Table(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.textColumn1 = new XPTable.Models.TextColumn(); + this.textColumn2 = new XPTable.Models.TextColumn(); + this.textColumn3 = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.tabPage11 = new System.Windows.Forms.TabPage(); + this.LnkRegexHelp = new System.Windows.Forms.LinkLabel(); + this.ChkIgnoreCase = new System.Windows.Forms.CheckBox(); + this.ChkMultiline = new System.Windows.Forms.CheckBox(); + this.RySearchRegex = new ryControls.rySearch(); + this.label12 = new System.Windows.Forms.Label(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.TxtRegexInput = new ryControls.Controls.RichTextBox2(); + this.tabControl3.SuspendLayout(); + this.TabTxtResult.SuspendLayout(); + this.tabPage10.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.tabPage11.SuspendLayout(); + this.SuspendLayout(); + // + // tabControl3 + // + this.tabControl3.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl3.Controls.Add(this.TabTxtResult); + this.tabControl3.Controls.Add(this.tabPage10); + this.tabControl3.Controls.Add(this.tabPage11); + this.tabControl3.Location = new System.Drawing.Point(12, 201); + this.tabControl3.Name = "tabControl3"; + this.tabControl3.SelectedIndex = 0; + this.tabControl3.Size = new System.Drawing.Size(825, 294); + this.tabControl3.TabIndex = 13; + // + // TabTxtResult + // + this.TabTxtResult.Controls.Add(this.RichRegexOutput); + this.TabTxtResult.Location = new System.Drawing.Point(4, 22); + this.TabTxtResult.Name = "TabTxtResult"; + this.TabTxtResult.Padding = new System.Windows.Forms.Padding(3); + this.TabTxtResult.Size = new System.Drawing.Size(817, 268); + this.TabTxtResult.TabIndex = 0; + this.TabTxtResult.Text = "普通结果"; + this.TabTxtResult.UseVisualStyleBackColor = true; + // + // RichRegexOutput + // + this.RichRegexOutput.BackColor = System.Drawing.Color.White; + this.RichRegexOutput.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.RichRegexOutput.ContextMenuStrip = this.contextMenuStripRichText1; + this.RichRegexOutput.Dock = System.Windows.Forms.DockStyle.Fill; + this.RichRegexOutput.Location = new System.Drawing.Point(3, 3); + this.RichRegexOutput.Name = "RichRegexOutput"; + this.RichRegexOutput.ReadOnly = true; + this.RichRegexOutput.Size = new System.Drawing.Size(811, 262); + this.RichRegexOutput.TabIndex = 4; + this.RichRegexOutput.Text = ""; + this.RichRegexOutput.WordWrap = false; + // + // contextMenuStripRichText1 + // + this.contextMenuStripRichText1.Name = "contextMenuStripRichText1"; + this.contextMenuStripRichText1.Size = new System.Drawing.Size(101, 164); + // + // tabPage10 + // + this.tabPage10.Controls.Add(this.table1); + this.tabPage10.Location = new System.Drawing.Point(4, 22); + this.tabPage10.Name = "tabPage10"; + this.tabPage10.Padding = new System.Windows.Forms.Padding(3); + this.tabPage10.Size = new System.Drawing.Size(817, 268); + this.tabPage10.TabIndex = 1; + this.tabPage10.Text = "列表展示"; + this.tabPage10.UseVisualStyleBackColor = true; + // + // table1 + // + this.table1.ColumnModel = this.columnModel1; + this.table1.Dock = System.Windows.Forms.DockStyle.Fill; + this.table1.FullRowSelect = true; + this.table1.Location = new System.Drawing.Point(3, 3); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(811, 262); + this.table1.TabIndex = 0; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.textColumn1, + this.textColumn2, + this.textColumn3}); + // + // textColumn1 + // + this.textColumn1.Editable = false; + this.textColumn1.Tag = null; + this.textColumn1.Text = "匹配的内容"; + this.textColumn1.Width = 550; + // + // textColumn2 + // + this.textColumn2.Editable = false; + this.textColumn2.Tag = null; + this.textColumn2.Text = "位置"; + // + // textColumn3 + // + this.textColumn3.Editable = false; + this.textColumn3.Tag = null; + this.textColumn3.Text = "分组"; + this.textColumn3.Width = 150; + // + // tabPage11 + // + this.tabPage11.Controls.Add(this.LnkRegexHelp); + this.tabPage11.Location = new System.Drawing.Point(4, 22); + this.tabPage11.Name = "tabPage11"; + this.tabPage11.Padding = new System.Windows.Forms.Padding(3); + this.tabPage11.Size = new System.Drawing.Size(817, 268); + this.tabPage11.TabIndex = 2; + this.tabPage11.Text = "正则帮助"; + this.tabPage11.UseVisualStyleBackColor = true; + // + // LnkRegexHelp + // + this.LnkRegexHelp.AutoSize = true; + this.LnkRegexHelp.Location = new System.Drawing.Point(13, 10); + this.LnkRegexHelp.Name = "LnkRegexHelp"; + this.LnkRegexHelp.Size = new System.Drawing.Size(53, 12); + this.LnkRegexHelp.TabIndex = 0; + this.LnkRegexHelp.TabStop = true; + this.LnkRegexHelp.Text = "访问帮助"; + this.LnkRegexHelp.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.LnkRegexHelp_LinkClicked); + // + // ChkIgnoreCase + // + this.ChkIgnoreCase.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.ChkIgnoreCase.AutoSize = true; + this.ChkIgnoreCase.Location = new System.Drawing.Point(616, 12); + this.ChkIgnoreCase.Name = "ChkIgnoreCase"; + this.ChkIgnoreCase.Size = new System.Drawing.Size(84, 16); + this.ChkIgnoreCase.TabIndex = 17; + this.ChkIgnoreCase.Text = "忽略大小写"; + this.ChkIgnoreCase.UseVisualStyleBackColor = true; + // + // ChkMultiline + // + this.ChkMultiline.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.ChkMultiline.AutoSize = true; + this.ChkMultiline.Location = new System.Drawing.Point(538, 12); + this.ChkMultiline.Name = "ChkMultiline"; + this.ChkMultiline.Size = new System.Drawing.Size(72, 16); + this.ChkMultiline.TabIndex = 16; + this.ChkMultiline.Text = "多行模式"; + this.ChkMultiline.UseVisualStyleBackColor = true; + // + // RySearchRegex + // + this.RySearchRegex.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.RySearchRegex.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.RySearchRegex.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.RySearchRegex.EmptyText = ""; + this.RySearchRegex.Location = new System.Drawing.Point(81, 6); + this.RySearchRegex.Name = "RySearchRegex"; + this.RySearchRegex.Size = new System.Drawing.Size(451, 25); + this.RySearchRegex.TabIndex = 14; + this.RySearchRegex.OnSearch += new System.EventHandler(this.RySearchRegex_OnSearch); + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(10, 13); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(65, 12); + this.label12.TabIndex = 12; + this.label12.Text = "正则表达式"; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(185, 70); + this.menuRight1.SourceContent = this; + // + // TxtRegexInput + // + this.TxtRegexInput.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtRegexInput.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtRegexInput.DetectUrls = false; + this.TxtRegexInput.EmptyText = "在此输入待匹配文本"; + this.TxtRegexInput.ForeColor = System.Drawing.Color.Black; + this.TxtRegexInput.Location = new System.Drawing.Point(12, 37); + this.TxtRegexInput.Name = "TxtRegexInput"; + this.TxtRegexInput.OnlyInputText = true; + this.TxtRegexInput.Size = new System.Drawing.Size(825, 158); + this.TxtRegexInput.TabIndex = 18; + this.TxtRegexInput.Text = ""; + this.TxtRegexInput.DoubleClick += new System.EventHandler(this.TxtRegexInput_DoubleClick); + // + // FrmRegex + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(849, 499); + this.Controls.Add(this.TxtRegexInput); + this.Controls.Add(this.tabControl3); + this.Controls.Add(this.ChkIgnoreCase); + this.Controls.Add(this.ChkMultiline); + this.Controls.Add(this.RySearchRegex); + this.Controls.Add(this.label12); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmRegex"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "正则表达式"; + this.tabControl3.ResumeLayout(false); + this.TabTxtResult.ResumeLayout(false); + this.tabPage10.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.tabPage11.ResumeLayout(false); + this.tabPage11.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TabControl tabControl3; + private System.Windows.Forms.TabPage TabTxtResult; + private System.Windows.Forms.RichTextBox RichRegexOutput; + private System.Windows.Forms.TabPage tabPage10; + private XPTable.Models.Table table1; + private System.Windows.Forms.TabPage tabPage11; + private System.Windows.Forms.LinkLabel LnkRegexHelp; + private System.Windows.Forms.CheckBox ChkIgnoreCase; + private System.Windows.Forms.CheckBox ChkMultiline; + private ryControls.rySearch RySearchRegex; + private System.Windows.Forms.Label label12; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TableModel tableModel1; + private XPTable.Models.TextColumn textColumn1; + private XPTable.Models.TextColumn textColumn2; + private XPTable.Models.TextColumn textColumn3; + private ryProcessManager.hezuo.ContextMenuStripRichText contextMenuStripRichText1; + private ryPaiban.Model.MenuRight menuRight1; + private ryControls.Controls.RichTextBox2 TxtRegexInput; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmRegex.cs b/Source/开发辅助工具/Tools/FrmRegex.cs new file mode 100644 index 0000000..2f5d766 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmRegex.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmRegex : DockContent + { + public FrmRegex() + { + InitializeComponent(); + } + + private void RySearchRegex_OnSearch(object sender, EventArgs e) + { + if (RySearchRegex.Text.Trim() == "") + { + MessageBox.Show("正则表达式不能为空。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + RichRegexOutput.Text = ""; + table1.TableModel.Rows.Clear(); + tabPage10.Text = "列表展示(" + tableModel1.Rows.Count + ")"; + TabTxtResult.Text = "普通结果(正在读取)"; + bool IgnoreCase = ChkIgnoreCase.Checked; + bool Multiline = ChkMultiline.Checked; + string RegexText = RySearchRegex.Text; + string RegexInput = TxtRegexInput.Text; + table1.BeginUpdate(); + try + { + RegexOptions option = new RegexOptions(); + if (IgnoreCase) + { + option = RegexOptions.IgnoreCase; + } + if (Multiline) { option = option | RegexOptions.Multiline; } + Regex reg = new Regex(RegexText, option); + //返回一个结果集 + MatchCollection result = reg.Matches(RegexInput); + string[] groups = reg.GetGroupNames(); + string txt = ""; + //遍历每个结果 + for(int n=0;n 0) + { + for (int i = 0; i < groups.Length; i++) + { + XPTable.Models.Row itemList = new XPTable.Models.Row(); + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(m.Groups[groups[i]].Value));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(m.Index.ToString())); + itemList.Cells.Add(new XPTable.Models.Cell(groups[i])); + tableModel1.Rows.Add(itemList); + } + } + else + { + XPTable.Models.Row itemList = new XPTable.Models.Row(); + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(m.ToString()));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(m.Index.ToString())); + itemList.Cells.Add(new XPTable.Models.Cell("")); + tableModel1.Rows.Add(itemList); + } + } + table1.EndUpdate(); + RichRegexOutput.Text = txt; + TabTxtResult.Text = "普通结果("+result.Count+")"; + tabPage10.Text = "列表展示(" + tableModel1.Rows.Count + ")"; + } + catch (Exception ex) + { + TabTxtResult.Text = "普通结果(" + 0 + ")"; + tabPage10.Text = "列表展示(" + tableModel1.Rows.Count + ")"; + MessageBox.Show(ex.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + } + + private void LnkRegexHelp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) + { + ryCommon.RyFiles.OpenUrl("http://www.runoob.com/regexp/regexp-metachar.html"); + } + + private void TxtRegexInput_DoubleClick(object sender, EventArgs e) + { + ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender; + 开发辅助工具.Controls.FrmText frm = new Controls.FrmText + { + Icon = Icon + }; + frm.richTextBox1.Text = txt.Text; + if (frm.ShowDialog() == DialogResult.OK) + { + txt.Text = frm.richTextBox1.Text; + } + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmRegex.resx b/Source/开发辅助工具/Tools/FrmRegex.resx new file mode 100644 index 0000000..d7c01ff --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmRegex.resx @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 303, 14 + + + 35, 14 + + + 176, 14 + + + 518, 14 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQCKiooAnp6eAI2N + jQaUlJQXlJSUFYaGhgSenp4AeHh4AJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZAJ6e + ngCZmZk5pqammK2trb2srKy7paWllpqamjmdnZ0AmZmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZkAmZmZAJmZmQCZmZkAmZmZAAAA + AACZmZkAlZWVEqqqqrTLy8v/1NTU/9PT0//Kysr/qampsZSUlA+ZmZkAAAAAAJmZmQCZmZkAmZmZAJmZ + mQCZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZAJeXlwDAwMAAgYGBB21t + bQKYmJgAmZmZAJmZmQCWlpY6u7u75djY2P/Z2dn/2dnZ/9fX1/+4uLjblpaWMJmZmQCZmZkAmJiYAG1t + bQKBgYEHzc3NAJOTkwCZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQCYmJgAkpKSDZ+f + n0+pqamYpKSkeJaWlisPDw8AFxcXAZqamm7Dw8P82tra/9nZ2f/Z2dn/2tra/8HBwfWZmZljAAAAARgY + GACWlpYrpKSkeKmpqZigoKBKbGxsApiYmACZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZkAl5eXAJOT + kw2ioqJtv7+/5M3Nzf/IyMj8sLCwzp+fn2+kpKSXuLi44tPT0//b29v/2tra/9ra2v/b29v/0tLS/7a2 + tt+kpKSWoKCgb7Gxsc7IyMj8zc3N/7m5ueGenp5UdnZ2ApSUlACZmZkAAAAAAAAAAAAAAAAAAAAAAJmZ + mQCtra0Anp6eS7+/v+TZ2dn/3Nzc/9zc3P/U1NT/x8fH+c7Ozv/Y2Nj/29vb/9vb2//b29v/29vb/9vb + 2//b29v/2NjY/87Ozv/Hx8f51dXV/9zc3P/c3Nz/19fX/7m5ueGfn59HsbGxAJmZmQAAAAAAAAAAAAAA + AAAAAAAAmZmZAH5+fgapqamTz8/P/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/b29v/3Nzc/93d + 3f/d3d3/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/d3d3/z8/P/6mpqZN+fn4GmZmZAAAA + AAAAAAAAAAAAAAAAAACZmZkAAAAAAKOjo2vOzs745OTk/93d3f/d3d3/3d3d/93d3f/d3d3/39/f/+Li + 4v/g4OD/4ODg/+Dg4P/g4OD/4eHh/9/f3//d3d3/3d3d/93d3f/d3d3/3d3d/+Tk5P/Ozs74o6OjawAA + AACZmZkAAAAAAAAAAAAAAAAAAAAAAJmZmQCYmJgAlJSUIbOzs8Th4eH/4ODg/93d3f/e3t7/39/f/+Pj + 4//g4OD/2tra/9XV1f/S0tL/0tLS/9XV1f/a2tr/4ODg/+Pj4//f39//3t7e/93d3f/g4OD/4eHh/7Oz + s8OUlJQhmJiYAJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQDj4+MAn5+fbsvLy/ng4OD/3t7e/9/f + 3//j4+P/29vb/9HR0f/Pz8//z8/P/9DQ0P/Q0ND/z8/P/8/Pz//R0dH/29vb/+Pj4//f39//3t7e/+Dg + 4P/Kysr4n5+fbOfn5wCZmZkAAAAAAAAAAAAAAAAAmZmZAJmZmQCZmZkAmJiYAAwMDAGlpaWX0tLS/+Dg + 4P/g4OD/5OTk/9nZ2f/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/2dnZ/+Pj + 4//g4OD/4ODg/9LS0v+kpKSOvLy8AJmZmQCZmZkAmZmZAJmZmQCRkZEAo6OjAJWVlReWlpY8nJycbbu7 + u+Le3t7/4ODg/+Li4v/c3Nz/zc3N/8vLy//Ly8v/y8vL/szMzNrMzMy2zMzMtszMzNrLy8v+y8vL/8vL + y//Nzc3/3d3d/+Li4v/g4OD/3d3d/7q6ut2amppqlpaWPJWVlRejo6MAkZGRAJ+fnwCZmZk5ra2tucDA + wOfJycn829vb/+Li4v/i4uL/4uLi/9HR0f/IyMj/ycnJ/8nJyf7Jycm1ysrKNsnJyQ3JyckNysrKNsnJ + ybXJycn+ycnJ/8jIyP/R0dH/4uLi/+Li4v/i4uL/2dnZ/8jIyPzAwMDnra2tuZqamjqhoaEAg4ODBKen + p5bT09P/4uLi/+Tk5P/j4+P/4+Pj/+Tk5P/e3t7/ycnJ/8bGxv/Gxsb/xsbG2sbGxjbIyMgAysrKAMrK + ygDIyMgAxsbGNsbGxtrGxsb/xsbG/8nJyf/d3d3/5OTk/+Pj4//k5OT/5OTk/+Li4v/S0tL/oqKikbu7 + uwCTk5MVsLCwu97e3v/k5OT/5OTk/+Tk5P/k5OT/5eXl/9vb2//ExMT/xMTE/8TExP/ExMS2xMTEDcXF + xQDIyMgAyMjIAMXFxQDExMQNxMTEtsTExP/ExMT/xMTE/9zc3P/l5eX/5OTk/+Tk5P/k5OT/5OTk/9vb + 2/+kpKSmwcHBAJKSkhKvr6+54ODg/+bm5v/l5eX/5eXl/+Xl5f/m5ub/2tra/8LCwv/BwcH/wcHB/8HB + wbbBwcENwMDAAL29vQC9vb0AwMDAAMHBwQ3BwcG2wcHB/8HBwf/BwcH/2dnZ/+bm5v/l5eX/5eXl/+Xl + 5f/m5ub/3d3d/6SkpKbCwsIAYWFhAqenp47f39//8vLy/+7u7v/p6en/5ubm/+bm5v/c3Nz/wsLC/76+ + vv+/v7//v7+/2r6+vja9vb0Au7u7ALu7uwC9vb0Avr6+Nr+/v9q/v7//vr6+/8LCwv/c3Nz/5ubm/+bm + 5v/p6en/7u7u//Ly8v/e3t7/pKSki8LCwgCioqIAm5ubM7Gxsa3KysrZ19fX9ezs7P/t7e3/5+fn/+Pj + 4//Hx8f/vLy8/7y8vP+8vLz+vLy8tbu7uza7u7sNu7u7Dbu7uza8vLy1vLy8/ry8vP+8vLz/x8fH/+Pj + 4//n5+f/7e3t/+3t7f/X19f1ysrK2bGxsa2bm5szpaWlAGpqagCgoKAAkJCQDJSUlC+ZmZlfxMTE2u3t + 7f/p6en/6Ojo/9TU1P+7u7v/ubm5/7q6uv+6urr+ubm52rm5uba5ubm2ubm52rq6uv66urr/ubm5/7u7 + u//U1NT/6Ojo/+np6f/u7u7/w8PD2ZmZmV+UlJQvkJCQDKCgoABqamoAmZmZAJmZmQCZmZkAmJiYAL6+ + vgCmpqaN4ODg/+zs7P/p6en/5ubm/8jIyP+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3 + t/+3t7f/yMjI/+bm5v/p6en/7Ozs/97e3v6lpaWIvb29AJiYmACZmZkAmZmZAJmZmQAAAAAAAAAAAAAA + AACZmZkAEBAQAKGhoXDS0tL56+vr/+rq6v/q6ur/4+Pj/8fHx/+3t7f/tbW1/7W1tf+1tbX/tbW1/7W1 + tf+1tbX/t7e3/8fHx//j4+P/6urq/+rq6v/r6+v/0tLS+aGhoW////8AmZmZAAAAAAAAAAAAAAAAAAAA + AAAAAAAAmZmZAJiYmACVlZUrtbW1zuPj4//r6+v/6+vr/+vr6//r6+v/5+fn/9TU1P/CwsL/urq6/7W1 + tf+1tbX/urq6/8LCwv/U1NT/5+fn/+vr6//r6+v/6+vr/+vr6//i4uL/tLS0yZWVlSaYmJgAmZmZAAAA + AAAAAAAAAAAAAAAAAACZmZkAYWFhAqioqHnV1dX87Ozs/+zs7P/s7Oz/7Ozs/+vr6//s7Oz/7Ozs/+bm + 5v/e3t7/2tra/9ra2v/e3t7/5ubm/+zs7P/s7Oz/6+vr/+zs7P/s7Oz/7Ozs/+zs7P/U1NT6qKiod2Rk + ZAKZmZkAAAAAAAAAAAAAAAAAAAAAAJmZmQB4eHgGrq6uleDg4P/x8fH/7e3t/+3t7f/x8fH/9PT0//Ly + 8v/u7u7/7e3t/+7u7v/u7u7/7u7u/+7u7v/t7e3/7u7u//Ly8v/09PT/8fHx/+3t7f/t7e3/8vLy/+Dg + 4P+urq6VeHh4BpmZmQAAAAAAAAAAAAAAAAAAAAAAmZmZALy8vAChoaFHysrK4fX19f/09PT/9fX1//Dw + 8P/b29v45+fn/fX19f/09PT/7u7u/+7u7v/u7u7/7u7u//T09P/19fX/5ubm/dra2vfw8PD/9fX1//T0 + 9P/19fX/ysrK4aGhoUe8vLwAmZmZAAAAAAAAAAAAAAAAAAAAAACZmZkAkZGRAGNjYwKioqJUysrK4ejo + 6P/e3t74uLi4xKCgoGmoqKiFxcXF2e/v7//x8fH/7u7u/+7u7v/y8vL/7+/v/8XFxdmnp6eDoKCgZ7i4 + uMTe3t746Ojo/8rKyuGioqJUY2NjApGRkQCZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZkAl5eXAHBw + cAKfn59EsLCwkKioqGuTk5Mh////AL6+vgCZmZlj09PT+fPz8//v7+//7+/v//T09P/S0tL1mZmZX8HB + wQD///8Ak5OTIaioqGuwsLCQn5+fRHBwcAKXl5cAmZmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACZmZkAkpKSAKurqwBubm4FAAAAAZiYmACZmZkAmZmZAJWVlTjIyMji9PT0//Dw8P/w8PD/8/Pz/8XF + xduVlZUxmZmZAJmZmQCYmJgAAAAAAW5ubgWrq6sAkpKSAJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACZmZkAmZmZAJmZmQCZmZkAmZmZAAAAAACZmZkAkZGRDrKysq/k5OT/7+/v/+/v + 7//k5OT/srKyr5GRkQ+ZmZkAAAAAAJmZmQCZmZkAmZmZAJmZmQCZmZkAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQCgoKAAm5ubM6am + pouoqKimqKiopqampoubm5szoKCgAJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZAGpq + agCkpKQAx8fHANDQ0ADQ0NAAx8fHAKSkpABqamoAmZmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/+AH///gB//4IAQf8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA+AA + AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAB8AAAAPAAAADwAAAA8AA + AAPAAAAD4AAAB/AAAA/4IAQf/+AH///gB/8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmSetup.Designer.cs b/Source/开发辅助工具/Tools/FrmSetup.Designer.cs new file mode 100644 index 0000000..99574b2 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmSetup.Designer.cs @@ -0,0 +1,84 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmSetup + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSetup)); + this.BtnCopyExe = new System.Windows.Forms.Button(); + this.BtnCopyPram = new System.Windows.Forms.Button(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.SuspendLayout(); + // + // BtnCopyExe + // + this.BtnCopyExe.Location = new System.Drawing.Point(12, 12); + this.BtnCopyExe.Name = "BtnCopyExe"; + this.BtnCopyExe.Size = new System.Drawing.Size(142, 38); + this.BtnCopyExe.TabIndex = 4; + this.BtnCopyExe.Text = "复制命令"; + this.BtnCopyExe.UseVisualStyleBackColor = true; + this.BtnCopyExe.Click += new System.EventHandler(this.BtnCopyExe_Click); + // + // BtnCopyPram + // + this.BtnCopyPram.Location = new System.Drawing.Point(160, 12); + this.BtnCopyPram.Name = "BtnCopyPram"; + this.BtnCopyPram.Size = new System.Drawing.Size(142, 38); + this.BtnCopyPram.TabIndex = 5; + this.BtnCopyPram.Text = "复制参数"; + this.BtnCopyPram.UseVisualStyleBackColor = true; + this.BtnCopyPram.Click += new System.EventHandler(this.BtnCopyPram_Click); + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(185, 92); + this.menuRight1.SourceContent = this; + // + // FrmSetup + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.BtnCopyExe); + this.Controls.Add(this.BtnCopyPram); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmSetup"; + this.Text = "安装"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button BtnCopyExe; + private System.Windows.Forms.Button BtnCopyPram; + private ryPaiban.Model.MenuRight menuRight1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmSetup.cs b/Source/开发辅助工具/Tools/FrmSetup.cs new file mode 100644 index 0000000..3606041 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmSetup.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmSetup : DockContent + { + public FrmSetup() + { + InitializeComponent(); + } + + private void BtnCopyExe_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.CopyToClip(Application.ExecutablePath); + } + + private void BtnCopyPram_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.CopyToClip("get \"$(ProjectDir)$(ProjectFileName)\""); + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmSetup.resx b/Source/开发辅助工具/Tools/FrmSetup.resx new file mode 100644 index 0000000..ca0746f --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmSetup.resx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQCKiooAnp6eAI2N + jQaUlJQXlJSUFYaGhgSenp4AeHh4AJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZAJ6e + ngCZmZk5pqammK2trb2srKy7paWllpqamjmdnZ0AmZmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZkAmZmZAJmZmQCZmZkAmZmZAAAA + AACZmZkAlZWVEqqqqrTLy8v/1NTU/9PT0//Kysr/qampsZSUlA+ZmZkAAAAAAJmZmQCZmZkAmZmZAJmZ + mQCZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZAJeXlwDAwMAAgYGBB21t + bQKYmJgAmZmZAJmZmQCWlpY6u7u75djY2P/Z2dn/2dnZ/9fX1/+4uLjblpaWMJmZmQCZmZkAmJiYAG1t + bQKBgYEHzc3NAJOTkwCZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQCYmJgAkpKSDZ+f + n0+pqamYpKSkeJaWlisPDw8AFxcXAZqamm7Dw8P82tra/9nZ2f/Z2dn/2tra/8HBwfWZmZljAAAAARgY + GACWlpYrpKSkeKmpqZigoKBKbGxsApiYmACZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZkAl5eXAJOT + kw2ioqJtv7+/5M3Nzf/IyMj8sLCwzp+fn2+kpKSXuLi44tPT0//b29v/2tra/9ra2v/b29v/0tLS/7a2 + tt+kpKSWoKCgb7Gxsc7IyMj8zc3N/7m5ueGenp5UdnZ2ApSUlACZmZkAAAAAAAAAAAAAAAAAAAAAAJmZ + mQCtra0Anp6eS7+/v+TZ2dn/3Nzc/9zc3P/U1NT/x8fH+c7Ozv/Y2Nj/29vb/9vb2//b29v/29vb/9vb + 2//b29v/2NjY/87Ozv/Hx8f51dXV/9zc3P/c3Nz/19fX/7m5ueGfn59HsbGxAJmZmQAAAAAAAAAAAAAA + AAAAAAAAmZmZAH5+fgapqamTz8/P/93d3f/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/b29v/3Nzc/93d + 3f/d3d3/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/c3Nz/3Nzc/9zc3P/d3d3/z8/P/6mpqZN+fn4GmZmZAAAA + AAAAAAAAAAAAAAAAAACZmZkAAAAAAKOjo2vOzs745OTk/93d3f/d3d3/3d3d/93d3f/d3d3/39/f/+Li + 4v/g4OD/4ODg/+Dg4P/g4OD/4eHh/9/f3//d3d3/3d3d/93d3f/d3d3/3d3d/+Tk5P/Ozs74o6OjawAA + AACZmZkAAAAAAAAAAAAAAAAAAAAAAJmZmQCYmJgAlJSUIbOzs8Th4eH/4ODg/93d3f/e3t7/39/f/+Pj + 4//g4OD/2tra/9XV1f/S0tL/0tLS/9XV1f/a2tr/4ODg/+Pj4//f39//3t7e/93d3f/g4OD/4eHh/7Oz + s8OUlJQhmJiYAJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQDj4+MAn5+fbsvLy/ng4OD/3t7e/9/f + 3//j4+P/29vb/9HR0f/Pz8//z8/P/9DQ0P/Q0ND/z8/P/8/Pz//R0dH/29vb/+Pj4//f39//3t7e/+Dg + 4P/Kysr4n5+fbOfn5wCZmZkAAAAAAAAAAAAAAAAAmZmZAJmZmQCZmZkAmJiYAAwMDAGlpaWX0tLS/+Dg + 4P/g4OD/5OTk/9nZ2f/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/zs7O/87Ozv/Ozs7/2dnZ/+Pj + 4//g4OD/4ODg/9LS0v+kpKSOvLy8AJmZmQCZmZkAmZmZAJmZmQCRkZEAo6OjAJWVlReWlpY8nJycbbu7 + u+Le3t7/4ODg/+Li4v/c3Nz/zc3N/8vLy//Ly8v/y8vL/szMzNrMzMy2zMzMtszMzNrLy8v+y8vL/8vL + y//Nzc3/3d3d/+Li4v/g4OD/3d3d/7q6ut2amppqlpaWPJWVlRejo6MAkZGRAJ+fnwCZmZk5ra2tucDA + wOfJycn829vb/+Li4v/i4uL/4uLi/9HR0f/IyMj/ycnJ/8nJyf7Jycm1ysrKNsnJyQ3JyckNysrKNsnJ + ybXJycn+ycnJ/8jIyP/R0dH/4uLi/+Li4v/i4uL/2dnZ/8jIyPzAwMDnra2tuZqamjqhoaEAg4ODBKen + p5bT09P/4uLi/+Tk5P/j4+P/4+Pj/+Tk5P/e3t7/ycnJ/8bGxv/Gxsb/xsbG2sbGxjbIyMgAysrKAMrK + ygDIyMgAxsbGNsbGxtrGxsb/xsbG/8nJyf/d3d3/5OTk/+Pj4//k5OT/5OTk/+Li4v/S0tL/oqKikbu7 + uwCTk5MVsLCwu97e3v/k5OT/5OTk/+Tk5P/k5OT/5eXl/9vb2//ExMT/xMTE/8TExP/ExMS2xMTEDcXF + xQDIyMgAyMjIAMXFxQDExMQNxMTEtsTExP/ExMT/xMTE/9zc3P/l5eX/5OTk/+Tk5P/k5OT/5OTk/9vb + 2/+kpKSmwcHBAJKSkhKvr6+54ODg/+bm5v/l5eX/5eXl/+Xl5f/m5ub/2tra/8LCwv/BwcH/wcHB/8HB + wbbBwcENwMDAAL29vQC9vb0AwMDAAMHBwQ3BwcG2wcHB/8HBwf/BwcH/2dnZ/+bm5v/l5eX/5eXl/+Xl + 5f/m5ub/3d3d/6SkpKbCwsIAYWFhAqenp47f39//8vLy/+7u7v/p6en/5ubm/+bm5v/c3Nz/wsLC/76+ + vv+/v7//v7+/2r6+vja9vb0Au7u7ALu7uwC9vb0Avr6+Nr+/v9q/v7//vr6+/8LCwv/c3Nz/5ubm/+bm + 5v/p6en/7u7u//Ly8v/e3t7/pKSki8LCwgCioqIAm5ubM7Gxsa3KysrZ19fX9ezs7P/t7e3/5+fn/+Pj + 4//Hx8f/vLy8/7y8vP+8vLz+vLy8tbu7uza7u7sNu7u7Dbu7uza8vLy1vLy8/ry8vP+8vLz/x8fH/+Pj + 4//n5+f/7e3t/+3t7f/X19f1ysrK2bGxsa2bm5szpaWlAGpqagCgoKAAkJCQDJSUlC+ZmZlfxMTE2u3t + 7f/p6en/6Ojo/9TU1P+7u7v/ubm5/7q6uv+6urr+ubm52rm5uba5ubm2ubm52rq6uv66urr/ubm5/7u7 + u//U1NT/6Ojo/+np6f/u7u7/w8PD2ZmZmV+UlJQvkJCQDKCgoABqamoAmZmZAJmZmQCZmZkAmJiYAL6+ + vgCmpqaN4ODg/+zs7P/p6en/5ubm/8jIyP+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3t/+3t7f/t7e3/7e3 + t/+3t7f/yMjI/+bm5v/p6en/7Ozs/97e3v6lpaWIvb29AJiYmACZmZkAmZmZAJmZmQAAAAAAAAAAAAAA + AACZmZkAEBAQAKGhoXDS0tL56+vr/+rq6v/q6ur/4+Pj/8fHx/+3t7f/tbW1/7W1tf+1tbX/tbW1/7W1 + tf+1tbX/t7e3/8fHx//j4+P/6urq/+rq6v/r6+v/0tLS+aGhoW////8AmZmZAAAAAAAAAAAAAAAAAAAA + AAAAAAAAmZmZAJiYmACVlZUrtbW1zuPj4//r6+v/6+vr/+vr6//r6+v/5+fn/9TU1P/CwsL/urq6/7W1 + tf+1tbX/urq6/8LCwv/U1NT/5+fn/+vr6//r6+v/6+vr/+vr6//i4uL/tLS0yZWVlSaYmJgAmZmZAAAA + AAAAAAAAAAAAAAAAAACZmZkAYWFhAqioqHnV1dX87Ozs/+zs7P/s7Oz/7Ozs/+vr6//s7Oz/7Ozs/+bm + 5v/e3t7/2tra/9ra2v/e3t7/5ubm/+zs7P/s7Oz/6+vr/+zs7P/s7Oz/7Ozs/+zs7P/U1NT6qKiod2Rk + ZAKZmZkAAAAAAAAAAAAAAAAAAAAAAJmZmQB4eHgGrq6uleDg4P/x8fH/7e3t/+3t7f/x8fH/9PT0//Ly + 8v/u7u7/7e3t/+7u7v/u7u7/7u7u/+7u7v/t7e3/7u7u//Ly8v/09PT/8fHx/+3t7f/t7e3/8vLy/+Dg + 4P+urq6VeHh4BpmZmQAAAAAAAAAAAAAAAAAAAAAAmZmZALy8vAChoaFHysrK4fX19f/09PT/9fX1//Dw + 8P/b29v45+fn/fX19f/09PT/7u7u/+7u7v/u7u7/7u7u//T09P/19fX/5ubm/dra2vfw8PD/9fX1//T0 + 9P/19fX/ysrK4aGhoUe8vLwAmZmZAAAAAAAAAAAAAAAAAAAAAACZmZkAkZGRAGNjYwKioqJUysrK4ejo + 6P/e3t74uLi4xKCgoGmoqKiFxcXF2e/v7//x8fH/7u7u/+7u7v/y8vL/7+/v/8XFxdmnp6eDoKCgZ7i4 + uMTe3t746Ojo/8rKyuGioqJUY2NjApGRkQCZmZkAAAAAAAAAAAAAAAAAAAAAAAAAAACZmZkAl5eXAHBw + cAKfn59EsLCwkKioqGuTk5Mh////AL6+vgCZmZlj09PT+fPz8//v7+//7+/v//T09P/S0tL1mZmZX8HB + wQD///8Ak5OTIaioqGuwsLCQn5+fRHBwcAKXl5cAmZmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACZmZkAkpKSAKurqwBubm4FAAAAAZiYmACZmZkAmZmZAJWVlTjIyMji9PT0//Dw8P/w8PD/8/Pz/8XF + xduVlZUxmZmZAJmZmQCYmJgAAAAAAW5ubgWrq6sAkpKSAJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAACZmZkAmZmZAJmZmQCZmZkAmZmZAAAAAACZmZkAkZGRDrKysq/k5OT/7+/v/+/v + 7//k5OT/srKyr5GRkQ+ZmZkAAAAAAJmZmQCZmZkAmZmZAJmZmQCZmZkAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQCgoKAAm5ubM6am + pouoqKimqKiopqampoubm5szoKCgAJmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZAGpq + agCkpKQAx8fHANDQ0ADQ0NAAx8fHAKSkpABqamoAmZmZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/+AH///gB//4IAQf8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA+AA + AAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAB8AAAAPAAAADwAAAA8AA + AAPAAAAD4AAAB/AAAA/4IAQf/+AH///gB/8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmStrCount.Designer.cs b/Source/开发辅助工具/Tools/FrmStrCount.Designer.cs new file mode 100644 index 0000000..6150bec --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmStrCount.Designer.cs @@ -0,0 +1,99 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmStrCount + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmStrCount)); + this.textEditorControl1 = new ICSharpCode.TextEditor.TextEditorControl(); + this.contextMenuStripHighlightText1 = new ryProcessManager.hezuo.ContextMenuStripHighlightText(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.TxtFromCode = new ryControls.Controls.RichTextBox2(); + this.SuspendLayout(); + // + // textEditorControl1 + // + this.textEditorControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textEditorControl1.ContextMenuStrip = this.contextMenuStripHighlightText1; + this.textEditorControl1.IsReadOnly = false; + this.textEditorControl1.Location = new System.Drawing.Point(12, 216); + this.textEditorControl1.Name = "textEditorControl1"; + this.textEditorControl1.Size = new System.Drawing.Size(812, 267); + this.textEditorControl1.TabIndex = 19; + // + // contextMenuStripHighlightText1 + // + this.contextMenuStripHighlightText1.Name = "contextMenuStripHighlightText1"; + this.contextMenuStripHighlightText1.Size = new System.Drawing.Size(101, 186); + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // TxtFromCode + // + this.TxtFromCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtFromCode.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtFromCode.DetectUrls = false; + this.TxtFromCode.EmptyText = "请填写待计算的字符串"; + this.TxtFromCode.ForeColor = System.Drawing.Color.Black; + this.TxtFromCode.Location = new System.Drawing.Point(12, 3); + this.TxtFromCode.Name = "TxtFromCode"; + this.TxtFromCode.OnlyInputText = true; + this.TxtFromCode.Size = new System.Drawing.Size(812, 207); + this.TxtFromCode.TabIndex = 30; + this.TxtFromCode.Text = ""; + this.TxtFromCode.TextChanged += new System.EventHandler(this.TxtFromCode_TextChanged); + // + // FrmStrCount + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(836, 495); + this.Controls.Add(this.TxtFromCode); + this.Controls.Add(this.textEditorControl1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmStrCount"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "字符串统计"; + this.ResumeLayout(false); + + } + + #endregion + private ICSharpCode.TextEditor.TextEditorControl textEditorControl1; + private ryProcessManager.hezuo.ContextMenuStripHighlightText contextMenuStripHighlightText1; + private ryPaiban.Model.MenuRight menuRight1; + private ryControls.Controls.RichTextBox2 TxtFromCode; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmStrCount.cs b/Source/开发辅助工具/Tools/FrmStrCount.cs new file mode 100644 index 0000000..6fefcbf --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmStrCount.cs @@ -0,0 +1,36 @@ +using ICSharpCode.TextEditor.Document; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmStrCount : DockContent + { + public FrmStrCount() + { + InitializeComponent(); + textEditorControl1.IsReadOnly = true; + } + + private void TxtFromCode_TextChanged(object sender, EventArgs e) + { + Manager.TotalCount totalCount = new Manager.TotalCount(); + string fromText = TxtFromCode.Text; + int iCount = totalCount.GetByteLength(fromText, out int HanziCount, out int engCount, out int NumCount); + string resultStr = ""; + resultStr = "字节数: " + iCount.ToString() + "个(汉字算两个字符)"; + resultStr += "\r\n字数: " + fromText.Length.ToString() + "个(汉字算一个字符)"; + resultStr += "\r\n汉字数: " + HanziCount.ToString() + "个(汉字算一个字符)"; + resultStr += "\r\n英文数量: " + engCount.ToString() + "个"; + resultStr += "\r\n数字数量: " + NumCount.ToString() + "个"; + textEditorControl1.Text = resultStr; + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmStrCount.resx b/Source/开发辅助工具/Tools/FrmStrCount.resx new file mode 100644 index 0000000..400d948 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmStrCount.resx @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 262, 17 + + + + + AAABAAEAIBwAAAEAIACYDgAAFgAAACgAAAAgAAAAOAAAAAEAIAAAAAAAAA4AAKdrAACnawAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAA + AKAAAABbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAsAAAA7AAAANgAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAACUAAAA/wAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADoAAAA2wAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAI4AAAD/AAAAfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAOUAAADfAAAAJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAB6AAAAYgAAAAIAAAAAAAAAiQAA + AP8AAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4AAACGAAAAHgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAArwAAAP8AAACvAAAABgAA + AAAAAAAoAAAA4gAAAOIAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwAAAP8AAADDAAAANAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAMwAAAD/AAAAtgAA + ACgAAAAAAAAAAAAAAAAAAACDAAAA/wAAAIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAoAAA + AP8AAADdAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFsAAADkAAAA/QAA + AJYAAAAVAAAAAAAAAAAAAAAAAAAAAAAAACQAAADeAAAA5gAAAC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAALAAAAfgAAAPUAAADwAAAAcgAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAB8AAAA8wAA + AO8AAABzAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAD/AAAAjwAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAXAAAAOMAAAD7AAAAlAAAABMAAAAAAAAAAAAAAAAAAAAAAAAASQAA + APoAAAD8AAAAbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAANoAAADpAAAAMQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAPIAAAD/AAAAVgAAAAAAAAAAAAAAAAAA + AAAAAAAfAAAAuAAAAP8AAADGAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAA + AP8AAACVAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAAACyAAAA/wAAAMwAAAAsAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAXAAAAmgAAAP4AAADhAAAAVwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAdAAAA1gAAAOwAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAA0QAAAP8AAACxAAAAJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAeAAAAPMAAADzAAAAeAAAAAoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAByAAAA/wAAAJsAAAADAAAAAAAAAAAAAAAEAAAAYQAAAOgAAAD7AAAAjwAA + ABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAVgAAAOEAAAD/AAAAigAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAADSAAAA7wAAADkAAAAAAAAAAAAAAG0AAAD5AAAA7gAA + AG0AAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAA + AL8AAACXAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAD/AAAAoAAAAAQAAAAAAAAAfAAA + AMsAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADgAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAM4AAADyAAAAPQAA + AAAAAAAIAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwAA + AP8AAAClAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAUAAAAyQAAAPQAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABiAAAA/wAAAKsAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAADEAAAA9gAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAD/AAAAoQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAH8AAABXAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8H////A////wH///8B + ////AP///wD///wAeD/4AHAf8AAwD+AAMAfAABABgAAQAYAACAGAMA4BgDgEAYAIAAGADAABwAwAA/AO + AAf4DgAf/A8AP///AP///4B///+Af///wH///8B////gf///4P8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmStrToCode.Designer.cs b/Source/开发辅助工具/Tools/FrmStrToCode.Designer.cs new file mode 100644 index 0000000..a868afa --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmStrToCode.Designer.cs @@ -0,0 +1,158 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmStrToCode + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmStrToCode)); + this.RbStrToC = new System.Windows.Forms.RadioButton(); + this.RbStrToJS = new System.Windows.Forms.RadioButton(); + this.RbStrToQuickJS = new System.Windows.Forms.RadioButton(); + this.textEditorControl1 = new ICSharpCode.TextEditor.TextEditorControl(); + this.contextMenuStripHighlightText1 = new ryProcessManager.hezuo.ContextMenuStripHighlightText(); + this.RbStrToASP = new System.Windows.Forms.RadioButton(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.TxtFromCode = new ryControls.Controls.RichTextBox2(); + this.SuspendLayout(); + // + // RbStrToC + // + this.RbStrToC.AutoSize = true; + this.RbStrToC.Checked = true; + this.RbStrToC.Location = new System.Drawing.Point(12, 216); + this.RbStrToC.Name = "RbStrToC"; + this.RbStrToC.Size = new System.Drawing.Size(107, 16); + this.RbStrToC.TabIndex = 16; + this.RbStrToC.TabStop = true; + this.RbStrToC.Text = "字符串转C#代码"; + this.RbStrToC.UseVisualStyleBackColor = true; + this.RbStrToC.CheckedChanged += new System.EventHandler(this.RbStrToC_CheckedChanged); + // + // RbStrToJS + // + this.RbStrToJS.AutoSize = true; + this.RbStrToJS.Location = new System.Drawing.Point(158, 216); + this.RbStrToJS.Name = "RbStrToJS"; + this.RbStrToJS.Size = new System.Drawing.Size(107, 16); + this.RbStrToJS.TabIndex = 17; + this.RbStrToJS.Text = "字符串转JS代码"; + this.RbStrToJS.UseVisualStyleBackColor = true; + this.RbStrToJS.CheckedChanged += new System.EventHandler(this.RbStrToJS_CheckedChanged); + // + // RbStrToQuickJS + // + this.RbStrToQuickJS.AutoSize = true; + this.RbStrToQuickJS.Location = new System.Drawing.Point(306, 216); + this.RbStrToQuickJS.Name = "RbStrToQuickJS"; + this.RbStrToQuickJS.Size = new System.Drawing.Size(131, 16); + this.RbStrToQuickJS.TabIndex = 18; + this.RbStrToQuickJS.Text = "字符串转极速JS代码"; + this.RbStrToQuickJS.UseVisualStyleBackColor = true; + this.RbStrToQuickJS.CheckedChanged += new System.EventHandler(this.RbStrToQuickJS_CheckedChanged); + // + // textEditorControl1 + // + this.textEditorControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textEditorControl1.ContextMenuStrip = this.contextMenuStripHighlightText1; + this.textEditorControl1.IsReadOnly = false; + this.textEditorControl1.Location = new System.Drawing.Point(12, 238); + this.textEditorControl1.Name = "textEditorControl1"; + this.textEditorControl1.Size = new System.Drawing.Size(812, 245); + this.textEditorControl1.TabIndex = 19; + // + // contextMenuStripHighlightText1 + // + this.contextMenuStripHighlightText1.Name = "contextMenuStripHighlightText1"; + this.contextMenuStripHighlightText1.Size = new System.Drawing.Size(101, 186); + // + // RbStrToASP + // + this.RbStrToASP.AutoSize = true; + this.RbStrToASP.Location = new System.Drawing.Point(477, 216); + this.RbStrToASP.Name = "RbStrToASP"; + this.RbStrToASP.Size = new System.Drawing.Size(113, 16); + this.RbStrToASP.TabIndex = 21; + this.RbStrToASP.Text = "字符串转Asp代码"; + this.RbStrToASP.UseVisualStyleBackColor = true; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // TxtFromCode + // + this.TxtFromCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtFromCode.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtFromCode.DetectUrls = false; + this.TxtFromCode.EmptyText = "请填写待转换的内容"; + this.TxtFromCode.ForeColor = System.Drawing.Color.Black; + this.TxtFromCode.Location = new System.Drawing.Point(12, 3); + this.TxtFromCode.Name = "TxtFromCode"; + this.TxtFromCode.OnlyInputText = true; + this.TxtFromCode.Size = new System.Drawing.Size(812, 207); + this.TxtFromCode.TabIndex = 31; + this.TxtFromCode.Text = ""; + this.TxtFromCode.TextChanged += new System.EventHandler(this.TxtFromCode_TextChanged); + this.TxtFromCode.DoubleClick += new System.EventHandler(this.TxtFromCode_DoubleClick); + // + // FrmStrToCode + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(836, 495); + this.Controls.Add(this.TxtFromCode); + this.Controls.Add(this.RbStrToASP); + this.Controls.Add(this.textEditorControl1); + this.Controls.Add(this.RbStrToQuickJS); + this.Controls.Add(this.RbStrToJS); + this.Controls.Add(this.RbStrToC); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmStrToCode"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "字符串转代码"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.RadioButton RbStrToC; + private System.Windows.Forms.RadioButton RbStrToJS; + private System.Windows.Forms.RadioButton RbStrToQuickJS; + private ICSharpCode.TextEditor.TextEditorControl textEditorControl1; + private ryProcessManager.hezuo.ContextMenuStripHighlightText contextMenuStripHighlightText1; + private System.Windows.Forms.RadioButton RbStrToASP; + private ryPaiban.Model.MenuRight menuRight1; + private ryControls.Controls.RichTextBox2 TxtFromCode; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmStrToCode.cs b/Source/开发辅助工具/Tools/FrmStrToCode.cs new file mode 100644 index 0000000..f0a472b --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmStrToCode.cs @@ -0,0 +1,87 @@ +using ICSharpCode.TextEditor.Document; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmStrToCode : DockContent + { + public FrmStrToCode() + { + InitializeComponent(); + textEditorControl1.IsReadOnly = true; + } + private void Convert() + { + StringBuilder builder = new StringBuilder(); + string format = "C#"; + if (RbStrToC.Checked) + { + builder.Append(" StringBuilder sb = new StringBuilder();\r\n"); + builder.Append(" sb.Append(\"" + TxtFromCode.Text.Trim().Replace("\"", "\\\"").Replace("\r\n", "\n").Replace("\n", "\");\r\n sb.Append(\"") + "\");"); + format = "C#"; + } + else if (RbStrToJS.Checked) + { + builder.Append("var sb=\"" + this.TxtFromCode.Text.Trim().Replace("\"", "\\\"").Replace("\r\n", "\n").Replace("\n", "\";\r\n sb=sb+\"") + "\";"); + format = "JavaScript"; + } + else if (RbStrToQuickJS.Checked) + { + builder.Append("var sb=\"" + this.TxtFromCode.Text.Trim().Replace("\"", "\\\"").Replace("\r\n", "\n").Replace("\n", "\";\r\n sb=sb+\"") + "\";"); + builder = new StringBuilder(builder.ToString().Replace("script", "scr\"+\"ipt") + " document.write(sb);"); + builder.Insert(0, ""); + format = "HTML"; + } + else if (RbStrToASP.Checked) + { + builder.Append("sb=\"" + this.TxtFromCode.Text.Trim().Replace("\"", "\"\"").Replace("\r\n", "\n").Replace("\n", "\" & vbCrLf \r\nsb=sb & \"") + "\""); + format = "ASP/XHTML"; + } + textEditorControl1.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy(format); + textEditorControl1.Text = builder.ToString(); + } + + private void RbStrToC_CheckedChanged(object sender, EventArgs e) + { + Convert(); + } + + private void RbStrToJS_CheckedChanged(object sender, EventArgs e) + { + Convert(); + } + + private void RbStrToQuickJS_CheckedChanged(object sender, EventArgs e) + { + Convert(); + } + + private void TxtFromCode_DoubleClick(object sender, EventArgs e) + { + ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender; + 开发辅助工具.Controls.FrmText frm = new Controls.FrmText + { + Icon = Icon + }; + frm.richTextBox1.Text = txt.Text; + if (frm.ShowDialog() == DialogResult.OK) + { + txt.Text = frm.richTextBox1.Text; + } + } + + private void TxtFromCode_TextChanged(object sender, EventArgs e) + { + Convert(); + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmStrToCode.resx b/Source/开发辅助工具/Tools/FrmStrToCode.resx new file mode 100644 index 0000000..400d948 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmStrToCode.resx @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 262, 17 + + + + + AAABAAEAIBwAAAEAIACYDgAAFgAAACgAAAAgAAAAOAAAAAEAIAAAAAAAAA4AAKdrAACnawAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAA + AKAAAABbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAsAAAA7AAAANgAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAIAAACUAAAA/wAAAHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAADoAAAA2wAAACEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAI4AAAD/AAAAfwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAOUAAADfAAAAJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAAB6AAAAYgAAAAIAAAAAAAAAiQAA + AP8AAACFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4AAACGAAAAHgAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAArwAAAP8AAACvAAAABgAA + AAAAAAAoAAAA4gAAAOIAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjwAAAP8AAADDAAAANAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAMwAAAD/AAAAtgAA + ACgAAAAAAAAAAAAAAAAAAACDAAAA/wAAAIoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAoAAA + AP8AAADdAAAAUQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAFsAAADkAAAA/QAA + AJYAAAAVAAAAAAAAAAAAAAAAAAAAAAAAACQAAADeAAAA5gAAAC0AAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAALAAAAfgAAAPUAAADwAAAAcgAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAB8AAAA8wAA + AO8AAABzAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH4AAAD/AAAAjwAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAACAAAAXAAAAOMAAAD7AAAAlAAAABMAAAAAAAAAAAAAAAAAAAAAAAAASQAA + APoAAAD8AAAAbgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAANoAAADpAAAAMQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAAAPIAAAD/AAAAVgAAAAAAAAAAAAAAAAAA + AAAAAAAfAAAAuAAAAP8AAADGAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAA + AP8AAACVAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcAAACyAAAA/wAAAMwAAAAsAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAXAAAAmgAAAP4AAADhAAAAVwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAdAAAA1gAAAOwAAAA1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABCAAAA0QAAAP8AAACxAAAAJQAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAeAAAAPMAAADzAAAAeAAAAAoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAByAAAA/wAAAJsAAAADAAAAAAAAAAAAAAAEAAAAYQAAAOgAAAD7AAAAjwAA + ABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAVgAAAOEAAAD/AAAAigAA + AAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAADSAAAA7wAAADkAAAAAAAAAAAAAAG0AAAD5AAAA7gAA + AG0AAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAA + AL8AAACXAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG0AAAD/AAAAoAAAAAQAAAAAAAAAfAAA + AMsAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAADgAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAM4AAADyAAAAPQAA + AAAAAAAIAAAAEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZwAA + AP8AAAClAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAUAAAAyQAAAPQAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABiAAAA/wAAAKsAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIAAADEAAAA9gAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFwAAAD/AAAAoQAAAAEAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQAAAH8AAABXAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8H////A////wH///8B + ////AP///wD///wAeD/4AHAf8AAwD+AAMAfAABABgAAQAYAACAGAMA4BgDgEAYAIAAGADAABwAwAA/AO + AAf4DgAf/A8AP///AP///4B///+Af///wH///8B////gf///4P8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmTime.Designer.cs b/Source/开发辅助工具/Tools/FrmTime.Designer.cs new file mode 100644 index 0000000..15bbde4 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmTime.Designer.cs @@ -0,0 +1,361 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmTime + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmTime)); + this.label1 = new System.Windows.Forms.Label(); + this.TxtFromUnixTime = new ryControls.TextBoxEx2(); + this.label2 = new System.Windows.Forms.Label(); + this.TxtResultTime = new ryControls.TextBoxEx2(); + this.label3 = new System.Windows.Forms.Label(); + this.dateTimePickerEX1 = new ryControls.DateTimePickerEX(); + this.TxtResultUnixTime = new ryControls.TextBoxEx2(); + this.label4 = new System.Windows.Forms.Label(); + this.TxtJSTime2 = new ryControls.TextBoxEx2(); + this.label5 = new System.Windows.Forms.Label(); + this.TxtJSTime1 = new ryControls.TextBoxEx2(); + this.label6 = new System.Windows.Forms.Label(); + this.TxtUnixTime3 = new ryControls.TextBoxEx2(); + this.label7 = new System.Windows.Forms.Label(); + this.TxtResultTime3 = new ryControls.TextBoxEx2(); + this.label8 = new System.Windows.Forms.Label(); + this.TxtFromJSTime3 = new ryControls.TextBoxEx2(); + this.label9 = new System.Windows.Forms.Label(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(11, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(65, 12); + this.label1.TabIndex = 0; + this.label1.Text = "Unix时间戳"; + // + // TxtFromUnixTime + // + this.TxtFromUnixTime.BackColor = System.Drawing.Color.White; + this.TxtFromUnixTime.EmptyText = "请输入时间戳"; + this.TxtFromUnixTime.Location = new System.Drawing.Point(13, 23); + this.TxtFromUnixTime.MaxLength = 999999999; + this.TxtFromUnixTime.Multiline = false; + this.TxtFromUnixTime.Name = "TxtFromUnixTime"; + this.TxtFromUnixTime.OnlyNumeric = false; + this.TxtFromUnixTime.PasswordChar = '\0'; + this.TxtFromUnixTime.ReadOnly = false; + this.TxtFromUnixTime.SelectedText = ""; + this.TxtFromUnixTime.SelectionLength = 0; + this.TxtFromUnixTime.SelectionStart = 0; + this.TxtFromUnixTime.Size = new System.Drawing.Size(277, 30); + this.TxtFromUnixTime.TabIndex = 1; + this.TxtFromUnixTime.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtFromUnixTime.ToolTip = ""; + this.TxtFromUnixTime.TextChanged2 += new System.EventHandler(this.TxtFromUnixTime_TextChanged2); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(294, 9); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 12); + this.label2.TabIndex = 2; + this.label2.Text = "具体时间"; + // + // TxtResultTime + // + this.TxtResultTime.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtResultTime.EmptyText = ""; + this.TxtResultTime.Location = new System.Drawing.Point(296, 23); + this.TxtResultTime.MaxLength = 999999999; + this.TxtResultTime.Multiline = false; + this.TxtResultTime.Name = "TxtResultTime"; + this.TxtResultTime.OnlyNumeric = false; + this.TxtResultTime.PasswordChar = '\0'; + this.TxtResultTime.ReadOnly = true; + this.TxtResultTime.SelectedText = ""; + this.TxtResultTime.SelectionLength = 0; + this.TxtResultTime.SelectionStart = 0; + this.TxtResultTime.Size = new System.Drawing.Size(243, 30); + this.TxtResultTime.TabIndex = 3; + this.TxtResultTime.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtResultTime.ToolTip = ""; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(11, 56); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 4; + this.label3.Text = "具体时间"; + // + // dateTimePickerEX1 + // + this.dateTimePickerEX1.CustomFormat = "yyyy年MM月dd日 dddd HH:mm:ss"; + this.dateTimePickerEX1.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.dateTimePickerEX1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dateTimePickerEX1.Location = new System.Drawing.Point(13, 75); + this.dateTimePickerEX1.Name = "dateTimePickerEX1"; + this.dateTimePickerEX1.Size = new System.Drawing.Size(277, 23); + this.dateTimePickerEX1.TabIndex = 5; + this.dateTimePickerEX1.ValueChanged += new System.EventHandler(this.DateTimePickerEX1_ValueChanged); + // + // TxtResultUnixTime + // + this.TxtResultUnixTime.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtResultUnixTime.EmptyText = ""; + this.TxtResultUnixTime.Location = new System.Drawing.Point(296, 71); + this.TxtResultUnixTime.MaxLength = 999999999; + this.TxtResultUnixTime.Multiline = false; + this.TxtResultUnixTime.Name = "TxtResultUnixTime"; + this.TxtResultUnixTime.OnlyNumeric = false; + this.TxtResultUnixTime.PasswordChar = '\0'; + this.TxtResultUnixTime.ReadOnly = true; + this.TxtResultUnixTime.SelectedText = ""; + this.TxtResultUnixTime.SelectionLength = 0; + this.TxtResultUnixTime.SelectionStart = 0; + this.TxtResultUnixTime.Size = new System.Drawing.Size(243, 30); + this.TxtResultUnixTime.TabIndex = 7; + this.TxtResultUnixTime.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtResultUnixTime.ToolTip = ""; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(294, 57); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(65, 12); + this.label4.TabIndex = 6; + this.label4.Text = "Unix时间戳"; + // + // TxtJSTime2 + // + this.TxtJSTime2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtJSTime2.EmptyText = ""; + this.TxtJSTime2.Location = new System.Drawing.Point(545, 71); + this.TxtJSTime2.MaxLength = 999999999; + this.TxtJSTime2.Multiline = false; + this.TxtJSTime2.Name = "TxtJSTime2"; + this.TxtJSTime2.OnlyNumeric = false; + this.TxtJSTime2.PasswordChar = '\0'; + this.TxtJSTime2.ReadOnly = true; + this.TxtJSTime2.SelectedText = ""; + this.TxtJSTime2.SelectionLength = 0; + this.TxtJSTime2.SelectionStart = 0; + this.TxtJSTime2.Size = new System.Drawing.Size(243, 30); + this.TxtJSTime2.TabIndex = 11; + this.TxtJSTime2.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtJSTime2.ToolTip = ""; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(543, 57); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(53, 12); + this.label5.TabIndex = 10; + this.label5.Text = "JS时间戳"; + // + // TxtJSTime1 + // + this.TxtJSTime1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtJSTime1.EmptyText = ""; + this.TxtJSTime1.Location = new System.Drawing.Point(545, 23); + this.TxtJSTime1.MaxLength = 999999999; + this.TxtJSTime1.Multiline = false; + this.TxtJSTime1.Name = "TxtJSTime1"; + this.TxtJSTime1.OnlyNumeric = false; + this.TxtJSTime1.PasswordChar = '\0'; + this.TxtJSTime1.ReadOnly = true; + this.TxtJSTime1.SelectedText = ""; + this.TxtJSTime1.SelectionLength = 0; + this.TxtJSTime1.SelectionStart = 0; + this.TxtJSTime1.Size = new System.Drawing.Size(243, 30); + this.TxtJSTime1.TabIndex = 9; + this.TxtJSTime1.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtJSTime1.ToolTip = ""; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(543, 9); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 12); + this.label6.TabIndex = 8; + this.label6.Text = "JS时间戳"; + // + // TxtUnixTime3 + // + this.TxtUnixTime3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtUnixTime3.EmptyText = ""; + this.TxtUnixTime3.Location = new System.Drawing.Point(545, 120); + this.TxtUnixTime3.MaxLength = 999999999; + this.TxtUnixTime3.Multiline = false; + this.TxtUnixTime3.Name = "TxtUnixTime3"; + this.TxtUnixTime3.OnlyNumeric = false; + this.TxtUnixTime3.PasswordChar = '\0'; + this.TxtUnixTime3.ReadOnly = true; + this.TxtUnixTime3.SelectedText = ""; + this.TxtUnixTime3.SelectionLength = 0; + this.TxtUnixTime3.SelectionStart = 0; + this.TxtUnixTime3.Size = new System.Drawing.Size(243, 30); + this.TxtUnixTime3.TabIndex = 17; + this.TxtUnixTime3.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtUnixTime3.ToolTip = ""; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(543, 106); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(65, 12); + this.label7.TabIndex = 16; + this.label7.Text = "Unix时间戳"; + // + // TxtResultTime3 + // + this.TxtResultTime3.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(255)))), ((int)(((byte)(192))))); + this.TxtResultTime3.EmptyText = ""; + this.TxtResultTime3.Location = new System.Drawing.Point(296, 120); + this.TxtResultTime3.MaxLength = 999999999; + this.TxtResultTime3.Multiline = false; + this.TxtResultTime3.Name = "TxtResultTime3"; + this.TxtResultTime3.OnlyNumeric = false; + this.TxtResultTime3.PasswordChar = '\0'; + this.TxtResultTime3.ReadOnly = true; + this.TxtResultTime3.SelectedText = ""; + this.TxtResultTime3.SelectionLength = 0; + this.TxtResultTime3.SelectionStart = 0; + this.TxtResultTime3.Size = new System.Drawing.Size(243, 30); + this.TxtResultTime3.TabIndex = 15; + this.TxtResultTime3.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtResultTime3.ToolTip = ""; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(294, 106); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(53, 12); + this.label8.TabIndex = 14; + this.label8.Text = "具体时间"; + // + // TxtFromJSTime3 + // + this.TxtFromJSTime3.BackColor = System.Drawing.Color.White; + this.TxtFromJSTime3.EmptyText = "请输入时间戳"; + this.TxtFromJSTime3.Location = new System.Drawing.Point(13, 120); + this.TxtFromJSTime3.MaxLength = 999999999; + this.TxtFromJSTime3.Multiline = false; + this.TxtFromJSTime3.Name = "TxtFromJSTime3"; + this.TxtFromJSTime3.OnlyNumeric = false; + this.TxtFromJSTime3.PasswordChar = '\0'; + this.TxtFromJSTime3.ReadOnly = false; + this.TxtFromJSTime3.SelectedText = ""; + this.TxtFromJSTime3.SelectionLength = 0; + this.TxtFromJSTime3.SelectionStart = 0; + this.TxtFromJSTime3.Size = new System.Drawing.Size(277, 30); + this.TxtFromJSTime3.TabIndex = 13; + this.TxtFromJSTime3.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtFromJSTime3.ToolTip = ""; + this.TxtFromJSTime3.TextChanged2 += new System.EventHandler(this.TxtFromJSTime3_TextChanged2); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(11, 105); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(53, 12); + this.label9.TabIndex = 12; + this.label9.Text = "JS时间戳"; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // FrmTime + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.TxtUnixTime3); + this.Controls.Add(this.label7); + this.Controls.Add(this.TxtResultTime3); + this.Controls.Add(this.label8); + this.Controls.Add(this.TxtFromJSTime3); + this.Controls.Add(this.label9); + this.Controls.Add(this.TxtJSTime2); + this.Controls.Add(this.label5); + this.Controls.Add(this.TxtJSTime1); + this.Controls.Add(this.label6); + this.Controls.Add(this.TxtResultUnixTime); + this.Controls.Add(this.label4); + this.Controls.Add(this.dateTimePickerEX1); + this.Controls.Add(this.label3); + this.Controls.Add(this.TxtResultTime); + this.Controls.Add(this.label2); + this.Controls.Add(this.TxtFromUnixTime); + this.Controls.Add(this.label1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmTime"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "时间戳转换"; + this.Load += new System.EventHandler(this.FrmTime_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private ryControls.TextBoxEx2 TxtFromUnixTime; + private System.Windows.Forms.Label label2; + private ryControls.TextBoxEx2 TxtResultTime; + private System.Windows.Forms.Label label3; + private ryControls.DateTimePickerEX dateTimePickerEX1; + private ryControls.TextBoxEx2 TxtResultUnixTime; + private System.Windows.Forms.Label label4; + private ryControls.TextBoxEx2 TxtJSTime2; + private System.Windows.Forms.Label label5; + private ryControls.TextBoxEx2 TxtJSTime1; + private System.Windows.Forms.Label label6; + private ryControls.TextBoxEx2 TxtUnixTime3; + private System.Windows.Forms.Label label7; + private ryControls.TextBoxEx2 TxtResultTime3; + private System.Windows.Forms.Label label8; + private ryControls.TextBoxEx2 TxtFromJSTime3; + private System.Windows.Forms.Label label9; + private ryPaiban.Model.MenuRight menuRight1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmTime.cs b/Source/开发辅助工具/Tools/FrmTime.cs new file mode 100644 index 0000000..906c3bb --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmTime.cs @@ -0,0 +1,48 @@ +using ryCommon; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmTime : DockContent + { + public FrmTime() + { + InitializeComponent(); + dateTimePickerEX1.Value = DateTime.Now.Date; + + } + + private void FrmTime_Load(object sender, EventArgs e) + { + + } + + private void TxtFromUnixTime_TextChanged2(object sender, EventArgs e) + { + var dt =RyDate.UnixTimeToDateTime(TxtFromUnixTime.Text); + TxtResultTime.Text = dt.ToString("yyyy-MM-dd dddd HH:mm:ss"); + TxtJSTime1.Text = RyDate.DateTimeToJSTime(dt).ToString(); + } + + private void DateTimePickerEX1_ValueChanged(object sender, EventArgs e) + { + TxtResultUnixTime.Text = RyDate.DateTimeToUnixTime(dateTimePickerEX1.Value).ToString(); + TxtJSTime2.Text = RyDate.DateTimeToJSTime(dateTimePickerEX1.Value).ToString(); + } + + private void TxtFromJSTime3_TextChanged2(object sender, EventArgs e) + { + var dt = RyDate.JSTimeToDateTime(TxtFromJSTime3.Text); + TxtResultTime3.Text = dt.ToString("yyyy-MM-dd dddd HH:mm:ss"); + TxtUnixTime3.Text = RyDate.DateTimeToUnixTime(dt).ToString(); + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmTime.resx b/Source/开发辅助工具/Tools/FrmTime.resx new file mode 100644 index 0000000..d21b5ec --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmTime.resx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAGDqAABg6gAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAA + ACcAAABMAAAAaQAAAHgAAAB4AAAAaAAAAEwAAAAnAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAA + AGkAAAC2AAAA5QAAAPkAAAD/AAAA/wAAAP8AAAD/AAAA+QAAAOYAAAC4AAAAaQAAABwAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAA + AGcAAADSAAAA/gAAAP8AAAD/AAAA/wAAAPkAAADzAAAA8wAAAPkAAAD/AAAA/wAAAP8AAAD+AAAA0wAA + AGgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + ACMAAACpAAAA+wAAAP8AAAD/AAAA4wAAAKcAAABvAAAASwAAADkAAAA5AAAASwAAAG8AAACoAAAA4wAA + AP8AAAD/AAAA+wAAAKgAAAAjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAuAAAAxwAAAP8AAAD/AAAA5QAAAIQAAAApAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAQAAAApAAAAgwAAAOUAAAD/AAAA/wAAAMcAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAIwAAAMcAAAD/AAAA/wAAAL4AAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAANwAAAL0AAAD/AAAA/wAAAMcAAAAjAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAwAAACpAAAA/wAAAP8AAACsAAAAGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAKwAAAD/AAAA/wAAAKkAAAAMAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAPsAAAD/AAAAvQAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAL0AAAD/AAAA+wAA + AGcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAADTAAAA/wAAAOUAAAA3AAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANwAA + AOUAAAD/AAAA0gAAABwAAAAAAAAAAAAAAAAAAAAAAAAAaQAAAP4AAAD/AAAAgwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAhAAAAP8AAAD+AAAAaQAAAAAAAAAAAAAAAAAAAAkAAAC3AAAA/wAAAOMAAAApAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAApAAAA4wAAAP8AAAC3AAAACQAAAAAAAAAAAAAAKAAAAOYAAAD/AAAAqAAA + AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACoAAAA/wAAAOUAAAAnAAAAAAAAAAAAAABMAAAA+QAA + AP8AAABvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG8AAAD/AAAA+QAAAEwAAAAAAAAAAAAA + AGkAAAD/AAAA+QAAAEsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAVwAA + AFgAAABXAAAAVwAAAFcAAABXAAAAWQAAADIAAAAAAAAAAAAAAAAAAAAAAAAASwAAAPkAAAD/AAAAaAAA + AAAAAAAAAAAAeAAAAP8AAADzAAAAOQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AFcAAAD6AAAA/QAAAP0AAAD9AAAA/QAAAP0AAAD/AAAAkQAAAAAAAAAAAAAAAAAAAAAAAAA5AAAA8wAA + AP8AAAB3AAAAAAAAAAAAAAB4AAAA/wAAAPMAAAA5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAWAAAAP0AAAD/AAAA/gAAAP0AAAD9AAAA/QAAAP8AAACRAAAAAAAAAAAAAAAAAAAAAAAA + ADkAAADzAAAA/wAAAHcAAAAAAAAAAAAAAGkAAAD/AAAA+QAAAEsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABXAAAA/QAAAP4AAACRAAAAVQAAAFcAAABXAAAAWQAAADIAAAAAAAAAAAAA + AAAAAAAAAAAASwAAAPkAAAD/AAAAaAAAAAAAAAAAAAAATAAAAPkAAAD/AAAAbwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcAAAD9AAAA/QAAAFUAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAABvAAAA/wAAAPkAAABMAAAAAAAAAAAAAAAoAAAA5gAAAP8AAACoAAAABAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVwAAAP0AAAD9AAAAVwAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAKgAAAD/AAAA5QAAACcAAAAAAAAAAAAAAAkAAAC3AAAA/wAA + AOMAAAApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABXAAAA/QAAAP0AAABXAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApAAAA4wAAAP8AAAC3AAAACQAAAAAAAAAAAAAAAAAA + AGoAAAD+AAAA/wAAAIMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFcAAAD9AAAA/QAA + AFcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIMAAAD/AAAA/gAAAGkAAAAAAAAAAAAA + AAAAAAAAAAAAHAAAANMAAAD/AAAA5QAAADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWAAA + AP8AAAD/AAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3AAAA5QAAAP8AAADSAAAAHAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAaAAAAPsAAAD/AAAAvQAAABoAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAABIAAAA0AAAANAAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAL0AAAD/AAAA+wAA + AGgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAqgAAAP8AAAD/AAAArAAAABoAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAYAAAASAAAAEgAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABoAAACsAAAA/wAA + AP8AAACpAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAxwAAAP8AAAD/AAAAvQAA + ADcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2AAAAvQAA + AP8AAAD/AAAAxwAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAuAAAAxwAA + AP8AAAD/AAAA5QAAAIMAAAApAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAApAAAAgwAA + AOUAAAD/AAAA/wAAAMcAAAAuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAkAAAAqgAAAPsAAAD/AAAA/wAAAOMAAACoAAAAbwAAAEsAAAA5AAAAOQAAAEsAAABvAAAAqAAA + AOMAAAD/AAAA/wAAAPsAAACpAAAAIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAMAAAAaAAAANMAAAD+AAAA/wAAAP8AAAD/AAAA+QAAAPMAAADzAAAA+QAA + AP8AAAD/AAAA/wAAAP4AAADTAAAAaAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAGkAAAC3AAAA5gAAAPkAAAD/AAAA/wAA + AP8AAAD/AAAA+QAAAOYAAAC4AAAAaQAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAoAAAATAAA + AGkAAAB4AAAAeAAAAGkAAABMAAAAKAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/4AB//4AAH/4AAAf8AAAD+AAAAfAAAADwAGAA4AP8AGAH/gBAD/8AAB/ + /gAA//8AAf//gAH4AAAB+AAAA/gAQAP4AEAB+AAAAfgAAAH4H4AA+B8AAHgeAAA4HACAGBgBgAgQAcAA + AAPAAAAD4AAAB/AAAA/4AAAf/gAAf/+AAf8= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmToolsBox.Designer.cs b/Source/开发辅助工具/Tools/FrmToolsBox.Designer.cs new file mode 100644 index 0000000..28e53b2 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmToolsBox.Designer.cs @@ -0,0 +1,87 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmToolsBox + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmToolsBox)); + this.BtnJson = new ryControls.ButtonEx(); + this.BtnCalc = new ryControls.ButtonEx(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.SuspendLayout(); + // + // BtnJson + // + this.BtnJson.ForeColor = System.Drawing.Color.White; + this.BtnJson.Location = new System.Drawing.Point(12, 12); + this.BtnJson.Name = "BtnJson"; + this.BtnJson.Size = new System.Drawing.Size(99, 34); + this.BtnJson.TabIndex = 2; + this.BtnJson.Text = "Json查看器"; + this.BtnJson.UseVisualStyleBackColor = true; + this.BtnJson.Click += new System.EventHandler(this.BtnJson_Click); + // + // BtnCalc + // + this.BtnCalc.ForeColor = System.Drawing.Color.White; + this.BtnCalc.Location = new System.Drawing.Point(117, 12); + this.BtnCalc.Name = "BtnCalc"; + this.BtnCalc.Size = new System.Drawing.Size(99, 34); + this.BtnCalc.TabIndex = 3; + this.BtnCalc.Text = "计算器"; + this.BtnCalc.UseVisualStyleBackColor = true; + this.BtnCalc.Click += new System.EventHandler(this.BtnCalc_Click); + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(185, 70); + this.menuRight1.SourceContent = this; + // + // FrmToolsBox + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.BtnCalc); + this.Controls.Add(this.BtnJson); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmToolsBox"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "工具大全"; + this.ResumeLayout(false); + + } + + #endregion + + private ryControls.ButtonEx BtnJson; + private ryControls.ButtonEx BtnCalc; + private ryPaiban.Model.MenuRight menuRight1; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmToolsBox.cs b/Source/开发辅助工具/Tools/FrmToolsBox.cs new file mode 100644 index 0000000..b5ba816 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmToolsBox.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmToolsBox : DockContent + { + public FrmToolsBox() + { + InitializeComponent(); + } + + private void BtnJson_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.OpenFile(Application.StartupPath + "\\SysDb\\Tools\\Json\\HiJson 2.1.2_jdk64.exe"); + } + + private void BtnCalc_Click(object sender, EventArgs e) + { + ryCommon.RyFiles.OpenFile("calc.exe"); + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmToolsBox.resx b/Source/开发辅助工具/Tools/FrmToolsBox.resx new file mode 100644 index 0000000..c3247e5 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmToolsBox.resx @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAABMLAAATCwAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAAKAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAA + AAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAADAAAAAwAAAAMAAAACwAAAAcAAAACAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAgEBAAAAAAcAAAAcAgICPQUFBFYGBQVdBgUFXQYFBV0GBQVdBgUFXQYF + BV0GBQVdBgUFXQYFBV0GBQVdBgUFXQYFBV0GBQVdBgUFXQYFBV0GBQVdBgUFXQYFBV0GBQVaBAMDSQAA + ACkAAAAOAAAAAgAAAAAAAAAAAAAAAAMCAgAAAAALAwICOA0MDIsTEhHLFhQT5RYUE+oWFBPqFhQT6hYU + E+oWFBPqFhQT6hYUE+oWFBPqFhQT6hYUE+oWFBPqFhQT6hYUE+oWFBPqFhQT6hYUE+oWFBPqFhQT6hYU + E+kVExLZEA8OqgcGBlgAAAAYAAAAAgAAAAAAAAAAAAAABgQEAzcSEBCvGRYV+BoXFv8aFxb/GhcW/xoX + Fv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoX + Fv8aFxb/GhcW/xoXFv8aFxb/FhMT2AsJCWQAAAASAAAAAAAAAAAAAAAYERAPkRkXFvsaGBf/GhcW/xoX + Fv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoX + Fv8aFxb/GhcW/xoXFv8aFxb/GhcW/xoYF/8aGBf/FhQTzgcGBj0AAAAFAAAAAgkICDsYFhXaGxgX/xsY + F/8bGBf/GxgX/xsYF/8bGBf/GxgX/xsYF/8bGBf/GxgX/xsYF/8bGBf/GxgX/xsYF/8bGBf/GxgX/xsY + F/8bGBf/GxgX/xsYF/8bGBf/GxgX/xsYF/8bGBf/GxgX/xsYF/8aGBf7EhAPfwAAAA0AAAAFEA8OYBsY + F/QcGRj/HBkY/xwZGP8cGRj/HBkY/xwZGP8cGRj/HBkY/xwZGP8cGRj/HBkY/xwZGP8cGRj/HBkY/xwZ + GP8cGRj/HBkY/xwZGP8cGRj/HBkY/xwZGP8cGRj/HBkY/xwZGP8cGRj/HBkY/xwZGP8XFBSpAAAAGQAA + AAYTERFuHBkY+B0aGf8cGRn/HBkZ/xwZGf8cGRn/HBkZ/xwZGf8cGRn/HBkZ/xwZGf8cGRn/HBkZ/xwZ + Gf8cGRn/HBkZ/xwZGf8cGRn/HBkZ/xwZGf8cGRn/HBkZ/xwZGf8cGRn/HBkZ/xwZGf8cGRn/HRoZ/xgW + FboFBQUhAAAABhQSEW8dGhn4Hhsa/x4bGf8eGxn/HhsZ/x4bGf8eGxn/HhsZ/x4bGf8eGxn/HhsZ/x4b + Gf8eGxn/HhsZ/x4bGf8eGxn/HhsZ/x4bGf8eGxn/HhsZ/x4bGf8eGxn/HhsZ/x4bGf8eGxn/HhsZ/x4b + Gf8eGxr/GRcWvAYGBSIAAAAGFBISbx4bGvgfHBv/Hxwb/x8cG/8fHBv/Hxwb/x8cG/8fHBv/Hxwb/x8c + G/8fHBv/Hxwb/x8cG/8fHBv/Hxwb/x8cG/8fHBv/Hxwb/x8cG/8fHBv/Hxwb/x8cG/8fHBv/Hxwb/x8c + G/8fHBv/Hxwb/x8cG/8aGBe8BgYGIgAAAAYVExJvHxwb+CAdHP8fHBv/IB0c/yAdHP8gHRz/IB0c/yAc + G/8gHRz/IB0c/yAdHP8gHRz/IB0c/yAdHP8gHRz/IB0c/yAdHP8gHRz/IB0c/yAdHP8gHRz/IB0c/yAd + HP8gHRz/IB0c/yAdHP8fHBv/IB0c/xsYGLwHBgYiAAAABhYUE28gHRz4IR4d/yEeHf8hHh3/IB0c/x4c + G/8gHRz/IR4d/yAdHP8fHBv/HRwa/x4cG/8gHRz/IB4d/yAdHP8eHBv/HRwa/x8dG/8gHRz/Hx0b/x8d + G/8gHRz/Hhwb/x4cGv8fHRz/IB0c/yEeHf8hHh3/HBkYvAcGBiIAAAAGFhQUbyEeHfgiHx7/Ih8e/yEe + Hf8jHR7/Lx4m/yEdHf8hHh3/Hhwb/yYbH/83Hyv/Lx4m/x4bGv8fHRv/Hhsb/zAeJv82Hyr/JBse/x0b + Gv8nHSD/KR0i/yEcHP8yHyj/NR8p/yIbHf8fHRz/Ih8e/yIfHv8dGhm8BwYGIgAAAAYXFRRvIh8e+CMg + H/8jIB//IB4d/0QlNP+5RID/MyEp/x4dG/86Iiz/mj1s/4U3Yf+TPGn/ZC1H/x8aGv9vME7/mT5t/4Q3 + YP+POmX/Lx4l/3AwUP+CNVz/Rig2/303XP+JN2P/fzVa/yUeH/8iHx7/IyAf/x4bGrwIBwYiAAAABhgW + FW8jIB/4JCEg/yQhIP8hHx7/Sik0/85Tgf82JCn/Hh0b/4o+WP+lSGv/Ih8e/00rOP/CUHr/USk2/8dS + fv9QLTr/Ih4e/59FZ/+DOlP/fThR/5JAXv8mHyD/JR4f/08qNf+9UHn/MyQo/yIgH/8kISD/HxwbvAgH + ByIAAAAGGRYWbyQhIPglIiH/JSIh/yIgH/9LLDD/zV5w/zcmKP8iHx7/o09c/4xGUP8cHBr/MyQl/8ld + bv97Pkf/zF9w/zYlJ/8bHBr/hUNM/6VPXP+DQUr/kUdS/yYeHf+CQ0n/rFhm/3JAS/8nIiL/JSEg/yUi + If8gHRy8CAcHIgAAAAYaFxZvJSIh+CYjIv8mIyL/IyEg/0swLP/Na13/OCgm/yIgH/+HTkj/pFpO/yAc + Gv9JLyn/yWxf/1k3Nf/DaV7/UTIs/x0bGf+fV0v/jVBJ/39HP/+PT0X/VjYw/7NhV/86KSj/LCQh/yYi + If8mIiL/JiMi/yEeHbwICAciAAAABhoYF28mIyL4JyQj/yYjIv8hICD/STIn/812S/82KSP/ISAg/zsu + Kf+UXkf/hFU6/5hgRP99UkD/KSQi/2pIOv+WX0T/g1Q5/6FlS/9BMCv/f042/5FYO/87LSf/mGBG/39S + Of9nRDP/KSQj/yckI/8nJCP/Ih8evAgICCIAAAAGGxkYbyckI/goJST/KyYj/zotIf9hRCf/1olB/1A6 + JP84LSH/KCQi/y8pJv9CMyv/PTEq/ysnJf8oJST/KCUk/zovKf9CMyv/Mywo/yIhIf+DVy//lWEy/yMh + If80LCj/QTMr/zApJv8oJST/KCUk/yklJP8jIB+8CQgIIgAAAAYcGhlvKSUk+CkmJf84Lib/dFIr/4Bb + Mv+OZzv/flow/2tNKv8vKSX/KCUl/yglJf8oJSX/KSYl/yomJf8pJiX/KCUl/yglJf8pJiX/JSMk/3hX + MP+JYjP/JiQk/yklJf8oJSX/KSYl/yomJf8qJiX/KiYl/yQhILwJCAgiAAAABhwaGm8pJiX4Kycm/yon + Jv8oJSb/JyUl/yYkJf8nJSX/KCYm/yonJv8rJyb/Kicm/ysnJv8rJyb/Kycm/ysnJv8rJyb/Kycm/ysn + Jv8qJyb/My0o/zYvKf8qJyb/Kicm/ysnJv8rJyb/Kycm/ysnJv8rJyb/JSIhvAkICCIAAAAGHRsabyon + JvgsKCf/LCgn/ywoJ/8sKCf/LCgn/ywoJ/8sKCf/LCgn/ysoJ/8sKCf/LCgn/ywoJ/8sKCf/LCgn/ywo + J/8sKCf/Kygn/ywoJ/8rKCf/Kycn/ywoJ/8sKCf/LCgn/ywoJ/8sKCf/LCgn/ywoJ/8lIiK8CQkIIgAA + AAYeGxtvKygn+C0pKP8tKSj/LSko/y0pKP8tKSj/LSko/y0pKP8tKSj/LSko/y0pKP8tKSj/LSko/y0p + KP8tKSj/LSko/y0pKP8tKSj/LSko/y0pKP8tKSj/LSko/y0pKP8tKSj/LSko/y0pKP8tKSj/LSko/yYj + IrwKCQkiAAAABh4cG28sKSj4Liop/y4qKf8uKin/Liop/y4qKf8uKin/Liop/y4qKf8uKin/Liop/y4q + Kf8uKin/Liop/y4qKf8uKin/Liop/y4qKf8uKin/Liop/y4qKf8uKin/Liop/y4qKf8uKin/Liop/y4q + Kf8uKin/JyQjvAoJCSIAAAAGHx0cby0qKfgvKyr/Lysq/y8rKv8vKyr/Lysq/y8rKv8vKyr/Lysq/y8r + Kv8vKyr/Lysq/y8rKv8vKyr/Lysq/y8rKv8vKyr/Lysq/y8rKv8vKyr/Lysq/y8rKv8vKyr/Lysq/y8r + Kv8vKyr/Lisq/y8rKv8oJSS8CgkJIgAAAAUhHh5sLysq+DAsK/8wKyr/MCsq/zArKv8wKyr/MCsq/zAr + Kv8wKyr/MCsq/zArKv8wKyr/MCsq/zArKv8wKyr/MCsq/zArKv8wKyr/MCsq/zArKv8wKyr/MCsq/zAr + Kv8wKyr/MCsq/zArKv8vKyr/MCwr/ysnJrcLCgoeAAAAASUiIlcyLy7zMC0s/zAtLP8wLSz/MC0s/zAt + LP8wLSz/MC0s/zAtLP8wLSz/MC0s/zAtLP8wLSz/MC0s/zAtLP8wLSz/MC0s/zAtLP8wLSz/MC0s/zAt + LP8wLSz/MC0s/zAtLP8wLSz/MC0s/zAsK/8yLi3/LisqowAAARGnnpsAIB8eKTg1NNUzLy7/MS0s/zEt + LP8xLSz/MS0s/zEtLP8xLSz/MS0s/zEtLP8xLSz/MS0s/zEtLP8xLSz/MS0s/zEtLP8xLSz/MS0s/zEt + LP8xLSz/MS0s/zEtLP8xLSz/MS0s/zEtLP8xLSz/MS0s/zg0M/syLy5vAAAAAyMiIQAAAAAHPDk4fDw5 + OPoyLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIu + Lf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zEtLP83MzL/QD08wygmJiTUycYAAAAAAM7G + wwAtKyoXSEVElkE+PfY3MzL/My8u/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIu + Lf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf8yLi3/Mi4t/zIuLf80MTD/PDk4/0dEQ8w/PTxBAAAAAhQU + EwAAAAAAAAAAANjS0AA1NDQRUE5NYk9MTLNLSEfaSkdG5EpGReRKRkXkSkZF5EpGReRKRkXkSkZF5EpG + ReRKRkXkSkZF5EpGReRKRkXkSkZF5EpGReRKRkXkSkZF5EpGReRKRkXkS0dG4E1KScpRTk6JRkRELAAA + AAI1MzMAAAAAAAAAAAANCwsAAAAAAGhmZgAAAAAASkhHEldVVCNZV1YoWFZVKFhWVShYVlUoWFZVKFhW + VShYVlUoWFZVKFhWVShYVlUoWFZVKFhWVShYVlUoWFZVKFhWVShYVlUoWFZVKFlWVihYVlUmU1FQGyQj + IwaalpUAHh4eAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmWebGet.Designer.cs b/Source/开发辅助工具/Tools/FrmWebGet.Designer.cs new file mode 100644 index 0000000..dc7059d --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmWebGet.Designer.cs @@ -0,0 +1,910 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmWebGet + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmWebGet)); + this.ChkUrlLower = new System.Windows.Forms.CheckBox(); + this.tabControl2 = new System.Windows.Forms.TabControl(); + this.tabPage3 = new System.Windows.Forms.TabPage(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.RichHtml = new System.Windows.Forms.RichTextBox(); + this.contextMenuStripRichText1 = new ryProcessManager.hezuo.ContextMenuStripRichText(); + this.tabPage12 = new System.Windows.Forms.TabPage(); + this.Te_Format = new ICSharpCode.TextEditor.TextEditorControl(); + this.contextMenuStripHighlightText1 = new ryProcessManager.hezuo.ContextMenuStripHighlightText(); + this.tabPage4 = new System.Windows.Forms.TabPage(); + this.RichCookie = new System.Windows.Forms.RichTextBox(); + this.tabPage5 = new System.Windows.Forms.TabPage(); + this.RichStatus = new System.Windows.Forms.RichTextBox(); + this.tabPage6 = new System.Windows.Forms.TabPage(); + this.RichHeader = new System.Windows.Forms.RichTextBox(); + this.tabPreview = new System.Windows.Forms.TabPage(); + this.extendedWebBrowser1 = new ExtendedWebBrowser2.ExtendedWebBrowser(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.tabControl1 = new System.Windows.Forms.TabControl(); + this.tabPage1 = new System.Windows.Forms.TabPage(); + this.TxtPost = new ryControls.Controls.RichTextBox2(); + this.tabPage2 = new System.Windows.Forms.TabPage(); + this.TxtCookie = new ryControls.Controls.RichTextBox2(); + this.tabPage7 = new System.Windows.Forms.TabPage(); + this.TxtInputHeader = new ryControls.Controls.RichTextBox2(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.CbbReferer = new ryControls.RyComboBox(); + this.CbbIp = new ryControls.RyComboBox(); + this.label6 = new System.Windows.Forms.Label(); + this.CbbUserAgent = new ryControls.RyComboBox(); + this.label7 = new System.Windows.Forms.Label(); + this.CbbContentType = new ryControls.RyComboBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.ChkNoPreview = new System.Windows.Forms.CheckBox(); + this.ChkHtmlPreview = new System.Windows.Forms.CheckBox(); + this.ChkGetPic = new System.Windows.Forms.CheckBox(); + this.ChkJump = new System.Windows.Forms.CheckBox(); + this.CbbWriteTimeout = new ryControls.RyComboBox(); + this.label5 = new System.Windows.Forms.Label(); + this.CbbTimeout = new ryControls.RyComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.CbbEncoding = new ryControls.RyComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.BtnRunHtml = new ryControls.ButtonEx(); + this.RbPost = new System.Windows.Forms.RadioButton(); + this.RbGet = new System.Windows.Forms.RadioButton(); + this.TxtUrl = new ryControls.TextBoxEx2(); + this.label2 = new System.Windows.Forms.Label(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.BtnCtreateCShape = new ryControls.ButtonEx(); + this.columnModel1 = new XPTable.Models.ColumnModel(); + this.ColUrl = new XPTable.Models.TextColumn(); + this.ColTitle = new XPTable.Models.TextColumn(); + this.tableModel1 = new XPTable.Models.TableModel(); + this.table1 = new XPTable.Models.Table(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.tabControl2.SuspendLayout(); + this.tabPage3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.tabPage12.SuspendLayout(); + this.tabPage4.SuspendLayout(); + this.tabPage5.SuspendLayout(); + this.tabPage6.SuspendLayout(); + this.tabPreview.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.tabControl1.SuspendLayout(); + this.tabPage1.SuspendLayout(); + this.tabPage2.SuspendLayout(); + this.tabPage7.SuspendLayout(); + this.groupBox2.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).BeginInit(); + this.SuspendLayout(); + // + // ChkUrlLower + // + this.ChkUrlLower.AutoSize = true; + this.ChkUrlLower.Location = new System.Drawing.Point(630, 10); + this.ChkUrlLower.Name = "ChkUrlLower"; + this.ChkUrlLower.Size = new System.Drawing.Size(72, 16); + this.ChkUrlLower.TabIndex = 109; + this.ChkUrlLower.Text = "全转小写"; + this.ChkUrlLower.UseVisualStyleBackColor = true; + // + // tabControl2 + // + this.tabControl2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl2.Controls.Add(this.tabPage3); + this.tabControl2.Controls.Add(this.tabPage12); + this.tabControl2.Controls.Add(this.tabPage4); + this.tabControl2.Controls.Add(this.tabPage5); + this.tabControl2.Controls.Add(this.tabPage6); + this.tabControl2.Controls.Add(this.tabPreview); + this.tabControl2.Location = new System.Drawing.Point(8, 314); + this.tabControl2.Name = "tabControl2"; + this.tabControl2.SelectedIndex = 0; + this.tabControl2.Size = new System.Drawing.Size(889, 306); + this.tabControl2.TabIndex = 108; + // + // tabPage3 + // + this.tabPage3.Controls.Add(this.pictureBox1); + this.tabPage3.Controls.Add(this.RichHtml); + this.tabPage3.Location = new System.Drawing.Point(4, 22); + this.tabPage3.Name = "tabPage3"; + this.tabPage3.Padding = new System.Windows.Forms.Padding(3); + this.tabPage3.Size = new System.Drawing.Size(881, 280); + this.tabPage3.TabIndex = 0; + this.tabPage3.Text = "HTML"; + this.tabPage3.UseVisualStyleBackColor = true; + // + // pictureBox1 + // + this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox1.Location = new System.Drawing.Point(3, 3); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(875, 274); + this.pictureBox1.TabIndex = 1; + this.pictureBox1.TabStop = false; + this.pictureBox1.Visible = false; + // + // RichHtml + // + this.RichHtml.BackColor = System.Drawing.Color.White; + this.RichHtml.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.RichHtml.ContextMenuStrip = this.contextMenuStripRichText1; + this.RichHtml.Dock = System.Windows.Forms.DockStyle.Fill; + this.RichHtml.Location = new System.Drawing.Point(3, 3); + this.RichHtml.Name = "RichHtml"; + this.RichHtml.ReadOnly = true; + this.RichHtml.Size = new System.Drawing.Size(875, 274); + this.RichHtml.TabIndex = 0; + this.RichHtml.Text = ""; + // + // contextMenuStripRichText1 + // + this.contextMenuStripRichText1.Name = "contextMenuStripRichText1"; + this.contextMenuStripRichText1.Size = new System.Drawing.Size(101, 164); + // + // tabPage12 + // + this.tabPage12.Controls.Add(this.Te_Format); + this.tabPage12.Location = new System.Drawing.Point(4, 22); + this.tabPage12.Name = "tabPage12"; + this.tabPage12.Padding = new System.Windows.Forms.Padding(3); + this.tabPage12.Size = new System.Drawing.Size(879, 280); + this.tabPage12.TabIndex = 4; + this.tabPage12.Text = "HTML格式化"; + this.tabPage12.UseVisualStyleBackColor = true; + // + // Te_Format + // + this.Te_Format.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.Te_Format.ContextMenuStrip = this.contextMenuStripHighlightText1; + this.Te_Format.IsReadOnly = false; + this.Te_Format.Location = new System.Drawing.Point(3, 3); + this.Te_Format.Name = "Te_Format"; + this.Te_Format.Size = new System.Drawing.Size(870, 279); + this.Te_Format.TabIndex = 0; + // + // contextMenuStripHighlightText1 + // + this.contextMenuStripHighlightText1.Name = "contextMenuStripHighlightText1"; + this.contextMenuStripHighlightText1.Size = new System.Drawing.Size(101, 186); + // + // tabPage4 + // + this.tabPage4.Controls.Add(this.RichCookie); + this.tabPage4.Location = new System.Drawing.Point(4, 22); + this.tabPage4.Name = "tabPage4"; + this.tabPage4.Padding = new System.Windows.Forms.Padding(3); + this.tabPage4.Size = new System.Drawing.Size(879, 280); + this.tabPage4.TabIndex = 1; + this.tabPage4.Text = "Cookie"; + this.tabPage4.UseVisualStyleBackColor = true; + // + // RichCookie + // + this.RichCookie.BackColor = System.Drawing.Color.White; + this.RichCookie.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.RichCookie.ContextMenuStrip = this.contextMenuStripRichText1; + this.RichCookie.Dock = System.Windows.Forms.DockStyle.Fill; + this.RichCookie.Location = new System.Drawing.Point(3, 3); + this.RichCookie.Name = "RichCookie"; + this.RichCookie.ReadOnly = true; + this.RichCookie.Size = new System.Drawing.Size(873, 274); + this.RichCookie.TabIndex = 1; + this.RichCookie.Text = ""; + // + // tabPage5 + // + this.tabPage5.Controls.Add(this.RichStatus); + this.tabPage5.Location = new System.Drawing.Point(4, 22); + this.tabPage5.Name = "tabPage5"; + this.tabPage5.Padding = new System.Windows.Forms.Padding(3); + this.tabPage5.Size = new System.Drawing.Size(879, 280); + this.tabPage5.TabIndex = 2; + this.tabPage5.Text = "Status"; + this.tabPage5.UseVisualStyleBackColor = true; + // + // RichStatus + // + this.RichStatus.BackColor = System.Drawing.Color.White; + this.RichStatus.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.RichStatus.ContextMenuStrip = this.contextMenuStripRichText1; + this.RichStatus.Dock = System.Windows.Forms.DockStyle.Fill; + this.RichStatus.Location = new System.Drawing.Point(3, 3); + this.RichStatus.Name = "RichStatus"; + this.RichStatus.ReadOnly = true; + this.RichStatus.Size = new System.Drawing.Size(873, 274); + this.RichStatus.TabIndex = 2; + this.RichStatus.Text = ""; + // + // tabPage6 + // + this.tabPage6.Controls.Add(this.RichHeader); + this.tabPage6.Location = new System.Drawing.Point(4, 22); + this.tabPage6.Name = "tabPage6"; + this.tabPage6.Padding = new System.Windows.Forms.Padding(3); + this.tabPage6.Size = new System.Drawing.Size(879, 280); + this.tabPage6.TabIndex = 3; + this.tabPage6.Text = "Header"; + this.tabPage6.UseVisualStyleBackColor = true; + // + // RichHeader + // + this.RichHeader.BackColor = System.Drawing.Color.White; + this.RichHeader.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.RichHeader.ContextMenuStrip = this.contextMenuStripRichText1; + this.RichHeader.Dock = System.Windows.Forms.DockStyle.Fill; + this.RichHeader.Location = new System.Drawing.Point(3, 3); + this.RichHeader.Name = "RichHeader"; + this.RichHeader.ReadOnly = true; + this.RichHeader.Size = new System.Drawing.Size(873, 274); + this.RichHeader.TabIndex = 3; + this.RichHeader.Text = ""; + // + // tabPreview + // + this.tabPreview.Controls.Add(this.extendedWebBrowser1); + this.tabPreview.Location = new System.Drawing.Point(4, 22); + this.tabPreview.Name = "tabPreview"; + this.tabPreview.Padding = new System.Windows.Forms.Padding(3); + this.tabPreview.Size = new System.Drawing.Size(879, 280); + this.tabPreview.TabIndex = 5; + this.tabPreview.Text = "预览"; + this.tabPreview.UseVisualStyleBackColor = true; + // + // extendedWebBrowser1 + // + this.extendedWebBrowser1.Dock = System.Windows.Forms.DockStyle.Fill; + this.extendedWebBrowser1.ForceOpenThisWindow = true; + this.extendedWebBrowser1.Location = new System.Drawing.Point(3, 3); + this.extendedWebBrowser1.MinimumSize = new System.Drawing.Size(20, 20); + this.extendedWebBrowser1.Name = "extendedWebBrowser1"; + this.extendedWebBrowser1.ScriptErrorsSuppressed = true; + this.extendedWebBrowser1.Size = new System.Drawing.Size(873, 274); + this.extendedWebBrowser1.TabIndex = 2; + // + // groupBox3 + // + this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox3.Controls.Add(this.tabControl1); + this.groupBox3.Location = new System.Drawing.Point(10, 170); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(887, 138); + this.groupBox3.TabIndex = 107; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "高级输入参数"; + // + // tabControl1 + // + this.tabControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tabControl1.Controls.Add(this.tabPage1); + this.tabControl1.Controls.Add(this.tabPage2); + this.tabControl1.Controls.Add(this.tabPage7); + this.tabControl1.Location = new System.Drawing.Point(4, 17); + this.tabControl1.Name = "tabControl1"; + this.tabControl1.SelectedIndex = 0; + this.tabControl1.Size = new System.Drawing.Size(876, 115); + this.tabControl1.TabIndex = 6; + // + // tabPage1 + // + this.tabPage1.Controls.Add(this.TxtPost); + this.tabPage1.Location = new System.Drawing.Point(4, 22); + this.tabPage1.Name = "tabPage1"; + this.tabPage1.Padding = new System.Windows.Forms.Padding(3); + this.tabPage1.Size = new System.Drawing.Size(868, 89); + this.tabPage1.TabIndex = 0; + this.tabPage1.Text = "Post数据"; + this.tabPage1.UseVisualStyleBackColor = true; + // + // TxtPost + // + this.TxtPost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtPost.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtPost.DetectUrls = false; + this.TxtPost.EmptyText = "请填写Post数据"; + this.TxtPost.ForeColor = System.Drawing.Color.Black; + this.TxtPost.Location = new System.Drawing.Point(2, 3); + this.TxtPost.Name = "TxtPost"; + this.TxtPost.OnlyInputText = true; + this.TxtPost.Size = new System.Drawing.Size(862, 83); + this.TxtPost.TabIndex = 2; + this.TxtPost.Text = ""; + this.TxtPost.TextChanged += new System.EventHandler(this.TxtPost_TextChanged); + this.TxtPost.DoubleClick += new System.EventHandler(this.TxtPost_DoubleClick); + // + // tabPage2 + // + this.tabPage2.Controls.Add(this.TxtCookie); + this.tabPage2.Location = new System.Drawing.Point(4, 22); + this.tabPage2.Name = "tabPage2"; + this.tabPage2.Padding = new System.Windows.Forms.Padding(3); + this.tabPage2.Size = new System.Drawing.Size(868, 89); + this.tabPage2.TabIndex = 1; + this.tabPage2.Text = "Cookie"; + this.tabPage2.UseVisualStyleBackColor = true; + // + // TxtCookie + // + this.TxtCookie.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtCookie.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtCookie.DetectUrls = false; + this.TxtCookie.EmptyText = "请填写请求时要发送的Cookie"; + this.TxtCookie.ForeColor = System.Drawing.Color.Black; + this.TxtCookie.Location = new System.Drawing.Point(2, 3); + this.TxtCookie.Name = "TxtCookie"; + this.TxtCookie.OnlyInputText = true; + this.TxtCookie.Size = new System.Drawing.Size(862, 83); + this.TxtCookie.TabIndex = 6; + this.TxtCookie.Text = ""; + this.TxtCookie.TextChanged += new System.EventHandler(this.TxtCookie_TextChanged); + this.TxtCookie.DoubleClick += new System.EventHandler(this.TxtPost_DoubleClick); + // + // tabPage7 + // + this.tabPage7.Controls.Add(this.TxtInputHeader); + this.tabPage7.Location = new System.Drawing.Point(4, 22); + this.tabPage7.Name = "tabPage7"; + this.tabPage7.Padding = new System.Windows.Forms.Padding(3); + this.tabPage7.Size = new System.Drawing.Size(868, 89); + this.tabPage7.TabIndex = 2; + this.tabPage7.Text = "Header"; + this.tabPage7.UseVisualStyleBackColor = true; + // + // TxtInputHeader + // + this.TxtInputHeader.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtInputHeader.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtInputHeader.DetectUrls = false; + this.TxtInputHeader.EmptyText = "请填写请求时要发送的Header"; + this.TxtInputHeader.ForeColor = System.Drawing.Color.Black; + this.TxtInputHeader.Location = new System.Drawing.Point(2, 3); + this.TxtInputHeader.Name = "TxtInputHeader"; + this.TxtInputHeader.OnlyInputText = true; + this.TxtInputHeader.Size = new System.Drawing.Size(862, 83); + this.TxtInputHeader.TabIndex = 7; + this.TxtInputHeader.Text = ""; + this.TxtInputHeader.TextChanged += new System.EventHandler(this.TxtInputHeader_TextChanged); + this.TxtInputHeader.DoubleClick += new System.EventHandler(this.TxtPost_DoubleClick); + // + // groupBox2 + // + this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox2.Controls.Add(this.CbbReferer); + this.groupBox2.Controls.Add(this.CbbIp); + this.groupBox2.Controls.Add(this.label6); + this.groupBox2.Controls.Add(this.CbbUserAgent); + this.groupBox2.Controls.Add(this.label7); + this.groupBox2.Controls.Add(this.CbbContentType); + this.groupBox2.Controls.Add(this.label11); + this.groupBox2.Controls.Add(this.label8); + this.groupBox2.Location = new System.Drawing.Point(10, 90); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(887, 75); + this.groupBox2.TabIndex = 106; + this.groupBox2.TabStop = false; + this.groupBox2.Text = "高级配置"; + // + // CbbReferer + // + this.CbbReferer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CbbReferer.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbReferer.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbReferer.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbReferer.FormattingEnabled = true; + this.CbbReferer.Location = new System.Drawing.Point(360, 45); + this.CbbReferer.Name = "CbbReferer"; + this.CbbReferer.Size = new System.Drawing.Size(520, 24); + this.CbbReferer.TabIndex = 6; + // + // CbbIp + // + this.CbbIp.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbIp.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbIp.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbIp.FormattingEnabled = true; + this.CbbIp.Location = new System.Drawing.Point(86, 46); + this.CbbIp.Name = "CbbIp"; + this.CbbIp.Size = new System.Drawing.Size(205, 22); + this.CbbIp.TabIndex = 5; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(11, 50); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(41, 12); + this.label6.TabIndex = 4; + this.label6.Text = "代理IP"; + // + // CbbUserAgent + // + this.CbbUserAgent.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.CbbUserAgent.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbUserAgent.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbUserAgent.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbUserAgent.FormattingEnabled = true; + this.CbbUserAgent.Items.AddRange(new object[] { + "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)", + "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0", + "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT6.0)", + "Opera/9.27 (Windows NT 5.2; U; zh-cn)"}); + this.CbbUserAgent.Location = new System.Drawing.Point(360, 18); + this.CbbUserAgent.Name = "CbbUserAgent"; + this.CbbUserAgent.Size = new System.Drawing.Size(520, 22); + this.CbbUserAgent.TabIndex = 300; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(297, 24); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(59, 12); + this.label7.TabIndex = 2; + this.label7.Text = "UserAgent"; + // + // CbbContentType + // + this.CbbContentType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbContentType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbContentType.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbContentType.FormattingEnabled = true; + this.CbbContentType.Items.AddRange(new object[] { + "text/html", + "application/x-www-form-urlencoded", + "application/json", + "text/json"}); + this.CbbContentType.Location = new System.Drawing.Point(86, 18); + this.CbbContentType.Name = "CbbContentType"; + this.CbbContentType.Size = new System.Drawing.Size(205, 22); + this.CbbContentType.TabIndex = 1; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(299, 50); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(47, 12); + this.label11.TabIndex = 0; + this.label11.Text = "Referer"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(11, 24); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(71, 12); + this.label8.TabIndex = 0; + this.label8.Text = "ContentType"; + // + // groupBox1 + // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox1.Controls.Add(this.ChkNoPreview); + this.groupBox1.Controls.Add(this.ChkHtmlPreview); + this.groupBox1.Controls.Add(this.ChkGetPic); + this.groupBox1.Controls.Add(this.ChkJump); + this.groupBox1.Controls.Add(this.CbbWriteTimeout); + this.groupBox1.Controls.Add(this.label5); + this.groupBox1.Controls.Add(this.CbbTimeout); + this.groupBox1.Controls.Add(this.label4); + this.groupBox1.Controls.Add(this.CbbEncoding); + this.groupBox1.Controls.Add(this.label3); + this.groupBox1.Location = new System.Drawing.Point(10, 34); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(887, 51); + this.groupBox1.TabIndex = 105; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "基本配置"; + // + // ChkNoPreview + // + this.ChkNoPreview.AutoSize = true; + this.ChkNoPreview.Checked = true; + this.ChkNoPreview.CheckState = System.Windows.Forms.CheckState.Checked; + this.ChkNoPreview.Location = new System.Drawing.Point(610, 21); + this.ChkNoPreview.Name = "ChkNoPreview"; + this.ChkNoPreview.Size = new System.Drawing.Size(60, 16); + this.ChkNoPreview.TabIndex = 9; + this.ChkNoPreview.Text = "不预览"; + this.ChkNoPreview.UseVisualStyleBackColor = true; + this.ChkNoPreview.CheckedChanged += new System.EventHandler(this.ChkNoPreview_CheckedChanged); + // + // ChkHtmlPreview + // + this.ChkHtmlPreview.AutoSize = true; + this.ChkHtmlPreview.Checked = true; + this.ChkHtmlPreview.CheckState = System.Windows.Forms.CheckState.Checked; + this.ChkHtmlPreview.Enabled = false; + this.ChkHtmlPreview.Location = new System.Drawing.Point(676, 21); + this.ChkHtmlPreview.Name = "ChkHtmlPreview"; + this.ChkHtmlPreview.Size = new System.Drawing.Size(144, 16); + this.ChkHtmlPreview.TabIndex = 8; + this.ChkHtmlPreview.Text = "使用HTML结果进行预览"; + this.ChkHtmlPreview.UseVisualStyleBackColor = true; + // + // ChkGetPic + // + this.ChkGetPic.AutoSize = true; + this.ChkGetPic.Location = new System.Drawing.Point(532, 21); + this.ChkGetPic.Name = "ChkGetPic"; + this.ChkGetPic.Size = new System.Drawing.Size(72, 16); + this.ChkGetPic.TabIndex = 7; + this.ChkGetPic.Text = "获取图片"; + this.ChkGetPic.UseVisualStyleBackColor = true; + // + // ChkJump + // + this.ChkJump.AutoSize = true; + this.ChkJump.Location = new System.Drawing.Point(478, 21); + this.ChkJump.Name = "ChkJump"; + this.ChkJump.Size = new System.Drawing.Size(48, 16); + this.ChkJump.TabIndex = 6; + this.ChkJump.Text = "跳转"; + this.ChkJump.UseVisualStyleBackColor = true; + // + // CbbWriteTimeout + // + this.CbbWriteTimeout.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbWriteTimeout.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbWriteTimeout.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbWriteTimeout.FormattingEnabled = true; + this.CbbWriteTimeout.Items.AddRange(new object[] { + "100秒", + "50秒", + "30秒", + "20秒", + "10秒", + "5秒"}); + this.CbbWriteTimeout.Location = new System.Drawing.Point(393, 18); + this.CbbWriteTimeout.Name = "CbbWriteTimeout"; + this.CbbWriteTimeout.Size = new System.Drawing.Size(74, 22); + this.CbbWriteTimeout.TabIndex = 5; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(337, 24); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(53, 12); + this.label5.TabIndex = 4; + this.label5.Text = "写入超时"; + // + // CbbTimeout + // + this.CbbTimeout.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbTimeout.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbTimeout.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbTimeout.FormattingEnabled = true; + this.CbbTimeout.Items.AddRange(new object[] { + "100秒", + "50秒", + "30秒", + "20秒", + "10秒", + "5秒"}); + this.CbbTimeout.Location = new System.Drawing.Point(256, 18); + this.CbbTimeout.Name = "CbbTimeout"; + this.CbbTimeout.Size = new System.Drawing.Size(74, 22); + this.CbbTimeout.TabIndex = 3; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(197, 24); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(53, 12); + this.label4.TabIndex = 2; + this.label4.Text = "连接超时"; + // + // CbbEncoding + // + this.CbbEncoding.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbEncoding.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbEncoding.Font = new System.Drawing.Font("宋体", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbEncoding.FormattingEnabled = true; + this.CbbEncoding.Items.AddRange(new object[] { + "自动识别", + "utf-8", + "gb2312", + "gbk", + "ASCII", + "Unicode", + "iso-8859-1"}); + this.CbbEncoding.Location = new System.Drawing.Point(70, 18); + this.CbbEncoding.Name = "CbbEncoding"; + this.CbbEncoding.Size = new System.Drawing.Size(121, 22); + this.CbbEncoding.TabIndex = 1; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(11, 24); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(53, 12); + this.label3.TabIndex = 0; + this.label3.Text = "选择编码"; + // + // BtnRunHtml + // + this.BtnRunHtml.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnRunHtml.Location = new System.Drawing.Point(723, 6); + this.BtnRunHtml.Name = "BtnRunHtml"; + this.BtnRunHtml.Size = new System.Drawing.Size(82, 26); + this.BtnRunHtml.TabIndex = 104; + this.BtnRunHtml.Text = "执行"; + this.BtnRunHtml.UseVisualStyleBackColor = true; + this.BtnRunHtml.Click += new System.EventHandler(this.BtnRunHtml_Click); + // + // RbPost + // + this.RbPost.AutoSize = true; + this.RbPost.Location = new System.Drawing.Point(577, 10); + this.RbPost.Name = "RbPost"; + this.RbPost.Size = new System.Drawing.Size(47, 16); + this.RbPost.TabIndex = 103; + this.RbPost.Text = "Post"; + this.RbPost.UseVisualStyleBackColor = true; + // + // RbGet + // + this.RbGet.AutoSize = true; + this.RbGet.Checked = true; + this.RbGet.Location = new System.Drawing.Point(530, 10); + this.RbGet.Name = "RbGet"; + this.RbGet.Size = new System.Drawing.Size(41, 16); + this.RbGet.TabIndex = 102; + this.RbGet.TabStop = true; + this.RbGet.Text = "Get"; + this.RbGet.UseVisualStyleBackColor = true; + // + // TxtUrl + // + this.TxtUrl.BackColor = System.Drawing.Color.White; + this.TxtUrl.EmptyText = "请填写请求url"; + this.TxtUrl.ImeMode = System.Windows.Forms.ImeMode.Close; + this.TxtUrl.Location = new System.Drawing.Point(45, 6); + this.TxtUrl.MaxLength = 999999999; + this.TxtUrl.Multiline = false; + this.TxtUrl.Name = "TxtUrl"; + this.TxtUrl.OnlyNumeric = false; + this.TxtUrl.PasswordChar = '\0'; + this.TxtUrl.ReadOnly = false; + this.TxtUrl.SelectedText = ""; + this.TxtUrl.SelectionLength = 0; + this.TxtUrl.SelectionStart = 0; + this.TxtUrl.Size = new System.Drawing.Size(479, 23); + this.TxtUrl.TabIndex = 110; + this.TxtUrl.TextAlign = System.Windows.Forms.HorizontalAlignment.Left; + this.TxtUrl.ToolTip = ""; + this.TxtUrl.WordWrap = true; + this.TxtUrl.TextChanged2 += new System.EventHandler(this.TxtUrl_TextChanged2); + this.TxtUrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.TxtUrl_KeyDown); + this.TxtUrl.Leave += new System.EventHandler(this.TxtUrl_Leave); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(14, 10); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(23, 12); + this.label2.TabIndex = 101; + this.label2.Text = "Url"; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(185, 92); + this.menuRight1.SourceContent = this; + // + // BtnCtreateCShape + // + this.BtnCtreateCShape.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.BtnCtreateCShape.Location = new System.Drawing.Point(812, 6); + this.BtnCtreateCShape.Name = "BtnCtreateCShape"; + this.BtnCtreateCShape.Size = new System.Drawing.Size(82, 26); + this.BtnCtreateCShape.TabIndex = 111; + this.BtnCtreateCShape.Text = "生成代码"; + this.BtnCtreateCShape.UseVisualStyleBackColor = true; + this.BtnCtreateCShape.Click += new System.EventHandler(this.BtnCtreateCShape_Click); + // + // columnModel1 + // + this.columnModel1.Columns.AddRange(new XPTable.Models.Column[] { + this.ColUrl, + this.ColTitle}); + // + // ColUrl + // + this.ColUrl.Editable = false; + this.ColUrl.Tag = null; + this.ColUrl.Text = "网址"; + this.ColUrl.Width = 430; + // + // ColTitle + // + this.ColTitle.Editable = false; + this.ColTitle.Tag = null; + this.ColTitle.Text = "名称"; + this.ColTitle.Width = 200; + // + // table1 + // + this.table1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.table1.ColumnModel = this.columnModel1; + this.table1.EnableToolTips = true; + this.table1.FullRowSelect = true; + this.table1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.table1.Location = new System.Drawing.Point(45, 30); + this.table1.Name = "table1"; + this.table1.NoItemsText = "当前列表没有任何项"; + this.table1.Size = new System.Drawing.Size(657, 347); + this.table1.TabIndex = 112; + this.table1.TableModel = this.tableModel1; + this.table1.Text = "table1"; + this.table1.Visible = false; + this.table1.CellLostFocus += new XPTable.Events.CellFocusEventHandler(this.Table1_CellLostFocus); + this.table1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Table1_KeyDown); + this.table1.Leave += new System.EventHandler(this.Table1_Leave); + this.table1.MouseClick += new System.Windows.Forms.MouseEventHandler(this.table1_MouseClick); + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.timer1_Tick); + // + // FrmWebGet + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(909, 620); + this.Controls.Add(this.TxtUrl); + this.Controls.Add(this.BtnCtreateCShape); + this.Controls.Add(this.ChkUrlLower); + this.Controls.Add(this.tabControl2); + this.Controls.Add(this.groupBox3); + this.Controls.Add(this.groupBox2); + this.Controls.Add(this.groupBox1); + this.Controls.Add(this.BtnRunHtml); + this.Controls.Add(this.RbPost); + this.Controls.Add(this.RbGet); + this.Controls.Add(this.label2); + this.Controls.Add(this.table1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmWebGet"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "网页抓取工具"; + this.Load += new System.EventHandler(this.FrmWebGet_Load); + this.Click += new System.EventHandler(this.FrmWebGet_Click); + this.tabControl2.ResumeLayout(false); + this.tabPage3.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.tabPage12.ResumeLayout(false); + this.tabPage4.ResumeLayout(false); + this.tabPage5.ResumeLayout(false); + this.tabPage6.ResumeLayout(false); + this.tabPreview.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.tabControl1.ResumeLayout(false); + this.tabPage1.ResumeLayout(false); + this.tabPage2.ResumeLayout(false); + this.tabPage7.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.table1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox ChkUrlLower; + private System.Windows.Forms.TabControl tabControl2; + private System.Windows.Forms.TabPage tabPage3; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.RichTextBox RichHtml; + private System.Windows.Forms.TabPage tabPage12; + private ICSharpCode.TextEditor.TextEditorControl Te_Format; + private System.Windows.Forms.TabPage tabPage4; + private System.Windows.Forms.RichTextBox RichCookie; + private System.Windows.Forms.TabPage tabPage5; + private System.Windows.Forms.RichTextBox RichStatus; + private System.Windows.Forms.TabPage tabPage6; + private System.Windows.Forms.RichTextBox RichHeader; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.GroupBox groupBox2; + private ryControls.RyComboBox CbbReferer; + private ryControls.RyComboBox CbbIp; + private System.Windows.Forms.Label label6; + private ryControls.RyComboBox CbbUserAgent; + private System.Windows.Forms.Label label7; + private ryControls.RyComboBox CbbContentType; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.CheckBox ChkGetPic; + private System.Windows.Forms.CheckBox ChkJump; + private ryControls.RyComboBox CbbWriteTimeout; + private System.Windows.Forms.Label label5; + private ryControls.RyComboBox CbbTimeout; + private System.Windows.Forms.Label label4; + private ryControls.RyComboBox CbbEncoding; + private System.Windows.Forms.Label label3; + private ryControls.ButtonEx BtnRunHtml; + private System.Windows.Forms.RadioButton RbPost; + private System.Windows.Forms.RadioButton RbGet; + private ryControls.TextBoxEx2 TxtUrl; + private System.Windows.Forms.Label label2; + private ryProcessManager.hezuo.ContextMenuStripRichText contextMenuStripRichText1; + private ryProcessManager.hezuo.ContextMenuStripHighlightText contextMenuStripHighlightText1; + private ryPaiban.Model.MenuRight menuRight1; + private ryControls.ButtonEx BtnCtreateCShape; + private XPTable.Models.ColumnModel columnModel1; + private XPTable.Models.TableModel tableModel1; + private XPTable.Models.Table table1; + private XPTable.Models.TextColumn ColUrl; + private XPTable.Models.TextColumn ColTitle; + private System.Windows.Forms.Timer timer1; + private System.Windows.Forms.TabControl tabControl1; + private System.Windows.Forms.TabPage tabPage1; + private System.Windows.Forms.TabPage tabPage2; + private System.Windows.Forms.TabPage tabPage7; + private ryControls.Controls.RichTextBox2 TxtPost; + private ryControls.Controls.RichTextBox2 TxtCookie; + private ryControls.Controls.RichTextBox2 TxtInputHeader; + private System.Windows.Forms.TabPage tabPreview; + private ExtendedWebBrowser2.ExtendedWebBrowser extendedWebBrowser1; + private System.Windows.Forms.CheckBox ChkHtmlPreview; + private System.Windows.Forms.CheckBox ChkNoPreview; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmWebGet.cs b/Source/开发辅助工具/Tools/FrmWebGet.cs new file mode 100644 index 0000000..4d67295 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmWebGet.cs @@ -0,0 +1,771 @@ +using DotNet4.Utilities; +using ICSharpCode.TextEditor.Document; +using ryCommon; +using ryCommonDb; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using 开发辅助工具.Manager; + +namespace 开发辅助工具.Tools +{ + public partial class FrmWebGet : DockContent + { + public FrmWebGet() + { + InitializeComponent(); + LoadPram(); + tabControl2.SelectedTab = tabPage12; + } + private void LoadPram() + { + Te_Format.IsReadOnly = true; + CbbContentType.SelectedIndex = 0; + CbbUserAgent.SelectedIndex = 0; + CbbEncoding.SelectedIndex = 0; + CbbTimeout.SelectedIndex = CbbTimeout.Items.Count-2; + CbbWriteTimeout.SelectedIndex = CbbWriteTimeout.Items.Count - 2; + CbbUserAgent.Items.AddRange(new UserAgentInfo[]{ + new UserAgentInfo() { name = "QQ浏览器极速模式", useragent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6776.400 QQBrowser/10.3.2601.400" }, + new UserAgentInfo() { name = "360浏览器极速模式", useragent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" }, + new UserAgentInfo() { name = "QQ浏览器手机版", useragent = "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36" }, + new UserAgentInfo() { name = "微信", useragent = "Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380" }, + new UserAgentInfo() { name = "iPhone", useragent = "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1C28 Safari/419.3" }, + new UserAgentInfo() { name = "安卓", useragent = "Mozilla/5.0 (Linux; Android 4.1.1; Nexus 7 Build/JRO03S) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Safari/535.19" }, + }); + TxtPost.AddSeparatorMenu(); + TxtPost.AddMenu("将选定项进行Url编码(UTF8)", "").Click += new EventHandler((object sender2, EventArgs e2) => + { + RyWeb.QuickWeb web = new RyWeb.QuickWeb(); + TxtPost.SelectedText = web.UrlEncode(TxtPost.SelectedText, Encoding.UTF8); + }); + TxtPost.AddMenu("将选定项进行Url编码(GB2312)", "").Click += new EventHandler((object sender2, EventArgs e2) => + { + RyWeb.QuickWeb web = new RyWeb.QuickWeb(); + TxtPost.SelectedText = web.UrlEncode(TxtPost.SelectedText, Encoding.GetEncoding("GB2312")); + }); + TxtPost.AddSeparatorMenu(); + TxtPost.AddMenu("将选定项进行Url解码(UTF8)", "").Click += new EventHandler((object sender2, EventArgs e2) => + { + TxtPost.SelectedText = RyWeb.WebDecode.UrlDecode(TxtPost.SelectedText, Encoding.UTF8); + }); + TxtPost.AddMenu("将选定项进行Url解码(GB2312)", "").Click += new EventHandler((object sender2, EventArgs e2) => + { + TxtPost.SelectedText = RyWeb.WebDecode.UrlDecode(TxtPost.SelectedText, Encoding.GetEncoding("GB2312")); + }); + TxtPost.AddSeparatorMenu(); + TxtPost.AddMenu("查询选定项对应的时间", "unixtime").Click += new EventHandler((object sender2, EventArgs e2) => + { + MessageBox.Show("当前选中的时间是:" + RyDate.UnixTimeToDateTime(TxtPost.SelectedText).ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + }); + TxtPost.AddMenu("插入时间戳", "").Click += new EventHandler((object sender2, EventArgs e2) => + { + SuperDesign.Controls.FrmInsertUnixTime frm = new SuperDesign.Controls.FrmInsertUnixTime(); + frm.Icon = Icon; + var text = TxtPost.SelectedText; + if(text.Length>4 && text.IsInt()) + { + frm.dateTimePickerEX1.Value = RyDate.UnixTimeToDateTime(text); + } + if (frm.ShowDialog()==DialogResult.OK) + { + TxtPost.SelectedText = RyDate.DateTimeToUnixTime(frm.dateTimePickerEX1.Value).ToString(); + } + // MessageBox.Show("当前选中的时间是:" + RyDate.UnixTimeToDateTime(TxtPost.SelectedText).ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + }); + TxtPost.OnMenuOpening += TxtPost_OnMenuOpening; + } + + private void TxtPost_OnMenuOpening(object sender, CancelEventArgs e) + { + var item= TxtPost.GetMenuItem("unixtime"); + if(item!=null) + { + var text = TxtPost.SelectedText; + item.Visible = text.IsInt() && text.Length>4; + } + } + + private bool IsExit = false; + private bool IsRunning = false; + Thread th; + private void BtnRunHtml_Click(object sender, EventArgs e) + { + if (IsRunning) { + IsExit = true; + BtnRunHtml.Text = "停止中"; ; + if (th!=null && th.IsAlive) + { + th.Abort(); + } + return; + } + IsExit = false; + IsRunning = true; + BtnRunHtml.Text = "停止执行"; ; + #region 将当前设置赋值到查询 + this.RichHtml.Text = "正在获取数据..."; + Te_Format.Text = "正在获取数据..."; + this.RichCookie.Text = ""; + RichHeader.Text = ""; + RichStatus.Text = ""; + extendedWebBrowser1.LoadStrings(""); + if (TxtUrl.Text.IndexOfEx("//") == 0) + { + TxtUrl.Text = "http:" + TxtUrl.Text; + } + else if (TxtUrl.Text.IndexOfEx("://") == 0) + { + TxtUrl.Text = "http" + TxtUrl.Text; + } + else if (TxtUrl.Text.IndexOfEx("http") != 0) + { + TxtUrl.Text = "http://" + TxtUrl.Text.TrimStart('/'); + } + + string str = "get"; + if (RbGet.Checked) + { + str = "get"; + } + if (RbPost.Checked) + { + str = "post"; + } + HttpItem item = new HttpItem + { + URL = TxtUrl.Text.Trim(), + Method = str, + IsToLower = this.ChkUrlLower.Checked, + Cookie = this.TxtCookie.Text.Trim(), + Referer = this.CbbReferer.Text.Trim(), + Postdata = this.TxtPost.Text.Trim(), + Timeout = Convert.ToInt32(this.CbbTimeout.Text.Replace("秒", string.Empty).Trim()) * 0x3e8, + ReadWriteTimeout = Convert.ToInt32(this.CbbWriteTimeout.Text.Replace("秒", string.Empty).Trim()) * 0x3e8, + UserAgent = this.CbbUserAgent.Text, + ContentType = this.CbbContentType.Text, + Allowautoredirect = this.ChkJump.Checked, + ProtocolVersion = System.Net.HttpVersion.Version11, + ResultType = ChkGetPic.Checked ? ResultType.Byte : ResultType.String, + }; + if (TxtInputHeader.Text.Length > 0) + { + try + { + string[] item_header = TxtInputHeader.Text.Replace("\r", "").Split('\n'); + for (int i = 0; i < item_header.Length; i++) + { + item.Header.Add(item_header[i]); + //int iPos = item_header[i].LastIndexOf(":"); + //if (iPos > 0) + //{ + // var header_name = item_header[i].Substring(0, iPos); + // var header_value = item_header[i].Substring(iPos + 1); + // item.Header.Add(header_name, header_value); + //} + } + } + catch (Exception exception) + { + this.RichHtml.Text = exception.Message; + Te_Format.Text = ""; + tabControl2.SelectedIndex = 0; + return; + } + } + if (CbbUserAgent.SelectedIndex != -1) + { + if (CbbUserAgent.SelectedItem is UserAgentInfo) + { + item.UserAgent = ((UserAgentInfo)CbbUserAgent.SelectedItem).useragent; + } + } + if (!string.IsNullOrEmpty(this.CbbIp.Text.Trim())) + { + item.ProxyIp = this.CbbIp.Text.Trim(); + } + if (!this.CbbEncoding.Text.Contains("自动")) + { + item.Encoding = Encoding.GetEncoding(this.CbbEncoding.Text.Trim()); + } + #endregion + if (th != null && th.IsAlive) + { + th.Abort(); + } + th = new Thread(Start); + th.Start(); + void Start() + { + try + { + var http = new HttpHelper(); + DateTime dt = DateTime.Now; + var result = http.GetHtml(item); + DateTime dt_end = DateTime.Now; + _ = this.Invoke(new Action(() => + { + #region 将获得的结果显示出来 + if (result.Html.Length > 1024 * 1024 * 4) + { + this.RichHtml.Text = "获取失败,您要获取的网页超过4MB,暂时无法获取。"; + Te_Format.Text = "获取失败,您要获取的网页超过4MB,暂时无法获取。"; + } + else + { + if (result.StatusCode == System.Net.HttpStatusCode.Redirect) + { + if (!ChkJump.Checked) + { + switch (MessageBox.Show("当前Url需要跳转,是否勾选跳转重试获取?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + case DialogResult.Yes: + ChkJump.Checked = true; + IsRunning = false; + BtnRunHtml_Click(sender, e); + return; + } + } + } + RichHtml.Text = string.Empty; + if (this.ChkGetPic.Checked) + { + pictureBox1.Image = this.ByteArrayToImage(result.ResultByte); + RichHtml.Visible = false; + pictureBox1.Visible = true; + tabControl2.SelectedIndex = 0; + AddUrl("", TxtUrl.Text); + } + else + { + this.RichHtml.Text = result.Html; + if (Manager.Json.IsJson(result.Html)) + { + Te_Format.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy("JSON"); + Te_Format.Text = Manager.Json.ConvertJsonString(result.Html); + AddUrl("", TxtUrl.Text); + } + else + { + string[] _format_html = result.Html.Replace("\r", "").Split('\n'); + string _html = ""; + for (int i = 0; i < _format_html.Length; i++) + { + if (_format_html[i].Trim().Length == 0) + { + continue; + } + if (_html.Length > 0) { _html += "\r\n"; } + _html += _format_html[i]; + } + Te_Format.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy("HTML"); + Te_Format.Text = _html; + if (result.StatusCode == System.Net.HttpStatusCode.Redirect || result.StatusCode == System.Net.HttpStatusCode.OK) + { + string title = ""; + try + { + HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); + htmlDoc.LoadHtml(result.Html); + var anchors = htmlDoc.DocumentNode.SelectNodes("//title"); + if (anchors != null && anchors.Count > 0) + { + title = RyWeb.WebDecode.ConvertHtmlInner(anchors[0].InnerText); + } + } + catch { } + AddUrl(title, TxtUrl.Text); + } + } + this.RichHtml.Visible = true; + this.pictureBox1.Visible = false; + } + } + this.RichCookie.Text = result.Cookie; + var timespan = (dt_end - dt).TotalMilliseconds.ToInt(); + string timespan_str = ""; + if (timespan < 1000) { timespan_str = timespan + "毫秒"; } + else { timespan_str = timespan / 1000 + "秒" + timespan % 1000 + "毫秒"; } + this.RichStatus.Text = "StatusCode:" + result.StatusCode.ToString() + "\r\nStatusDescription:" + result.StatusDescription + "\r\n耗时:" + timespan_str; + this.RichHeader.Text = ""; + foreach (string str1 in result.Header.AllKeys) + { + string text = this.RichHeader.Text; + this.RichHeader.Text = text + str1 + ":" + result.Header[str1].ToString() + "\r\n"; + } + if (!ChkNoPreview.Checked) + { + if (ChkHtmlPreview.Checked) + { + if (!this.CbbEncoding.Text.Contains("自动")) + { + extendedWebBrowser1.LoadStrings(RichHtml.Text.Trim(), Encoding.GetEncoding(this.CbbEncoding.Text.Trim())); + } + else { extendedWebBrowser1.LoadStrings(RichHtml.Text.Trim(), Encoding.UTF8); } + //MessageBox.Show(extendedWebBrowser1.Document.Encoding); + //extendedWebBrowser1.Document.Encoding = Encoding.UTF8.BodyName; + } + else + { + if (RbGet.Checked) + { + extendedWebBrowser1.Navigate(TxtUrl.Text, null, null, TxtInputHeader.Text); + } + else + { + string strData = TxtPost.Text; + string strHeaders = "Content-Type: " + CbbContentType.Text + "\r\n" + TxtInputHeader.Text; + ASCIIEncoding AE = new ASCIIEncoding(); + byte[] bytePost = AE.GetBytes(strData); + //byte[] byteHeaders = AE.GetBytes(strHeaders); + extendedWebBrowser1.Navigate(TxtUrl.Text, null, bytePost, strHeaders); + } + } + } + #endregion + })); + } + catch (Exception exception) + { + this.Invoke(new Action(() => + { + if (IsExit) + { + this.RichHtml.Text = "用户中断执行"; + BtnRunHtml.Text = "执行"; + IsRunning = false; + } + else + { + this.RichHtml.Text = exception.Message; + } + Te_Format.Text = ""; + })); + } + this.Invoke(new Action(() => + { + BtnRunHtml.Text = "执行"; + IsRunning = false; + })); + } + + } + + private Image ByteArrayToImage(byte[] Bytes) + { + MemoryStream stream = new MemoryStream(Bytes); + return Image.FromStream(stream, true); + } + + private void TxtUrl_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Enter) + { + BtnRunHtml.PerformClick(); + } + else if (e.KeyCode == Keys.Down) + { + if (table1.Visible) + { + table1.TableModel.Selections.Clear(); + table1.TableModel.Selections.AddCells(0, 0, 0, columnModel1.Columns.Count - 1); + table1.Focus(); + } + } + } + + private void FrmWebGet_Load(object sender, EventArgs e) + { + contextMenuStripHighlightText1.AddSeparatorMenu(); + contextMenuStripHighlightText1.AddMenu("将选中的内容作为Json分析", "").Click += AnalyJson_Click; + for (int i = 0; i < this.Controls.Count; i++) + { + switch (this.Controls[i]) + { + case GroupBox gb: + gb.Click += Gb_Click; + break; + } + } + } + + private void Gb_Click(object sender, EventArgs e) + { + table1.Visible = false; + //RbGet.Focus(); + switch ((this.DockPanel.FindForm())) + { + case Form1 frm: + frm.HideDownList(); + break; + } + } + + private void AnalyJson_Click(object sender, EventArgs e) + { + ContextMenuStrip menu =(ContextMenuStrip) (((ToolStripMenuItem)sender).Owner); + switch(menu.SourceControl) + { + case ICSharpCode.TextEditor.TextEditorControl rich_txt: + var SelectedText= rich_txt.ActiveTextAreaControl.SelectionManager.SelectedText; + if (SelectedText == "") { SelectedText = rich_txt.Text; } + //if (Manager.Json.IsJson(SelectedText)) + { + FrmJson frm = new FrmJson(); + frm.Show(this.DockPanel); + frm.LoadJson(SelectedText); + } + break; + case RichTextBox rich_txt2: + var SelectedText2 = rich_txt2.SelectedText; + if (SelectedText2 == "") { SelectedText2 = rich_txt2.Text; } + //if (Manager.Json.IsJson(SelectedText2)) + { + FrmJson frm = new FrmJson(); + frm.Show(this.DockPanel); + frm.LoadJson(SelectedText2); + } + break; + } + } + + private void BtnCtreateCShape_Click(object sender, EventArgs e) + { + string str = "get"; + if (RbGet.Checked) + { + str = "get"; + } + if (RbPost.Checked) + { + str = "post"; + } + HttpItem item = new HttpItem + { + URL = TxtUrl.Text.Trim(), + Method = str, + IsToLower = this.ChkUrlLower.Checked, + Cookie = this.TxtCookie.Text.Trim(), + Referer = this.CbbReferer.Text.Trim(), + Postdata = this.TxtPost.Text.Trim(), + Timeout = Convert.ToInt32(this.CbbTimeout.Text.Replace("秒", string.Empty).Trim()) * 0x3e8, + ReadWriteTimeout = Convert.ToInt32(this.CbbWriteTimeout.Text.Replace("秒", string.Empty).Trim()) * 0x3e8, + UserAgent = this.CbbUserAgent.Text, + ContentType = this.CbbContentType.Text, + Allowautoredirect = this.ChkJump.Checked, + ResultType = ChkGetPic.Checked ? ResultType.Byte : ResultType.String + }; + if (CbbUserAgent.SelectedIndex != -1) + { + if (CbbUserAgent.SelectedItem is UserAgentInfo) + { + item.UserAgent = ((UserAgentInfo)CbbUserAgent.SelectedItem).useragent; + } + } + if (!string.IsNullOrEmpty(this.CbbIp.Text.Trim())) + { + item.ProxyIp = this.CbbIp.Text.Trim(); + } + if (!this.CbbEncoding.Text.Contains("自动")) + { + item.Encoding = Encoding.GetEncoding(this.CbbEncoding.Text.Trim()); + } + this.RichHtml.Visible = true; + this.pictureBox1.Visible = false; + //this.SetHttpItem(); + StringBuilder builder = new StringBuilder(); + builder.Append(" HttpHelper http = new HttpHelper();\r\n"); + builder.Append(" HttpItem item = new HttpItem()\r\n"); + builder.Append(" {\r\n"); + builder.Append(" URL = \"" + item.URL + "\",//URL 必需项 \r\n"); + if (!this.CbbEncoding.Text.Trim().Contains("自动")) + { + builder.Append(" Encoding = System.Text.Encoding.GetEncoding( \"" + this.CbbEncoding.Text.Trim() + "\"),//URL 可选项 默认为Get \r\n"); + } + builder.Append(" Method = \"" + item.Method + "\",//URL 可选项 默认为Get \r\n"); + builder.Append(" IsToLower = " + item.IsToLower.ToString().ToLower() + ",//得到的HTML代码是否转成小写 可选项默认转小写 \r\n"); + builder.Append(" Cookie = \"" + item.Cookie + "\",//字符串Cookie 可选项 \r\n"); + builder.Append(" Referer =\"" + item.Referer + "\",//来源URL 可选项 \r\n"); + builder.Append(" Postdata = \"" + item.Postdata + "\",//Post数据 可选项GET时不需要写 \r\n"); + builder.Append(" Timeout = " + item.Timeout + ",//连接超时时间 可选项默认为100000 \r\n"); + builder.Append(" ReadWriteTimeout = " + item.ReadWriteTimeout + ",//写入Post数据超时时间 可选项默认为30000 \r\n"); + builder.Append(" UserAgent = \"" + item.UserAgent + "\",//用户的浏览器类型,版本,操作系统 可选项有默认值 \r\n"); + builder.Append(" ContentType = \"" + item.ContentType + "\",//返回类型 可选项有默认值 \r\n"); + builder.Append(" Allowautoredirect = " + item.Allowautoredirect.ToString().ToLower() + ",//是否根据301跳转 可选项 \r\n"); + builder.Append(" //CerPath = \"d:\\123.cer\",//证书绝对路径 可选项不需要证书时可以不写这个参数 \r\n"); + builder.Append(" //Connectionlimit = 1024,//最大连接数 可选项 默认为1024 \r\n"); + builder.Append(" ProxyIp = \"" + item.ProxyIp + "\",//代理服务器ID 可选项 不需要代理 时可以不设置这三个参数 \r\n"); + builder.Append(" //ProxyPwd = \"123456\",//代理服务器密码 可选项 \r\n"); + builder.Append(" //ProxyUserName = \"administrator\",//代理服务器账户名 可选项 \r\n"); + builder.Append(" ResultType = " + (ChkGetPic.Checked ? "ResultType.Byte" : "ResultType.String") + "\r\n"); + builder.Append(" };\r\n"); + builder.Append(""); + builder.Append(" HttpResult result = http.GetHtml(item);\r\n"); + builder.Append(" string html = result.Html;\r\n"); + builder.Append(" string cookie = result.Cookie;\r\n"); + builder.Append(" \r\n\r\n"); + builder.Append(" /// \r\n"); + builder.Append(" /// 字节数组生成图片\r\n"); + builder.Append(" /// \r\n"); + builder.Append(" /// 字节数组\r\n"); + builder.Append(" /// 图片\r\n"); + builder.Append(" private Image byteArrayToImage(byte[] Bytes)\r\n"); + builder.Append(" {\r\n"); + builder.Append(" MemoryStream ms = new MemoryStream(Bytes);\r\n"); + builder.Append(" return Bitmap.FromStream(ms,true);\r\n"); + builder.Append(" }\r\n"); + RichHtml.Text = builder.ToString(); + Te_Format.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy("C#"); + Te_Format.Text= builder.ToString(); + + } + public void AddUrl(string title,string url) + { + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + var _title = title; + if(_title == "") + { + var mode = url.Replace("?","&").GetStr("&a=",""); + if (mode.IndexOf("&") > 0) { mode = mode.GetStr("", "&"); } + if(mode.Length==0) + { + mode = url.Replace("?", "&").GetStr("&Action=", ""); + if (mode.IndexOf("&") > 0) { mode = mode.GetStr("", "&"); } + } + _title = mode; + } + RyQuickSQL mySQL = new RyQuickSQL("Urls"); + mySQL.AddField("Name", _title); + mySQL.AddField("Url", url); + mySQL.AddField("Cookie", TxtCookie.Text); + mySQL.AddField("Postdata", TxtPost.Text); + mySQL.AddField("Header", TxtInputHeader.Text); + mySQL.AddField("Method", RbGet.Checked?"get":"post"); + mySQL.AddField("Referer", CbbReferer.Text); + mySQL.AddField("ContentType", CbbContentType.Text); + mySQL.AddField("Encoding", CbbEncoding.Text); + DataSet ds = db.ReadData("select * from Urls where Url=@Url", mySQL); + if (mydb.HaveData(ds)) + { + DataRow reader = ds.Tables[0].Rows[0]; + #region 读取信息 + mySQL.AddFieldCalc("ClickCount", "ClickCount+1");//点击次数 + mySQL.AddField("editTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetUpdateSQL() + " where id=" + reader["id"].ToString(), mySQL); + #endregion + } + else + { + mySQL.AddField("ClickCount",1); + mySQL.AddField("editTime", DateTime.Now); + mySQL.AddField("addTime", DateTime.Now); + db.ExecuteNonQuery(mySQL.GetInsertSQL(),mySQL); + } + } + db.Free(); + } + bool proc_use = false; + private void ClickItem(bool run = false) + { + if (table1.SelectedItems.Length > 0) + { + table1.Visible = false; + Application.DoEvents(); + proc_use = true; + string url = table1.SelectedItems[0].Cells[ColUrl.Index].Text; + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + db.AddParameter("url", url); + DataSet ds = db.ReadData("select * from Urls where Url=@url", db.GetParameter()); + if(mydb.HaveData(ds)) + { + DataRow row = ds.Tables[0].Rows[0]; + SetValueByRich(TxtCookie,"Cookie"); + SetValueByRich(TxtPost, "Postdata"); + SetValueByRich(TxtInputHeader, "Header"); + SetValue2(CbbReferer, "Referer"); + SetValue2(CbbContentType, "ContentType"); + SetValue2(CbbEncoding, "Encoding"); + if (row["Method"].ToString().Length>0) + { + if(row["Method"].ToString()=="post") + { + RbPost.Checked = true; + } + else { RbGet.Checked = true; } + } + void SetValueByRich(ryControls.Controls.RichTextBox2 txt, string Field) + { + if (row[Field].ToString().Length > 0) { txt.Text = row[Field].ToString(); } + } + void SetValue2(ryControls.RyComboBox cbb, string Field) + { + if (row[Field].ToString().Length>0) { cbb.Text = row[Field].ToString(); } + } + } + db.Free(); + } + TxtUrl.Text = url; + if (run) + { BtnRunHtml.PerformClick(); } + proc_use = false; + } + else { table1.Visible = false; } + } + private void Table1_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Up) + { + if (table1.SelectedItems.Length > 0 && table1.SelectedItems[0].Index == 0) + { + table1.TableModel.Selections.Clear(); + TxtUrl.Select(); + //rySearch1.Select(); + } + } + else if (e.KeyCode == Keys.Enter) + { + ClickItem(); + } + } + + private void TxtUrl_TextChanged2(object sender, EventArgs e) + { + if (proc_use) { return; } + string sql_where = ""; + if (TxtUrl.Text != "") { sql_where = " where (Name like @SearchText or Url like @SearchText)"; } + #region 重新载入数据 + tableModel1.Rows.Clear(); + tableModel1.Selections.Clear(); + DataProvider mydb = new DataProvider(); + IDbInterface db = Itrycn_Db.CreateDataProvider(Itrycn_Db.dataType); + if (db.ConnDb(Itrycn_Db.User_SQLConn) == 1) + { + db.AddParameter("SearchText", "%" + TxtUrl.Text + "%"); + DataSet ds = db.ReadData("select * from Urls" + sql_where+ " order by ClickCount desc,editTime desc", db.GetParameter()); + for (int i = 0; i < ds.Tables[0].Rows.Count; i++) + { + DataRow row = ds.Tables[0].Rows[i]; + DateTime editTime = row["editTime"].ToDateTime(); + XPTable.Models.Row itemList = new XPTable.Models.Row() + { + Tag = row["id"].ToString() + }; + //需要修改此处 + itemList.Cells.Add(new XPTable.Models.Cell(row["Url"].ToString()));//示例 + itemList.Cells.Add(new XPTable.Models.Cell(row["Name"].ToString())); + if (editTime >= DateTime.Now.AddMinutes(-10)) + { + tableModel1.Rows.Insert(0,itemList); + } + else + { + tableModel1.Rows.Add(itemList); + } + } + db.Free(); + table1.Visible = tableModel1.Rows.Count != 0; + table1.BringToFront(); + } + #endregion + } + + private void FrmWebGet_Click(object sender, EventArgs e) + { + table1.Visible = false; + } + + private void Table1_CellLostFocus(object sender, XPTable.Events.CellFocusEventArgs e) + { + if (e.Row == -1) { table1.Visible = false; } + } + + private void Table1_Leave(object sender, EventArgs e) + { + if(!TxtUrl.Focused) + { + table1.Visible = false; + } + } + + private void TxtUrl_Leave(object sender, EventArgs e) + { + if (!table1.Focused) + { + table1.Visible = false; + } + } + + + private void timer1_Tick(object sender, EventArgs e) + { + } + + private void table1_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Left) + { + ClickItem(); + } + } + + private void TxtPost_DoubleClick(object sender, EventArgs e) + { + ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender; + 开发辅助工具.Controls.FrmText frm = new Controls.FrmText + { + Icon = Icon + }; + frm.richTextBox1.Text = txt.Text; + if (frm.ShowDialog() == DialogResult.OK) + { + txt.Text = frm.richTextBox1.Text; + } + } + + private void TxtPost_TextChanged(object sender, EventArgs e) + { + if (TxtPost.Text != "") { tabPage1.Text = "Post数据(有数据)"; } + else { tabPage1.Text = "Post数据"; } + } + + private void TxtCookie_TextChanged(object sender, EventArgs e) + { + if (TxtCookie.Text != "") { tabPage2.Text = "Cookie(有数据)"; } + else { tabPage2.Text = "Cookie"; } + } + + private void TxtInputHeader_TextChanged(object sender, EventArgs e) + { + if (TxtInputHeader.Text != "") { tabPage7.Text = "Header(有数据)"; } + else { tabPage7.Text = "Header"; } + } + + private void ChkNoPreview_CheckedChanged(object sender, EventArgs e) + { + ChkHtmlPreview.Enabled = !ChkNoPreview.Checked; + } + } + public class UserAgentInfo + { + public string name = ""; + public string useragent = ""; + public override string ToString() + { + return name; + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmWebGet.resx b/Source/开发辅助工具/Tools/FrmWebGet.resx new file mode 100644 index 0000000..dcc6f19 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmWebGet.resx @@ -0,0 +1,215 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 627, 25 + + + 33, 18 + + + 842, 25 + + + 269, 25 + + + 410, 25 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAA + AACBemwQgXpsiIF6bO+Bemz/gXps+4F6bPqBemz6gXps+oF6bPqBemz6gXps+oF6bPqBemz6gXps+oF6 + bPqBemz6gXps+oF6bPqBemz6gXps+oF6bPqBemz6gXps/4F6bPmBemyqgXpsIYF6bACBemwAAAAAAAAA + AAAAAAAAAAAAAIF6bImBemz8gXps14F6bHmBemxTgXpsUIF6bFCBemxQgXpsUIF6bFCBemxQgXpsUIF6 + bFCBemxQgXpsUIF6bFCBemxQgXpsUIF6bFCBemxQgXpsUIF6bFCBemxpgXpswIF6bP+BemyogXpsCoF6 + bAAAAAAAAAAAAAAAAAAAAAAAgXps74F6bNeBemwvgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6 + bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwSgXpssIF6 + bPKBemwygXpsAIF6bACBemwAgXpsAIF6bACBemz/gXpseIF6bACBemwAgXpsAIF6bACBemwXgXpsNIF6 + bDeBemw2gXpsNoF6bDaBemw2gXpsNoF6bDaBemw2gXpsNoF6bDaBemw2gXpsNoF6bDaBemw2gXpsN4F6 + bDKBemxzgXps9YF6bG6BemwzgXpsN4F6bCiBemwFgXpsAIF6bPuBemxTgXpsAIF6bACBemwAgXpsVIF6 + bM+BemzwgXps8oF6bPGBemzxgXps8oF6bPKBemzxgXps8YF6bPKBemzxgXps8YF6bPKBemzygXps8oF6 + bPKBemzxgXps8oF6bPOBemz+gXps9oF6bPKBemzygXps54F6bJiBemwagXps+oF6bFCBemwAgXpsAIF6 + bDKBemzlgXps/4F6bP6Bemz1gXps/YF6bP+Bemz2gXps+oF6bP+Bemz+gXps9YF6bP6Bemz/gXps+oF6 + bPiBemz8gXps9oF6bP2Bemz1gXps/oF6bPWBemzxgXps8YF6bPKBemz+gXps/4F6bKGBemz6gXpsUYF6 + bACBemwAgXpsdIF6bP+Bemz/gXps5IF6bFyBemzagXps/oF6bHOBemysgXps/4F6bOCBemxcgXps3oF6 + bP+BemyngXpsiIF6bKiBemxcgXpsxYF6bGiBemzqgXpsbYF6bEGBemxMgXpsWoF6bN+Bemz/gXps84F6 + bPqBemxRgXpsAIF6bACBemyFgXps/4F6bP+BemzcgXpsLoF6bNOBemz/gXpsTIF6bJSBemz/gXps2IF6 + bC2BemzUgXps/4F6bI6BemxhgXpsYoF6bBGBemyWgXpsP4F6bOOBemxEgXpsgoF6bNWBemzVgXps94F6 + bP+Bemz/gXps+oF6bFGBemwAgXpsAIF6bISBemz/gXps/4F6bN6BemwngXpsboF6bIeBemwpgXpsmIF6 + bP+BemzYgXpsMIF6bNWBemz/gXpskIF6bFCBemxJgXpsP4F6bGWBemxCgXps5IF6bEaBemyjgXps/4F6 + bP+Bemz/gXps/4F6bP+Bemz6gXpsUYF6bACBemwAgXpshIF6bP+Bemz/gXps3oF6bCeBemxqgXpsgoF6 + bCeBemyYgXps/4F6bNyBemwxgXps2IF6bP+BemySgXpsK4F6bFKBemyXgXpsMYF6bD2BemzkgXpsRoF6 + bKGBemz/gXps/4F6bP+Bemz/gXps/4F6bPqBemxRgXpsAIF6bACBemyFgXps/4F6bP+BemzcgXpsLYF6 + bNKBemz/gXpsS4F6bJOBemzMgXpsi4F6bByBemyJgXpsyoF6bJCBemwAgXpsd4F6bNeBemwZgXpsLYF6 + bOSBemxDgXpsn4F6bP+Bemz/gXps/4F6bP+Bemz/gXps+oF6bFGBemwAgXpsAIF6bIKBemz/gXps/4F6 + bOqBemx8gXps4YF6bP6BemyPgXpsvIF6bJyBemxegXpsX4F6bF6BemyYgXpsuYF6bF2BemzEgXps+IF6 + bH2Bemx6gXps74F6bJKBemzIgXps/4F6bP+Bemz/gXps/4F6bP6Bemz6gXpsUYF6bACBemwAgXpsXIF6 + bP2Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP6Bemz+gXps/oF6bP6Bemz/gXps/4F6 + bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps3IF6bPqBemxRgXpsAIF6 + bACBemwUgXpss4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6 + bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bP+Bemz/gXps/4F6bOuBemxhgXps+oF6 + bFGBemwAgXpsAIF6bACBemwZgXpsdoF6bKmBemywgXpssYF6bLGBemyxgXpssYF6bLGBemyxgXpssYF6 + bLGBemyxgXpssYF6bLGBemyxgXpssYF6bLGBemywgXpsvIF6bPWBemzHgXpssIF6bLCBemyYgXpsRIF6 + bAKBemz6gXpsUYF6bACBemwAgXpsAIF6bACBemwAgXpsDYF6bAuBemwEgXpsBIF6bASBemwEgXpsBIF6 + bASBemwEgXpsBIF6bASBemwEgXpsBIF6bASBemwEgXpsBIF6bAKBemwogXps34F6bEuBemwAgXpsBIF6 + bACBemwAgXpsAIF6bPqBemxRgXpsAAAAAACBemwAgXpsAIF6bACBemxmgXpsW4F6bACBemwAgXpsAIF6 + bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6bCSBemzegXpsSIF6 + bACBemwAgXpsAIF6bACBemwAgXps+oF6bFGBemwAgXpsAIF6bACBemwAgXpsGIF6bG2BemyHgXpsAIF6 + bBqBemwKgXpsAIF6bACBemwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBemwAgXpsJYF6 + bN6BemxIgXpsAAAAAAAAAAAAAAAAAAAAAACBemz6gXpsUYF6bACBemwAgXpsA4F6bGCBemykgXpsWYF6 + bJuBemwAgXpsb4F6bJmBemwWgXpsAIF6bACBemwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF6 + bACBemwlgXps3oF6bEiBemwAAAAAAAAAAAAAAAAAAAAAAIF6bPqBemxRgXpsAIF6bA2BemyCgXps+YF6 + bLqBemw9gXpsq4F6bAaBemxrgXps/4F6bLuBemwtgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6 + bACBemwAgXpsAIF6bCSBemzegXpsSIF6bAAAAAAAAAAAAAAAAAAAAAAAgXps+oF6bE+BemwagXpsqIF6 + bP6BemzAgXpsNoF6bB+BemyygXpsF4F6bBOBemyKgXps9oF6bNmBemxKgXpsAYF6bACBemwAgXpsCIF6 + bBCBemwQgXpsEIF6bBCBemwOgXpsMoF6bOCBemxIgXpsAAAAAAAAAAAAAAAAAAAAAACBemz6gXpsTYF6 + bHeBemz8gXpsjoF6bBWBemwAgXpsD4F6bLCBemwqgXpsAIF6bAOBemxTgXps4YF6bMqBemwOgXpsBoF6 + bGCBemy7gXps0YF6bM+BemzOgXpszoF6bMyBemzUgXps9YF6bEiBemwAAAAAAAAAAAAAAAAAAAAAAIF6 + bPqBemxNgXpsfIF6bPqBemx2gXpsCoF6bACBemwFgXpspIF6bEGBemwAgXpsAIF6bECBemzZgXpsz4F6 + bA+BemxpgXps+oF6bOmBemyVgXpsboF6bGyBemxpgXpskoF6bPqBemzWgXpsJoF6bAAAAAAAAAAAAAAA + AAAAAAAAgXps+oF6bE+BemwmgXpsvIF6bPyBemyrgXpsKoF6bACBemyRgXpsWoF6bAqBemx2gXps7YF6 + bOWBemxZgXpsEoF6bM2BemzjgXpsQIF6bACBemwAgXpsAIF6bBuBemy8gXps4IF6bECBemwAgXpsAAAA + AAAAAAAAAAAAAAAAAACBemz6gXpsUYF6bACBemwXgXpsmIF6bP+Bemy2gXpsBYF6bHiBemxygXpsYoF6 + bP+BemzKgXpsO4F6bACBemwegXps4oF6bIKBemwAgXpsAIF6bACBemwagXpst4F6bOqBemxMgXpsAIF6 + bACBemwAAAAAAAAAAAAAAAAAAAAAAIF6bPqBemxRgXpsAIF6bACBemwIgXpsdYF6bLOBemwJgXpsXYF6 + bIyBemxxgXpsqYF6bCCBemwAgXpsAIF6bB+BemzdgXpsVYF6bACBemwAgXpsFYF6bK6BemzvgXpsWYF6 + bACBemwAgXpsAAAAAAAAAAAAAAAAAAAAAAAAAAAAgXps+oF6bFCBemwAgXpsAIF6bACBemwCgXpsKYF6 + bAOBemxEgXpso4F6bCWBemwPgXpsAIF6bACBemwAgXpsH4F6bNyBemxRgXpsAIF6bBCBemykgXps9IF6 + bGaBemwAgXpsAIF6bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBemz7gXpsU4F6bACBemwAgXpsAIF6 + bACBemwAgXpsAIF6bCuBemymgXpsDIF6bACBemwAgXpsAIF6bACBemwfgXps3IF6bFCBemwIgXpsmoF6 + bPeBemx0gXpsAoF6bACBemwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIF6bP+Bemx4gXpsAIF6 + bACBemwAAAAAAAAAAACBemwAgXpsB4F6bCaBemwFgXpsAAAAAAAAAAAAgXpsAIF6bB+BemzbgXpsW4F6 + bIuBemz5gXpsgYF6bAWBemwAgXpsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgXps74F6 + bNeBemwvgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsAIF6bACBemwAgXpsG4F6 + bNyBemzKgXps9oF6bI+BemwIgXpsAIF6bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AACBemyJgXps/IF6bNeBemx6gXpsU4F6bFCBemxQgXpsUIF6bFCBemxQgXpsUIF6bFCBemxQgXpsUIF6 + bE6BemxlgXps6oF6bP+BemybgXpsDYF6bACBemwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIF6bBCBemyIgXps74F6bP+Bemz7gXps+oF6bPqBemz6gXps+oF6bPqBemz6gXps+oF6 + bPqBemz6gXps+oF6bPuBemz/gXpsuIF6bBaBemwAgXpsAIF6bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAf4PAAD+DwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAA + AB8AAAA/AAAAfwYMAP8AAAH/AAAD/wAAA/8= + + + + 537, 25 + + \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmXpath.Designer.cs b/Source/开发辅助工具/Tools/FrmXpath.Designer.cs new file mode 100644 index 0000000..708c1b1 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmXpath.Designer.cs @@ -0,0 +1,198 @@ +namespace 开发辅助工具.Tools +{ + partial class FrmXpath + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmXpath)); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.panelEx1 = new ryControls.PanelEx(); + this.textEditorControl1 = new ICSharpCode.TextEditor.TextEditorControl(); + this.contextMenuStripHighlightText1 = new ryProcessManager.hezuo.ContextMenuStripHighlightText(); + this.RySearchXpath = new ryControls.rySearch(); + this.label1 = new System.Windows.Forms.Label(); + this.CbbXMLType = new ryControls.RyComboBox(); + this.menuRight1 = new ryPaiban.Model.MenuRight(this.components); + this.TxtXML = new ryControls.Controls.RichTextBox2(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.panelEx1.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.splitContainer1.Location = new System.Drawing.Point(10, 33); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.TxtXML); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.panelEx1); + this.splitContainer1.Size = new System.Drawing.Size(875, 475); + this.splitContainer1.SplitterDistance = 145; + this.splitContainer1.SplitterWidth = 2; + this.splitContainer1.TabIndex = 13; + // + // panelEx1 + // + this.panelEx1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panelEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(213)))), ((int)(((byte)(216)))), ((int)(((byte)(223))))); + this.panelEx1.Controls.Add(this.textEditorControl1); + this.panelEx1.Location = new System.Drawing.Point(2, 3); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Padding = new System.Windows.Forms.Padding(2); + this.panelEx1.RoundeStyle = ryControls.RoundStyle.None; + this.panelEx1.Size = new System.Drawing.Size(869, 326); + this.panelEx1.TabIndex = 8; + this.panelEx1.TileBackColor = System.Drawing.Color.White; + // + // textEditorControl1 + // + this.textEditorControl1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.textEditorControl1.ContextMenuStrip = this.contextMenuStripHighlightText1; + this.textEditorControl1.IsReadOnly = false; + this.textEditorControl1.Location = new System.Drawing.Point(5, 5); + this.textEditorControl1.Name = "textEditorControl1"; + this.textEditorControl1.Size = new System.Drawing.Size(859, 316); + this.textEditorControl1.TabIndex = 5; + // + // contextMenuStripHighlightText1 + // + this.contextMenuStripHighlightText1.Name = "contextMenuStripHighlightText1"; + this.contextMenuStripHighlightText1.Size = new System.Drawing.Size(101, 186); + // + // RySearchXpath + // + this.RySearchXpath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.RySearchXpath.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(236)))), ((int)(((byte)(239)))), ((int)(((byte)(244))))); + this.RySearchXpath.BaseColor = System.Drawing.Color.FromArgb(((int)(((byte)(51)))), ((int)(((byte)(76)))), ((int)(((byte)(95))))); + this.RySearchXpath.EmptyText = ""; + this.RySearchXpath.Location = new System.Drawing.Point(179, 3); + this.RySearchXpath.Name = "RySearchXpath"; + this.RySearchXpath.Size = new System.Drawing.Size(707, 25); + this.RySearchXpath.TabIndex = 12; + this.RySearchXpath.OnSearch += new System.EventHandler(this.RySearchXpath_OnSearch); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(102, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(71, 12); + this.label1.TabIndex = 11; + this.label1.Text = "Xpath表达式"; + // + // CbbXMLType + // + this.CbbXMLType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.CbbXMLType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.CbbXMLType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.CbbXMLType.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.CbbXMLType.FormattingEnabled = true; + this.CbbXMLType.Items.AddRange(new object[] { + "XML内容", + "Html内容"}); + this.CbbXMLType.Location = new System.Drawing.Point(11, 3); + this.CbbXMLType.Name = "CbbXMLType"; + this.CbbXMLType.Size = new System.Drawing.Size(85, 24); + this.CbbXMLType.TabIndex = 10; + // + // menuRight1 + // + this.menuRight1.Name = "menuRight1"; + this.menuRight1.Size = new System.Drawing.Size(173, 48); + this.menuRight1.SourceContent = this; + // + // TxtXML + // + this.TxtXML.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.TxtXML.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.TxtXML.DetectUrls = false; + this.TxtXML.EmptyText = "待匹配的XML或HTML内容"; + this.TxtXML.ForeColor = System.Drawing.Color.Black; + this.TxtXML.Location = new System.Drawing.Point(3, 3); + this.TxtXML.Name = "TxtXML"; + this.TxtXML.OnlyInputText = true; + this.TxtXML.Size = new System.Drawing.Size(868, 139); + this.TxtXML.TabIndex = 32; + this.TxtXML.Text = ""; + this.TxtXML.DoubleClick += new System.EventHandler(this.TxtXML_DoubleClick); + // + // FrmXpath + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(894, 509); + this.Controls.Add(this.splitContainer1); + this.Controls.Add(this.RySearchXpath); + this.Controls.Add(this.label1); + this.Controls.Add(this.CbbXMLType); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FrmXpath"; + this.TabPageContextMenuStrip = this.menuRight1; + this.Text = "Xpath测试工具"; + this.Load += new System.EventHandler(this.FrmXpath_Load); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.panelEx1.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private ryControls.PanelEx panelEx1; + private ICSharpCode.TextEditor.TextEditorControl textEditorControl1; + private ryControls.rySearch RySearchXpath; + private System.Windows.Forms.Label label1; + private ryControls.RyComboBox CbbXMLType; + private ryProcessManager.hezuo.ContextMenuStripHighlightText contextMenuStripHighlightText1; + private ryPaiban.Model.MenuRight menuRight1; + private ryControls.Controls.RichTextBox2 TxtXML; + } +} \ No newline at end of file diff --git a/Source/开发辅助工具/Tools/FrmXpath.cs b/Source/开发辅助工具/Tools/FrmXpath.cs new file mode 100644 index 0000000..7d39598 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmXpath.cs @@ -0,0 +1,88 @@ +using HtmlAgilityPack; +using ICSharpCode.TextEditor.Document; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; + +namespace 开发辅助工具.Tools +{ + public partial class FrmXpath : DockContent + { + public FrmXpath() + { + InitializeComponent(); + CbbXMLType.SelectedIndex = 0; + textEditorControl1.IsReadOnly = true; + } + + private void RySearchXpath_OnSearch(object sender, EventArgs e) + { + string text = ""; + string format = "XML"; + try + { + if (CbbXMLType.SelectedIndex == 0) + { + format = "XML"; + System.Xml.XmlDocument xml = new System.Xml.XmlDocument(); + xml.LoadXml(TxtXML.Text); + var node = xml.SelectNodes(RySearchXpath.Text); + if (node != null) + { + for (int i = 0; i < node.Count; i++) + { + if (text != "") { text += "\r\n\r\n"; } + text += node[i].OuterXml; + } + } + } + else if (CbbXMLType.SelectedIndex == 1) + { + format = "HTML"; + HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); + htmlDoc.LoadHtml(TxtXML.Text); + HtmlNodeCollection anchors = htmlDoc.DocumentNode.SelectNodes(RySearchXpath.Text); + if (anchors != null) + { + for (int i = 0; i < anchors.Count; i++) + { + if (text != "") { text += "\r\n\r\n"; } + text += anchors[i].OuterHtml; + } + } + } + } + catch (Exception ex) + { + MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + textEditorControl1.Document.HighlightingStrategy = HighlightingStrategyFactory.CreateHighlightingStrategy(format); + textEditorControl1.Text = text; + } + + private void FrmXpath_Load(object sender, EventArgs e) + { + + } + + private void TxtXML_DoubleClick(object sender, EventArgs e) + { + ryControls.Controls.RichTextBox2 txt = (ryControls.Controls.RichTextBox2)sender; + 开发辅助工具.Controls.FrmText frm = new Controls.FrmText + { + Icon = Icon + }; + frm.richTextBox1.Text = txt.Text; + if (frm.ShowDialog() == DialogResult.OK) + { + txt.Text = frm.richTextBox1.Text; + } + } + } +} diff --git a/Source/开发辅助工具/Tools/FrmXpath.resx b/Source/开发辅助工具/Tools/FrmXpath.resx new file mode 100644 index 0000000..a391948 --- /dev/null +++ b/Source/开发辅助工具/Tools/FrmXpath.resx @@ -0,0 +1,203 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 262, 17 + + + + + AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAK8bAACvGwAAAAAAAAAA + AAAAAAAAARYZAAgdIAABFRgAARUYAAEVGAABFRgAABQXAAEWGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAARYZAAAVGAABFRgAARUYAAEVGAABFRgAARUYAAEVGAABFRgAARUYAAUZ + HAABFhkAAAAAAAAAAAASIiUABRkcAAAVGA4AFRgbABUYGwAVGA0DFxoABRgbAAUZHAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFGBsAAxcaAAAVGA4AFRgeABUYHgAVGB0AFRgdABUYHQAV + GB0AFRgPBhkcAB8rLgAAAAAAAAAAAAMXGgADFxoUAhcasQIWGd4CFhneAhcasAMXGhoEGBsABxodAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABxseAAQYGwADFxoWAhcargIWGeICFhngAhYZ3wIW + Gd8CFhneAhYZ4AIXGrIDFxoUAxcaAAAAAAAAAAAABBgbAAQYGxIFGRzEBRkc/wUZHP8FGRz/BRkclAYa + HQUHGx4ACx0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAseIAAGGh0AAA8KAAUZHH8FGRz/BRkc/wUZ + HP8FGRz/BRkc/wUZHP8FGRz/BRkcxwQYGxMEGBsAAAAAAAAAAAAAERQABxseAAcbHkIIGx7qCBwe/wgb + Hv8IHB72CRwfXwodIAAJHB8ADiAjAAAAAAAAAAAAAAAAAAAAAAAAAAAADiAjAAodIAAJHB88CBwe6Qgb + Hv8IHB7/CBwe/wgcHv8IHB7/CBwe/wgbHvMIGx5PCBseAAAAAwAAAAAAAAAAAAYZHAAJHR8ACh0gAAse + IHQMHiH8DB4h/wweIf8MHiHeDB8iMQ4gIgARIiUAEiMmAAAAAAAAAAAAAAAAABEiJQANHyIADR8iDwwe + IbcMHiH/DB4h/wweIf8MHiH/DB4h/wweIf8MHiH/Cx4hlgodIAQKHR8ABhodAAAAAAAAAAAAAAAAAAkc + HwANHyIADiAiDA4gI6gPISP/DyEj/w8hI/8PISS2ECEkEREiJQAUJScAAAAAAAAAAAAVJSgADyEkABAh + JAAPISRxDyEj/Q8hI/8PISP/DyEj/w8hI/8PISP/DyEj/w8gI9QOICMiDR8iAAodHwAAAAAAAAAAAAAA + AAAAAAAAAAAAAA0fIgAQHyAAER8fJhIhI9ESIyX/EiMm/xIjJv4TJCaDFCQnAhQiIgAaqf4AGqf6ABqn + +gAXcKEAEx4dMBIjJuESIyb/EiMm/xIjJv8SIyb/EiMm/xIjJv8SIyb4ESMlXREiJQAlMjUADB4hAAAA + AAAAAAAAAAAAAAAAAAAAAAAADyEkABqm+QAbwP8PF1d5gBYvOPsVJSf/FSYp/xUmKfAWJilPFywyAByj + +QEap/onGqf7NRqj8zcWQVWuFScq/xUmKP8VJin/FSYp/xUmKf8VJin/FSYp/xUmKKQUJScIFCQnABAh + JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaj6ABmo+0kZqfvpGXyy/hkvNf8ZKCr/GSgr/xko + K9IaHRkiGa7/NRmo+tsZqPryGar98hl7sP0ZKzD/GSgr/xkoK/8ZKCv/GSgr/xkoK/8ZKCveGCgqLBcn + KgATJCcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYqvoAGKn6Cxis/KEYqvn/GmaM/xwr + Lf8cKy3/HCot/xw1Pa4YqPS4GKz7/xis/P8Yo+7/G09n/xwqK/8cKy7/HCsu/xwrLv8cKy7/HCsu+xsq + LWsbKi0AHCsuABYmKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiq+gAXrfsAF677IRaw + /c4Xpev/HVBm/x8sLf8fLC7/G2SF/xat+P8Wr/v/FrD8/xt0n/8fLjL/Hy0w/x8uMP8fLjD/Hy4w/x8u + MP8fLTCxHi0vDR0sLwAaKSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF6z7ABmo + +wAWsPsAFbH7SRW0/u0Xl9H/IT5I/yBGVP8WoeH/FbP9/xW0/v8YmNP/IT5I/yMvMf8iMDP/IzAz/yIw + M/8jMDP/IjAz5iIwMjchLzEAHSwuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAFrD7ABSz/AATtP0BFLX8fBO2/f0ahbL/GYq5/xO3/v8Ttv3/FLDz/yBddf8mMTP/JjM1/yYz + Nf8mMzX/JjM1/yYzNf4lMjV5JTI2ACUyNAAgLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAFLP8ABO2/AASt/wOErn8sBK4+/8SuPv/Ern8/xK6/f8bhK3/KTg7/yk1 + N/8pNTj/KTU4/yk1OP8pNTj/KTU4vig0NxMnNDYAJDEzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOwv0AD7/9AA7C/wEQvP2VELz9/xC8/f8Qvf7/FKzl/yhM + WP8tNjj/LDg6/yw4Ov8sODr/LDg6/yw4OuwsNzpDKzc5ACYzNgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzG/QAOwf0AD8D9Rw/A/e8Pv/3/D7/9/xC8 + +f8RuPL/JWN4/zA5Ov8wOj3/MDo9/zA6Pf8wOj3/Lzo9lCEwMgAtODsAKjY4AAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALyP4ADcX9AA3E/RUNw/3CDsP9/w3E + //8TseX/JHaR/xG37P8Trd3/LVBb/zM7Pf8zPT//Mz0//zM9P/8zPUC5ND5AFDU/QQA4QUMAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACcz+AAvI/gAQxPoADMf+fwzG + /v8Mxv7/DcX8/yR6lP83PkD/JHqU/wzF/f8amL3/NEVK/zY/Qf82QEL/NkBC/zZAQv83QEKIN0FDAzhB + RAA8REYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ0f8ADMv+AArK + /jsLyv7pC8n+/wrL//8Yo8n/N0pP/zpBQ/84R0z/HJm9/wvJ/f8jgpzxOUFDlDlCROs6QkT/OUJE/zpC + RPI6QkVUO0NGADI7PgA/R0kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDQ + /wAQ0P8RDM7+uAvO//8Kz///DsHu/zFkcf89Q0T/PUVH/z1DRf82WGH/E7Td/wrK+/ENw/FIPUJDfT1E + R/49REf/PURH/z1FR9Y+RUgpP0ZIAEJJSwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAFtP/ABPS/0Qr1//dMs3x9zHI7P8vip//P0dK/0BHSf9AR0n/QEdJ/0FGR/8uc4TqCc794AfS + /5gyZXIVQEdJskBHSf9AR0n/QEdJ/0BHSqtBSEoNQklLAEVLTgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAH2f8AAPr/CDCOo0U/YGjjP11k/0JOUv9DSUv/Q0pM/0NKTP9DSkz/Q0pM+UJM + T2UE2f8cB9L/GVoOAABCSUsuQ0pM3ENKTP9DSkz/Q0pM/ERKTHdETk4ARUtOAElOUQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAATFFTAE1FRQBSODMESEtMlUdLTf9HS03/R0xO/0dMT/9HTE7/R0xO/0dM + T/9GTE6oR0hJCRqoyAAH0v8AKoieAEVLTQBGTE5cR0xO9UdMT/9HTE7/R0xP60dNT0RITlAATlJVAE1R + UwAAAAAAAAAAAAAAAAAAAAAAAAAAAFBUVgBTVlgAS1BSAEtPUlFKT1HzSk9R/0pPUf9KT1H/Sk9R/0pP + Uf9KT1H/Sk9R4ElOUC9ITlAARUtNAAAAAABESk0ASE1PAEhOUARJTlGQSk9R/0pPUf9KT1H/Sk9RyktQ + Uh5MUVMAT1NVAAAAAAAAAAAAAAAAAAAAAAAAAAAAUlVYAE9TVQBOUlQbTVJUy01RVP9NUVT/TVFU/01R + VP9NUVT/TVFU/01RVPxNUVNvTFFTAE1RUwBHTU8AAAAAAAAAAABITVAAS1BSAExRUxhNUVPBTVFU/01R + VP9NUVT/TlJUm05SVQdPU1UAU1ZYAAAAAAAAAAAAAAAAAFZZWwBSVVgAU1VYAVFUV4lQVFb/UFRW/1FU + Vv9RVFb/UVRW/1BUVv9RVFb/UFRWtU9TVQ9PU1UAS1BSAAAAAAAAAAAAAAAAAEpPUQBKT1IAT1JVAFBT + VTxQVFbmUFRW/1BUVv9QVFb4UVRXZlJVVwBSVVcAVllbAAAAAAAAAAAAXF1fAFRWWABUVllEU1ZY7lNW + WP9TVlj/U1ZY/1NWWP9TVlj/VFZY/1RWWehTVlg6UlVXAE5SVAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5S + VABSVVcAUlZXAFNWWGxUVln6VFdZ/1RWWf9UV1niVVdZN1VXWQBaXF4AAAAAAAAAAABYWlwAUlRXDF1f + YbtiZGb/X2Fj/19hY/9fYWP/XmFi/15gYv9aXF7/VllbfllbYABWWFoAUVRXAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAFFVVwBVV1kAVlhaCVdZW6FXWVv/V1lb/1dZW/9XWVu3WFpcDFhaXAAAAAAAAAAAAFlb + XQBVV1kNX2Fjo3N0dtx3eHnadnd523Z3edt2eHncdXZ43mVmaKtVV1kVWFpcAFVXWQAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVYWgBYWlwAWVtdIVpbXbhaXF7iWlxe4VpbXapZW10OWVtdAAAA + AAAAAAAAVllbAFNVWABYWVsLVldZGVhZWxpYWVsaWFlbGlhaXBtYWlwbWFlbDFdZWwBYWlwAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFpcAFZZWwBYWlwAXF1fD1xdXx5cXV8dXF1fDllb + XQBTV1kAAAAAAAAAAABbXF4AXF1fAFtdXwBbXV8AW11fAFtdXwBbXV8AW11fAFtdXwBbXV8AXF1fAFtc + XgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW1xeAF9hYwBbXV8AW11fAFtd + XwBbXV8AXF5gAFtcXgAAAAAAgH/gAYA/4AGAP8ABgB+AAYAPgAGABwABwAYAA+AAAAPgAAAH8AAAD/AA + AA/wAAAf8AAAP/gAAD/8AAB//AAA//wAAP/4AAD/8AAAf/AAAD/wAAA/8AAAH/AAAA/gAAAHwABAB8AA + YAOAAOABgAHwAYAB+AGAA/wBgAf8AYAH/gE= + + + \ No newline at end of file diff --git a/Source/开发辅助工具/gaim_48px_29650_easyicon.net.ico b/Source/开发辅助工具/gaim_48px_29650_easyicon.net.ico new file mode 100644 index 0000000..0b7492f Binary files /dev/null and b/Source/开发辅助工具/gaim_48px_29650_easyicon.net.ico differ diff --git a/查看项目.ryp b/查看项目.ryp new file mode 100644 index 0000000..78a15f0 --- /dev/null +++ b/查看项目.ryp @@ -0,0 +1,6 @@ +[project] +name= +engname=SupperDesign +usqver=2.1 +proglang=c# +progID=39871d4b-1b46-4e3c-9c45-8fda3613d857