我好像有点问题.我有一个表格,上面有树视图.在此树视图中,有"文件夹"和"项目".我允许用户移动文件夹和项目的节点/更改层次结构.
我正在尝试在拖放操作生效时更改鼠标光标,但这似乎不起作用.我在不同的事件中更改了所有必要的值和鼠标光标,但无济于事.
下面的代码中是否有某些内容会阻止正常行为?基本上,显示的光标始终是默认的拖放光标(移动,复制等)...请注意,我还在树视图上启用了HotTracking以启用GiveFeedback并且它会触发/命中断点.
[编辑] - 感谢Hans的解决方案.基本上,DoDragDrop调用必须使用其FQN以您想要的控件为目标.如果源控件是触发ItemDrag事件的源控件并不重要,则必须明确指定它.请参阅下面更新的代码
#region Drag and Drop Methods and Event Handlers
/// <summary>
/// Performs the necessary actions when the user drags and drops a node around the treeview.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void tv_Terms_DragDrop(object sender, DragEventArgs e)
{
// Retrieve the client coordinates of the drop location.
Point targetPoint = this.tv_Terms.PointToClient(new Point(e.X, e.Y));
// Retrieve the node at the drop location.
TreeNode targetNode = this.tv_Terms.GetNodeAt(targetPoint);
// confirm that the target node …Run Code Online (Sandbox Code Playgroud) 我最近实现了以下代码,以编程方式构建项目/ exe.在这个exe版本中,我想在资源中存储一堆"实际文件"作为流.
这是我如何将文件添加到资源文件(单数),然后将该资源文件嵌入到编译器参数中:
List<string> UserFiles = new List<string>();
UserFiles.AddRange(Helpers.GetFilesInFolder(this.txt_Publish_Folder.Text));
string folder = this.txt_Package_Location.Text;
folder = folder + "\\Package_" + DateTime.Now.ToLongTimeString().Replace(":", "_").Replace(".", "_");
Directory.CreateDirectory(folder);
CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = true;
parameters.IncludeDebugInformation = true;
parameters.GenerateInMemory = false;
parameters.WarningLevel = 3;
parameters.CompilerOptions = "/optimize";
parameters.OutputAssembly = folder + "\\Install_" + this.txt_AppName.Text + ".exe";
parameters.ReferencedAssemblies.Add("Microsoft.CSharp.dll");
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");
parameters.ReferencedAssemblies.Add("System.Data.dll");
parameters.ReferencedAssemblies.Add("System.Data.DataSetExtensions.dll");
parameters.ReferencedAssemblies.Add("System.Xml.dll");
parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
if (codeProvider.Supports(GeneratorSupport.Resources))
{
string temp = Path.Combine(Path.GetTempPath(), Path.GetTempFileName());
//create temp file first, because we want to append …Run Code Online (Sandbox Code Playgroud)