我正在使用C#和Winforms 3.5
我有一个用户控件列表,所有用户控件都派生自一个基类.这些控件可以添加到各种面板中,我正在尝试实现拖放功能,我正在运行的问题是在DragDrop事件上.
对于DragEventArgs e.Data.GetData(typeof(baseClass))不起作用.它想要:
e.Data.GetData(typeof(derivedClass1))
e.Data.GetData(typeof(derivedClass2))
etc...
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,或者更好的方法来构建它?
我正在使用一些代码.有几个查询的效果是,如果行中存在一些数据,则该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:
INSERT INTO table_name (col1, col2, col3) SELECT %s AS COL1, %s AS COL2, %s AS COL3 FROM ( SELECT %s AS COL1, %s AS COL2, %s AS COL3 ) A LEFT JOIN table_name B ON B.COL1 = %s AND B.COL2 = %s --note: doesn't mention all columns here WHERE B.id IS NULL LIMIT 1
我可以模仿这种模式,它似乎有效,但我对幕后的实际情况感到困惑.任何人都可以阐明这实际上是如何运作的吗?我正在使用PostgreSQL.
我正在尝试实现一个懒惰的拖放操作.我想向用户显示包含文件的列表视图,当用户拖动文件并将其放入文件夹时,应下载并传送内容.
我正在使用IDataObject接口,但我的问题是过早地查询GetData()方法.例如,在桌面上拖动(不涉及任何丢弃)将多次查询GetData()方法.每个调用都会开始下载文件:/
现在,我的问题是:这里有什么问题 - 为什么调用GetData()方法没有任何丢弃?还有另一种在.net中实现懒惰拖放操作的方法吗?
使用反射器我得到以下输出:
.method private hidebysig static class myModelTestarea.Foo Method() cil managed
{
.maxstack 1
.locals init ([0] class myModelTestarea.Foo CS$1$0000)
L_0000: nop
L_0001: ldc.i4.0
L_0002: newarr object
L_0007: call object myModelTestarea.Program::Resolve(object[])
L_000c: castclass myModelTestarea.Foo
L_0011: stloc.0
L_0012: br.s L_0014
L_0014: ldloc.0
L_0015: ret
}
Run Code Online (Sandbox Code Playgroud)
对于
private static Foo Method()
{
return (Foo)Resolve();
}
private static object Resolve( params object[] args )
{
return new Foo();
}
Run Code Online (Sandbox Code Playgroud)
第11-14行是做什么的?我调用一个函数并得到一个结果(第7行).我将结果转换为正确的返回类型(第c行) - 为什么不立即返回?
不知何故,铸造的结果存储为局部变量 - 然后有一个无法跳转到下一行,再次加载局部变量.为什么?
在我看来,第11-14行和局部变量可以省略......?
当我按下Ctrl+ Left mouse button或F12变量时,我会得到变量的声明.
是否有这样的快捷方式来获取变量类型的类定义?因此,当我有一个变量时,string functionCode我想点击functionCode程序中的任何地方,直接进入对象浏览器,向我显示字符串类.
当然,这对于自定义类和成员变量最有用.有时我根本没有在方法中看到成员的类型 - 到处都是var.要获得类定义,我必须转到变量定义并从那里到类定义.
好的,这就是保存一次点击......但我很懒...这可能吗?
PS:也欢迎ReSharper解决方案.
在大学学习期间,我必须学习很多关于计算理论的知识.我研究了三个学期的主题.我很难过,我不得不承认我忘记了很多.
我想知道这是个人问题,还是我们只需要学习很多(或多或少)无用的东西.
所以我的问题是:您认为计算理论领域中哪些主题最重要,哪些部分值得学习,以及您在正常工作中使用哪些主题?
就个人而言,我很高兴我听说过语言理论(尤其是常规语言=>正则表达式 - 当它们可以应用时,何时不应用)以及不同的时间(和空间)复杂性,特别是O(n)符号.
但我们还要研究更多,包括:
听到这些话题很有意思,但我不确定深入研究它们是多么必要.
我知道这个问题是主观的,答案会因您的日常工作和个人经历而有很大不同.但是我想知道可能比我记忆中更有趣的主题.
对于我在这个问题中的答案,我必须比较两个字符.我认为普通的char.CompareTo()方法允许我指定CultureInfo,但事实并非如此.
所以我的问题是:如何比较两个字符并指定CultureInfo进行比较?
每次我执行git状态时,此文件夹都显示为未跟踪.
$ git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# src/error/
nothing added to commit but untracked files present (use "git add" to track)
Run Code Online (Sandbox Code Playgroud)
即使这样做git add .,git commit -asrc/error处的文件夹仍然显示为未跟踪.每次只有此文件夹不断提出问题时,才会提交其他未分段文件.git也没有报告任何错误.这可能是什么问题?
我以编程方式将OpenXML段落添加到Word文档中,我需要能够在以后识别该段落.关于如何做到这一点的任何想法?我已经尝试插入XML注释和扩展属性,但是当您在word中保存文档时,它会删除所有未知的xml.如果它是段落或运行中的属性,或段落之前的元素,则无关紧要,只是稍后我可以通过某种方式识别它.另外,我不希望在word文档中看到此标识符.
我可以使用的例子:
<paragraph id="myParagraph"></paragraph>
<otherelement>myparagraph</otherelement>
<paragraph></paragraph>
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很棒,因为我的头撞到了我遇到的砖墙上.
谢谢!
请看下面的代码:
var splashForm = new SplashForm();
m_Thread = new Thread( () => System.Windows.Forms.Application.Run( splashForm ) )
m_Thread.Start();
// Do some initialization
// ...
// the following method just invokes `Close()` on the right thread
splashForm.Shutdown();
// Loop until the thread is no longer alive
// ...
System.Windows.Forms.Application.Run( mainForm );
Run Code Online (Sandbox Code Playgroud)
它看起来好像一切正常:首先我看到了闪屏,后来主变形开始了.但不知怎的,我得到了奇怪的错误,例如:图形元素(无尽的ProgressBar)没有正确显示.
编辑:我有两个进度条,一个在启动画面上,在主窗体上.他们都在无尽模式中表现出相同(错误)的行为:没有进步,只有纯粹的背景./编辑
在我看来,这是由于Application.Run()不同线程的调用.在启动启动画面之前,可以通过调用mainForm的任何函数/属性来消除此错误 - 例如
mainForm.Text = mainForm.Text;
Run Code Online (Sandbox Code Playgroud)
任何人都可以请确认此代码可能会导致问题 - 或者它应该表现良好,我必须在其他地方寻找错误?
我已经看过了flashscreen实现,我知道它可以以不同的方式完成.但我有兴趣了解这个实现及其可能存在的问题.谢谢!
c# ×5
add ×1
char ×1
commit ×1
comparison ×1
computation ×1
culture ×1
git ×1
opcode ×1
openxml ×1
postgresql ×1
reflector ×1
sql ×1
theory ×1
winforms ×1