小编Han*_*ant的帖子

如何通过单击其文本而不是+/-来扩展.NET TreeView节点

我一直在使用硬编码的超链接进行我的网络应用程序导航,但该应用程序已经发展壮大,并且管理它变得非常痛苦.我已经决定用TreeView控件替换我所拥有的东西,但是我想对它的外观进行一些改变.

是否有任何需要设置的属性,允许用户通过单击其文本而不是+/-来扩展TreeView节点?我已经将ShowExpandColapse设置为'false'.

我希望我的最终结果最终类似于MSDN网站左侧的TreeView.

有人能指出我正确的方向吗?

asp.net treeview

3
推荐指数
1
解决办法
8542
查看次数

右键单击:菜单选项

我想在我的应用程序中实现一个功能:

用户右键单击我的picturebox对象.好.当发生这种情况时,我的一些代码会执行并生成一个选项列表.然后会出现一个菜单,鼠标右键单击该菜单,由这些选项组成.当用户单击其中一个选项时,将删除菜单,并在给定选项index作为参数的情况下运行某些代码.

我的两个问题:

  • 如何判断用户是否点击了右键?我可以看到"点击"的事件处理程序,但包括左键点击....
  • 如何创建其中一个菜单?我的意思是,继续并右键点击一些东西.那是我正在寻找的那种菜单.

vb.net visual-studio winforms

3
推荐指数
1
解决办法
4万
查看次数

C#= MenuItem.Click handler - 获取上下文菜单所属的对象?

这可能非常简单,我没有看到它,因为这是漫长的一天的结束,如果它是我提前道歉.

我有一组按钮,右键单击时会弹出一个ContextMenu.该菜单有两个MenuItem,它们都分配了一个Click处理函数.我正在触发ContextMenu弹出右键单击按钮,如下所示:

过于简化的例子:


public void InitiailizeButtonContextMenu()
{
    buttonContextMenu = new ContextMenu();
    MenuItem foo = new MenuItem("foo");
    foo.Click += OnFooClicked;

    MenuItemCollection collection = new MenuItemCollection(buttonContextMenu);
    collection.Add(foo);
}

public void OnButtonMouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
        // left click stuff handling
    if (e.Button == MouseButtons.Right)
        buttonContextMenu.Show((Button)sender, new Point(e.X, e.Y));
}


public void OnFooClicked(object sender, EventArgs e)
{
    // Need to get the Button the ContextMenu .Show'd on in
    // OnButtonMouseClick...  thoughts?
}


ContextMenu buttonContextMenu; 
Run Code Online (Sandbox Code Playgroud)

我需要能够获得触发ContextMenu的Button在MenuItem的Click处理程序中弹出,或以某种方式获取它.MenuItem.Click接受EventArgs,所以没有什么用处.我可以将对象发送者强制转换回MenuItem,但我找不到任何告诉我是什么让它弹出的东西.这可能吗?

c# events contextmenu winforms

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

包装托管代码以供非托管使用

我们有一个很大的C++项目,它被编译为本机非托管代码.我们需要使用托管代码中的一个功能,但我们不想在/ clr中编译整个项目.

所以我创建了一个DLL,有一个名为B的ref类,它在导出的本机类A中公开.问题是我得到一个C1190:由于vcclr.h包含,托管目标代码需要'/ clr'选项.

我想知道是否有办法创建某种在非托管方法中具有托管代码的接口.

这是我的代码:

#pragma once
#include "EX_Port.h"
#include <vcclr.h>

ref class B;

class EX_API A
{
    public:
        A();        
        int DeviceCount();

    private:
        gcroot<B^> _device;
};
Run Code Online (Sandbox Code Playgroud)

我设法通过gcnew在cpp中使用它来工作.但是我有一个本地对象,而我想在全球范围内拥有它.我刚刚开始进行CLI编程,所以我可能不了解一些做法.

谢谢

c# c++ architecture c++-cli

3
推荐指数
1
解决办法
2989
查看次数

Visual Studio 2010只有x86构建选项吗?

我正在尝试编译我的64位应用程序,但在选项中我只有x86到处都有?我看过所有的地方但是只有x86而且没有64位.

这就是我的意思.

在此输入图像描述

我找不到配置管理器中64位的选项.请注意,这是Express版本,而不是零售版本.

c# visual-studio-2010

3
推荐指数
1
解决办法
8261
查看次数

在数组中的参数时调用Method.invoke()

我有以下界面:

interface Foo {
  void bar(String a, int b);
}
Run Code Online (Sandbox Code Playgroud)

我想Foo.bar反思地调用(在Foo的实现上).但是,参数是在数组中,我不知道它的大小.

以下不起作用:

void gee(Foo someFoo, Method bar, Object[] args) {
  bar.invoke(someFoo, args);
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为args编译器将其作为单个参数进行威胁,并且数组不会"扩展"为vararg,而是在一个包含单个元素的数组中(内部)包装,即

@Test
public void varArgTest() {
  assertTrue(varArgFoo(new Object[] {1, 2}) == 1);
}

private static <T> int varArgFoo(T... arg) {
    return arg.length;
}
Run Code Online (Sandbox Code Playgroud)

我如何Method.invoke()在这种情况下调用,以便将数组作为vararg进行威胁?
或者更一般的问题:当参数在数组中时我如何调用vararg方法我不知道数组的大小直到运行时.

java reflection variadic-functions

3
推荐指数
1
解决办法
4039
查看次数

PreviewKeyDown没有为ElementHost中的Tab键和箭头键触发

我在Winforms ElementHost中有一个WPF窗口.我的窗口上的Tab键和箭头键没有触发KeyDown和PreviewKeyDown事件.

KeyUp和PreviewKeyUp似乎工作正常,对于大多数其他键,PreviewKeyDown也是如此,例如:AZ,0-9

wpf winforms

3
推荐指数
1
解决办法
805
查看次数

在类上使用#pragma pack

我们可以在课前使用#pragma pack()吗?

pragma在这里有什么意义?我知道它用于向编译器提供有关实现的信息,但是如果我们在类中使用它会怎么样?

c++ class pragma

3
推荐指数
1
解决办法
3035
查看次数

获取要在主UI线程上发生的filesystemwatcher事件

我可以在主UI线程上获得filesystemwatcher事件吗?目前,文件更改将在其自己的线程上触发.

c# filesystemwatcher winforms

3
推荐指数
1
解决办法
2742
查看次数

如何在DateTimePicker控件中自定义日历?

我认为问题很简单明确。下面的图像是我当前的进度。

在此处输入图片说明

如您所见,自定义版本是我扩展的DateTimePicker控件。控件根据“聚焦”值更改按钮和边框颜色。日历下拉列表是我接下来要设置的样式。

我只是不知道从哪里开始,因为什么都无法工作。我至少不会改变边框颜色,字体颜色等。

c# winforms-interop winforms

3
推荐指数
1
解决办法
3461
查看次数