小编Max*_*drv的帖子

treeview拖放效果不起作用

我好像有点问题.我有一个表格,上面有树视图.在此树视图中,有"文件夹"和"项目".我允许用户移动文件夹和项目的节点/更改层次结构.

我正在尝试在拖放操作生效时更改鼠标光标,但这似乎不起作用.我在不同的事件中更改了所有必要的值和鼠标光标,但无济于事.

下面的代码中是否有某些内容会阻止正常行为?基本上,显示的光标始终是默认的拖放光标(移动,复制等)...请注意,我还在树视图上启用了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)

c# treeview winforms

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

以编程方式加载嵌入式资源文件

我最近实现了以下代码,以编程方式构建项目/ 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)

c# embedded-resource system-codedom-compiler

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