如何检索WinForms PictureBox的缩放系数?

我需要鼠标指针在PictureBox上的精确位置。 我使用PictureBox的MouseMove事件。 在这个PictureBox上,我使用“缩放”属性来显示图像。 获取鼠标在原始(未经处理)图像上的位置的正确方法是什么? 有没有办法找到比例因子并使用它? 我认为需要使用imageOriginalSize / imageShowedSize来检索此比例因子。 我用这个函数: float scaleFactorX = mypic.ClientSize.Width / mypic.Image.Size.Width; float scaleFactorY = mypic.ClientSize.Height / mypic.Image.Size.Height; 是否可以使用此值来获取光标在图像上的正确位置?

如何将IEnumerable 或IQueryable 转换为EntitySet ?

在这种情况下,我尝试使用LINQ to XML和LINQ to SQL从XML文件导入数据到数据库。 这是我的LINQ数据模型: public struct Page { public string Name; public char Status; public EntitySet PageContents; } public struct PageContent { public string Content; public string Username; public DateTime DateTime; } 基本上我正在尝试做的是编写一个查询,它将为我提供一个数据结构,我可以提交给我的LINQ数据上下文。 IEnumerable pages = from el in doc.Descendants() where el.Name.LocalName == “page” select new Page() { Name = el.Elements().Where(e => e.Name.LocalName […]

MSTest中忽略来自通用基类的inheritance测试类

在MSTest中创建通用基本测试类并从中inheritance时,我无法运行所有inheritance类的测试。 BaseDependencyPropertyFactoryTest位于Whathecode.PresentationFramework.Tests程序集中 。 它是通用基类。 ( BaseDependencyPropertyFactoryTest ) 两个程序集都有一个inheritance自此基类的测试,称为DependencyPropertyFactoryTest 。 所有inheritance的类都传递一个特定的类型参数。 [TestClass] public class DependencyPropertyFactoryTest : BaseDependencyPropertyFactoryTest { } 似乎只运行与基类位于同一程序集中的inheritance测试。 Whathecode.PresentationFramework.Aspects.Tests程序集中的inheritance测试似乎完全被忽略。 我究竟做错了什么? 如果需要,我可以上传所有必需的源代码,但是你需要PostSharp才能进行方面组装。 作为测试,我尝试将一个测试添加到方面程序集中的inheritance测试类中,该程序集调用基本测试类中的所有测试。 [TestMethod] public void AllBaseTests() { ClrGetterSetterTest(); DependencyPropertyGetterSetterTest(); } 这给出了以下结果。 奇怪的是,这个测试被执行了! 现在,这可能是一种至少运行它们的方法,但是当然每次在基类中添加额外的测试时我都不想编辑这个测试。 为什么跳过那些基础测试,为什么指示’中止’?

C#Library解析人类可读的时间跨度

是否存在将人类可读时间片解析为.net TimeSpan的库? 我需要能解析字符串的东西 30 days 1 week 5 hours 这样的事情存在吗? 它可能不是很难写自己,但如果有什么东西,它会更容易! 我目前不需要像“30天,3小时,5分钟”这样的function,只需要一个值,但它不会受到伤害!

反映类型的错误 – XML序列化问题

我有一个需要写入XML文件的Dictionary对象。 字典包含String类型作为Key,自定义类的Object(从System.Windows.Forms.Control派生)作为Value。 namespace SharpFormEditorDemo { [Serializable] public static class common { public static Dictionary dicControls = new Dictionary(); public static Object objSelected = new Object(); public static int ctrlId = 0; //The serialization and Deserialization methods. public static void Serialize(XmlTextWriter xmlTextWriter,Dictionary dic) { xmlTextWriter.WriteStartDocument(); ControlSerializer file = new ControlSerializer(dic); XmlSerializer xmlSerializer = new XmlSerializer(typeof(ControlSerializer)); xmlSerializer.Serialize(xmlTextWriter, […]

禁用事件冒泡c#wpf

我遇到以下问题: 当我拿到两个标签时: This is a label into another label 以下代码: private void Label_MouseUp(object sender, MouseButtonEventArgs e) { Console.WriteLine(“Do NOT show me”); } private void Label_MouseUp_1(object sender, MouseButtonEventArgs e) { Console.WriteLine(“Show me”); } 当我点击“秒”时,我希望它只触发“Label_MouseUp_1”。 但在我的控制台中,我得到: 给我看看 不要告诉我 有没有办法关闭冒泡事件? (另外,“First”必须是可点击的,因此删除那里的事件并不能解决问题) 日Thnx

在安装时更改app.config

如何动态更改app.config文件中的connectionString? 我有一个用Windows窗体,c#3.0和Linq到Sql编写的应用程序。 我需要在安装应用程序时更改连接字符串。 我是怎么做到的 当用户安装程序时,它必须显示一个表单,如果存在,则可以选择更改连接字符串,如果不存在则添加一个。

Assert.AreEqual失败了,但它不应该失败

我有一个非常奇怪的行为,我无法解释。 我有以下课程: public class Project { public virtual int Id { get; set; } public virtual string Name { get; set; } } 还有一个返回Project对象的方法: public Project GetByName(string Name) { using (ISession session = NHibernateHelper.OpenSession()) { Project project = session.CreateCriteria(typeof(Project)) .Add(Restrictions.Eq(“Name”, Name)) .UniqueResult(); return project; } } 我添加了一个unit testing来测试GetByName方法: [TestMethod] public void TestGetByName() { IProjectsRepository projectRepository […]

WaitHandle.WaitAny和Semaphore类

编辑:我甚至想问这个问题暂时疯狂,但当时有意义(见下面的编辑2)。 对于.NET 3.5项目,我有两种类型的资源( R1和R2 ),我需要检查它的可用性。 每种资源类型可以随时(例如)有10个实例。 当其中一种资源可用时,我的工作线程需要唤醒(存在可变数量的线程)。 在早期的实现中,只有一种资源类型,我使用信号量来检查可用性。 现在我需要等待两个单独的信号量( S1和S2 )来跟踪资源的可用性。 WaitHandle[] waitHandles = new WaitHandle[] { s1, s2 }; int signalledHandle = WaitHandle.WaitAny(waitHandles); switch (signalledHandle) { case 0: // Do stuff s1.Release(); case 1: // Do stuff s2.Release(); } 然而,这有一个问题。 从WaitAny上的MSDN文档: 如果在调用期间发出多个对象的信号,则返回值是信号对象的数组索引,其中所有信号对象的索引值最小。 这表明在调用WaitAny之后我可能会将我的信号量计数减少1。 因为signalledHandle将指示s1已发出信号,我将开始使用资源R1 ,并在完成后释放它。 但是,由于我不知道S2是否已发出信号,因此此资源的可用性计数现在可能已关闭。 如果发生这种情况10次,我的信号量将永久“空”,资源R2将不再使用。 处理这个问题的最佳方法是什么? 我是否应该从使用两个信号量切换到简单计数器,并在任何一个计数器更改时发出AutoResetEvent信号? 我错过了一些更优雅的方法吗? 编辑1: 根据Ravadre的说法,在WaitAny之后,只有一个信号量会被改变。 略微修改他的例子似乎证实了这一点,但有没有人可以指出我指出这个的一些官方文档? 编辑2: […]

C#通过SSL / TLS获取xml站点 – https://

我需要能够从控制台程序中的https网站读取xml / rss。 直到现在我的程序支持普通的http,我一直在搜索,但我似乎找不到一个简单的方法来实现对https的支持。 如果网站有一个有效的证书,这没关系,但我会擅长获取如何检查这些证书的提示。 我可能不太了解这个,所以任何暗示都是适当的! 我目前为http做的是: XmlTextReader rssReader; XmlDocument rssDoc; rssReader = new XmlTextReader(url); rssDoc = new XmlDocument(); rssDoc.Load(rssReader); 在没有可信证书的站点上尝试此操作时,我收到错误消息:“基础连接已关闭:无法为SSL / TLS安全通道建立信任关系。” string url = “https://somesite.com”; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream resStream = response.GetResponseStream(); 我的程序需要支持受信任和不受信任的https站点。 程序正在服务器上运行,因此必须在代码中处理不受信任的https站点。