小编Arn*_* F.的帖子

可拖动和可扩展的遏制

我正在尝试授权仅在其收容的右侧或底部拖出一个对象,并且不能正确地停止拖动该元素.

我的代码:

<!DOCTYPE html>
<html>
<head>
  <style>
  #parent { height: 500px; width: 500px; border: 1px black solid; }
  #images { height: 100px; width: 100px; background-color:orange; }
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
  <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/jquery-ui.js"></script>
</head>
<body>
<div id="parent">
    <div id="images"></div>
</div>
<script>
$(document).ready(function() {
    $("#images").draggable({
        containment: $("#parent"),
        drag: function(event, ui) {
            var helper = ui.helper, pos = ui.position;
            if(pos.left + parseInt(helper.outerWidth(), 10) == parseInt($("#parent").css("width"), 10)) {
                $("#parent").animate({width: "+=100"});
            }
            if(pos.top + parseInt(helper.outerHeight(), 10) == parseInt($("#parent").css("height"), 10)) {
                $("#parent").animate({height: "+=100"});
            }
        }
    });
}); …
Run Code Online (Sandbox Code Playgroud)

jquery-ui draggable

2
推荐指数
1
解决办法
2952
查看次数

如何实现 IDataReader?

我有一个像这样的 XML:

<resultset>
    <datarow>
        <datacol>Row 1 - Col 1</datacol>
        <datacol>Row 1 - Col 2</datacol>
        <datacol>Row 1 - Col 3</datacol>
        ...
    </datarow>
    ...
</resultset>
...
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何使用此 XML 实现 IDataReader 接口?我迷路了...

我已经开发了这个:

public sealed class SybaseDataReader : IDataReader
{
    private DataSet _dataSet = new DataSet();

    #region IDataReader methods implementation
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我在好路吗?

感谢您的建设性和解释清楚的帖子。

c# ado.net implementation

2
推荐指数
1
解决办法
5821
查看次数

C#内部委托和公共事件

我目前正在开发一个独立于任何应用程序的微小技术框架.业务代码只是引用此框架.

根据这篇文章:http://msdn.microsoft.com/en-us/library/5z57dxz2.aspx(例2),我们需要为自定义事件提供委托.

问题是,任何人都可以调用我的处理程序(然后引发事件),即使在我的业务代码中,这对我来说也不符合逻辑,那么使用仅仅是"内部"的委托来提升自定义事件的最佳方法是什么而不是"公开"?

感谢帮助.

c# events delegates

2
推荐指数
2
解决办法
3651
查看次数

Generic PropertyEqualityComparer <T>

我已经开发了一个通用的PropertyEqualityComparer工作正常,但我不确定我是否以正确的方式完成它,所以如果有些人可以改进代码或评论家,他是受欢迎的.

注意:如果是Reference类型,属性应该实现IEquatable.

    public sealed class PropertyEqualityComparer<T> : IEqualityComparer<T>
{
    private readonly Type _iequatable = Type.GetType("System.IEquatable`1", false, true);
    private readonly PropertyInfo _property;

    public PropertyEqualityComparer(string property)
    {
        PropertyInfo propInfos = typeof(T).GetProperty(property);
        if (propInfos == null)
        {
            throw new ArgumentNullException();
        }

        // Ensure Property is Equatable (override of HashCode)
        if (propInfos.PropertyType.IsValueType
            || (!propInfos.PropertyType.IsValueType
                && propInfos.PropertyType.GetInterfaces().Any(type => type.Name == _iequatable.Name)))
        {
            _property = propInfos;
        }
        else
        {
            throw new ArgumentException();
        }
    }

