小编jim*_*nes的帖子

使用IDownloadManager控制Windows窗体Webbrowswer

我正在使用Systems.Windows.Forms.Webbrowser控件,需要覆盖下载管理器.我按照这里的说明继承了表单和覆盖CreateWebBrowserSiteBase()

/// <summary>
/// Browser with download manager
/// </summary>
public class MyBrowser : WebBrowser  
{
    /// <summary>
    /// Returns a reference to the unmanaged WebBrowser ActiveX control site,
    /// which you can extend to customize the managed <see ref="T:System.Windows.Forms.WebBrowser"/> control.
    /// </summary>
    /// <returns>
    /// A <see cref="T:System.Windows.Forms.WebBrowser.WebBrowserSite"/> that represents the WebBrowser ActiveX control site.
    /// </returns>
    protected override WebBrowserSiteBase CreateWebBrowserSiteBase()
    {
        var manager = new DownloadWebBrowserSite(this);
        manager.FileDownloading += (sender, args) =>
            {
                if …
Run Code Online (Sandbox Code Playgroud)

c# webbrowser-control download-manager winforms

10
推荐指数
1
解决办法
5497
查看次数

在C#中反序列化自定义XML数据类型

我有一个我无法控制的xml文档,它有一个带有自定义数据类型的元素

<foo>
   <time type="epoch_seconds">1295027809.26896</time>
</foo>
Run Code Online (Sandbox Code Playgroud)

我想有一个类可以自动转换为Epoch秒:

[Serializable]
public class Foo
{
      public Foo()
      {
      }

      public EpochTime Time { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法定义一个EpochTime类,以便XML序列化器知道在查找XML时使用它type="epoch_time"?如果是这样,我该如何设置WriteXmlReadXml执行此操作?

c# xml serialization types

5
推荐指数
1
解决办法
3477
查看次数

Wininet缓存API在Windows 8中挂起

我正在使用P/Invoke和C#来清除缓存条目,如下所示.代码似乎可以在32位和64位上运行到Windows 7.在Windows 8 Release Candidate上,它在DeleteUrlsFromGroup通话时挂起.

[DllImport(@"wininet",
    SetLastError = true,
    CharSet = CharSet.Auto,
    EntryPoint = "FindFirstUrlCacheGroup",
    CallingConvention = CallingConvention.StdCall)]
private static extern IntPtr FindFirstUrlCacheGroup(
    int dwFlags,
    int dwFilter,
    IntPtr lpSearchCondition,
    int dwSearchCondition,
    ref long lpGroupId,
    IntPtr lpReserved);
// For PInvoke: Retrieves the next cache group in a cache group enumeration
[DllImport(@"wininet",
    SetLastError = true,
    CharSet = CharSet.Auto,
    EntryPoint = "FindNextUrlCacheGroup",
    CallingConvention = CallingConvention.StdCall)]
private static extern bool FindNextUrlCacheGroup(
    IntPtr hFind,
    ref long lpGroupId,
    IntPtr lpReserved);
// For PInvoke: Releases …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke wininet windows-8

5
推荐指数
1
解决办法
2275
查看次数

使用.NET XmlSerializer进行反序列化时,请使用多个名称空间

我正在尝试使用两个名称空间反序列化XML,就像这样

<records xmlns="http://www.foo.com/xml/records/1.1">
    <record xmlns="http://www.foo.com/xml/record/1.1">
Run Code Online (Sandbox Code Playgroud)

有时候是旧版本

<records xmlns="http://www.foo.com/xml/records/1.1">
    <record xmlns="http://www.foo.com/xml/record/1.0">
Run Code Online (Sandbox Code Playgroud)

我的Records.cs类有

[XmlRoot(ElementName = "records", Namespace = "http://www.foo.com/xml/records/1.1")]
public class Records
{
    [System.Xml.Serialization.XmlElementAttribute("record")]
    public List<Record> Records { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望记录列表能够包含版本1.0或版本1.1记录

/// <remarks/>
[XmlRoot(IsNullable = false, ElementName = "record", Namespace = "http://www.foo.com/xml/record/1.0")]
public partial class Record
{


    /// <remarks/>

    public Record()
    {

    }
}

/// <remarks/>
[XmlRoot(IsNullable = false, ElementName = "record", Namespace = "http://www.foo.com/xml/record/1.1")]
public partial class Record11 : Record
{
    /// <remarks/>
    public Record11()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我假设子类化记录会起作用. …

c# namespaces xml-serialization

0
推荐指数
1
解决办法
6351
查看次数