小编tan*_*ius的帖子

C#拖放 - 使用基类的e.Data.GetData

我正在使用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)

有没有办法解决这个问题,或者更好的方法来构建它?

c# drag-and-drop winforms

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

如果存在,或者如果不存在,则此SQL查询如何更新行?

我正在使用一些代码.有几个查询的效果是,如果行中存在一些数据,则该行将使用其余数据进行更新,如果该行不存在,则会创建一个新行.它们看起来像这样:

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.

sql postgresql insert-update

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

实现懒惰拖放

我正在尝试实现一个懒惰的拖放操作.我想向用户显示包含文件的列表视图,当用户拖动文件并将其放入文件夹时,应下载并传送内容.

我正在使用IDataObject接口,但我的问题是过早地查询GetData()方法.例如,在桌面上拖动(不涉及任何丢弃)将多次查询GetData()方法.每个调用都会开始下载文件:/

现在,我的问题是:这里有什么问题 - 为什么调用GetData()方法没有任何丢弃?还有另一种在.net中实现懒惰拖放操作的方法吗?

c# drag-and-drop lazy-evaluation

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

这些操作码是什么?

使用反射器我得到以下输出:

.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行和局部变量可以省略......?

c# reflector opcode

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

是否有VS快捷方式来查看变量的类定义?

当我按下Ctrl+ Left mouse buttonF12变量时,我会得到变量的声明.

是否有这样的快捷方式来获取变量类型的类定义?因此,当我有一个变量时,string functionCode我想点击functionCode程序中的任何地方,直接进入对象浏览器,向我显示字符串类.

当然,这对于自定义类和成员变量最有用.有时我根本没有在方法中看到成员的类型 - 到处都是var.要获得类定义,我必须转到变量定义并从那里到类定义.

好的,这就是保存一次点击......但我很懒...这可能吗?

PS:也欢迎ReSharper解决方案.

visual-studio

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

计算理论中的重要主题

在大学学习期间,我必须学习很多关于计算理论的知识.我研究了三个学期的主题.我很难过,我不得不承认我忘记了很多.

我想知道这是个人问题,还是我们只需要学习很多(或多或少)无用的东西.

所以我的问题是:您认为计算理论领域中哪些主题最重要,哪些部分值得学习,以及您在正常工作中使用哪些主题?

就个人而言,我很高兴我听说过语言理论(尤其是常规语言=>正则表达式 - 当它们可以应用时,何时不应用)以及不同的时间(和空间)复杂性,特别是O(n)符号.

但我们还要研究更多,包括:

  • 可计算性理论
    • 停止问题
    • 半昏人问题
  • 复杂性理论
    • P = NP?
  • 逻辑理论
    • 命题演算
    • 谓词逻辑

听到这些话题很有意思,但我不确定深入研究它们是多么必要.

我知道这个问题是主观的,答案会因您的日常工作和个人经历而有很大不同.但是我想知道可能比我记忆中更有趣的主题.

theory computation computation-theory

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

如何比较人物(尊重文化)

对于我在这个问题中的答案,我必须比较两个字符.我认为普通的char.CompareTo()方法允许我指定CultureInfo,但事实并非如此.

所以我的问题是:如何比较两个字符并指定CultureInfo进行比较?

c# comparison culture char

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

添加后,git仍未跟踪

每次我执行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也没有报告任何错误.这可能是什么问题?

git version-control commit add

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

如何将OpenXml段落标识为以编程方式插入的段落?

我以编程方式将OpenXML段落添加到Word文档中,我需要能够在以后识别该段落.关于如何做到这一点的任何想法?我已经尝试插入XML注释和扩展属性,但是当您在word中保存文档时,它会删除所有未知的xml.如果它是段落或运行中的属性,或段落之前的元素,则无关紧要,只是稍后我可以通过某种方式识别它.另外,我不希望在word文档中看到此标识符.

我可以使用的例子:

<paragraph id="myParagraph"></paragraph>
<otherelement>myparagraph</otherelement>
<paragraph></paragraph>
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒,因为我的头撞到了我遇到的砖墙上.

谢谢!

openxml

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

在不同的线程上使用Application.Run()

请看下面的代码:

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# multithreading

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