    public bool Equals(T x, T y)
    {
        var xValue = _property.GetValue(x, null); …
Run Code Online (Sandbox Code Playgroud)

c# generics

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

如何挂钩应用程序?

我正试图在我的C#应用​​程序中挂钩创建一个窗口.

static IntPtr hhook = IntPtr.Zero;
static NativeMethods.HookProc hhookProc;

static void Main(string[] args)
{
    // Dummy.exe is a form with a button that opens a MessageBox when clicking on it.
    Process dummy = Process.Start(@"Dummy.exe");

    try
    {
        hhookProc = new NativeMethods.HookProc(Hook);
        IntPtr hwndMod = NativeMethods.GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);
        hhook = NativeMethods.SetWindowsHookEx(HookType.WH_CBT, hhookProc, hwndMod, (uint)AppDomain.GetCurrentThreadId());

        Console.WriteLine("hhook valid? {0}", hhook != IntPtr.Zero);

        while (!dummy.HasExited)
            dummy.WaitForExit(500);                
    }
    finally
    {
        if(hhook != IntPtr.Zero)
            NativeMethods.UnhookWindowsHookEx(hhook);
    }
}

static int Hook(int nCode, IntPtr wParam, IntPtr lParam)
{
    Console.WriteLine("Hook()");
    return NativeMethods.CallNextHookEx(hhook, …
Run Code Online (Sandbox Code Playgroud)

c# winapi setwindowshookex

1
推荐指数
1
解决办法
2万
查看次数

如何反序列化数组

这是我从网站上获得的Xml:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="[url]">
  <totalResults>1</totalResults>
  <movie code="134539" />
  <movie code="134540" />
</feed>
Run Code Online (Sandbox Code Playgroud)

我的C#课程:

using System;
using System.Collections.Generic;
using System.Xml.Serialization;

[Serializable]
[XmlRoot("feed", Namespace = "[url]")]
public class FeedSearch
{
    [XmlElement("totalResults")]
    public int TotalResults
    { get; set; }

    [XmlArray("feed")]
    [XmlArrayItem("movie")]
    public List<MovieSearch> Movies
    { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Xml.Serialization;

[Serializable]
[XmlRoot("movie", Namespace = "[url]")]
public class MovieSearch
{
    [XmlAttribute("code")]
    public int Code
    { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

TotalResults总是被反序列化,但我的电影列表总是空的,为什么?

c# serialization

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

Sql - 使用最大值来选择其他数据

我对检索表的最大值并在另一个查询中使用它的方式有很大疑问.

考虑一下:

CREATE TABLE people
(
    peopleID int NOT NULL,
    cityID int NOT NULL
)
Run Code Online (Sandbox Code Playgroud)

以下请求为我提供了每个城市的人数

SELECT peopleID, COUNT(*)
FROM people
GROUP BY cityID
Run Code Online (Sandbox Code Playgroud)

假设我想要最大城市的人员列表,我会写这样的请求:

SELECT people.peopleID, people.cityID
FROM people,
(
SELECT cityID, COUNT(*) AS "people_count"
FROM people
GROUP BY cityID
) g
WHERE people.cityID = g.cityID
HAVING people_count = MIN(people_count)
Run Code Online (Sandbox Code Playgroud)

但是不起作用,达到这个要求的最佳方法是什么?

谢谢 :)

mysql sql

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

HttpClient - 连接在 VSTO 中关闭,而不是在控制台中关闭

我有同一段代码,我想从两个不同的地方执行。

代码 :

HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", "...");
var post = client.PostAsync("https://mycompany.com/...", new StringContent(json, Encoding.UTF8, "application/json")).GetAwaiter().GetResult();
var str = post.Content.ReadAsStringAsync().GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)

当将此代码放入控制台时,它工作正常并且我得到了预期的结果(Json in str)。

但是,当将其放入 Outlook VSTO 项目(在功能区部分)中时。它无法系统地告诉我连接已经关闭:

The underlying connection was closed: The connection was closed unexpectedly

在 VSTO 中,我尝试过:

  • 使用没有授权标头的 GetStringAsync() 没有成功
  • 添加client.CancelPendingRequests();没有成功

另一方面,当请求另一个网站内容时,它可以工作(即:我将http://mycompany.com更改为https://google.com)。

任何想法?

c# vsto httpclient

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