小编Kse*_*pac的帖子

启用/禁用WPF WinForms Interop问题

我有一个WinForms用户控件,其中包含一个WPF自定义列表框.在WinForms用户控件被禁用然后重新启用后,WinForms用户控件中的WPF控件没有响应.还有其他人经历过这个吗?

每次控件被禁用/启用以修复问题时,我们必须破解灵魂去除并重新添加元素主机.

的WinForms

wpfControl.Enabled = false;
...
wpfControl.Enabled = true;
Run Code Online (Sandbox Code Playgroud)

用于修复用户控件的WinForms EnabledChanged方法的Hack

if ( Enabled ) 
{
  ElementHost oldEh = ctlElementHost;
  ElementHost eh = new ElementHost();
  eh.Name = oldEh.Name;
  oldEh.Child = null;
  eh.Child = wpfControl;
  this.Controls.Remove( ctlElementHost );
  this.Controls.Add( eh );
  eh.Dock = DockStyle.Fill;

  oldEh.Dispose();
  ctlElementHost = eh;
}
Run Code Online (Sandbox Code Playgroud)

在托管WinForms用户控件的父窗体关闭之前,似乎存在内存泄漏,其中已处理的元素主机仍然存在.

wpf interop winforms

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

如何在winforms设计器中访问继承的控件

我正在制作一些控件,它们都必须共享相同的外观和一些常见的行为,尽管它们用于不同类型的输入.所以我创建了一个继承自UserControl的BaseClass,我的所有控件都继承自BaseClass.

但是,如果我在设计器中添加BaseClass的控件,例如TableLayoutPanel,我在设计继承的类时无法访问它们.我看到了TableLayoutPanel,但即使他是"受保护的",我也无法修改它或通过设计器将控件放入其中.我通过代码访问它没有任何问题,但我不想失去使用设计器的能力.

现在,我只是从BaseClass中删除了所有控件,在每个继承的类中添加了布局和所有常用控件,然后使用引用在BaseClass中操作它们.但这根本不能让我满意.有没有办法让设计师使用继承的受保护成员控件?

环境:C#,.NET 3.5,Visual Studio 2008

编辑回答SLaks的建议.我尝试设置一个属性,虽然我不习惯使用它,但它似乎不起作用.这是我试过的代码:

    public partial class UserControl1 : UserControl
    {
            public UserControl1()
            {
                    InitializeComponent();
            }

            public TableLayoutPanel TableLayoutPanel1
            {
                    get { return tableLayoutPanel1;}
                    set { tableLayoutPanel1 = value;}
            }
    }

    public partial class UserControl2 : UserControl1
    {
            public UserControl2()
            {
                    InitializeComponent();
            }
    }
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2008 winforms

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

Windows窗体中的默认按钮命中(试图找到最佳解决方案)

问题是:如何使默认按钮专注于表格焦点和响应"Enter"点击,但是当插入符号位于文本框中并且多行属性设置为true时,没有聚焦?我知道我可以做一些例外在代码中,但也许有一些我现在不知道的"最佳实践":(谢谢

.net c# windows winforms

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

Windows窗体 - ErrorProvider + DataGridView

如何在DataGridView控件上使用单个单元格挂接ErrorProvider?

.net c# datagridview errorprovider winforms

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

Clickonce要求签署许可协议

是否可以为Win Form应用程序构建ClickOnce部署,以便在继续之前要求用户同意许可协议?

clickonce winforms

8
推荐指数
1
解决办法
4288
查看次数

如何在鼠标滚轮上进行DateTimePicker递增/递减

添加DateTimePicker控件时,可以选择控件值的一部分(例如月份),然后使用向上/向下箭头修改日期/时间值的这一部分(例如,递增/递减月份).

我想做的是用鼠标滚轮允许相同的事情.我试图在MouseWheel事件上注册,但我找不到方法知道我的日期/时间的哪一部分当前被选中,所以我无法知道我是否应该增加时间,日期,月份或者年.

有没有办法做到这一点?

c# winforms

8
推荐指数
1
解决办法
5239
查看次数

如何知道我的DirectoryEntry是否真的连接到我的LDAP目录?

我正在连接到C#中的LDAP目录,所以我使用了DirectoryEntry类.

当您使用地址,登录名和密码执行"new DirectoryEntry"时,它应该连接到LDAP目录.

但是,即使连接不起作用,它也会返回没有问题,并且设置了directoryentry变量.

所以我知道我的连接真的开了吗?现在,我正在使用一个非常非常丑陋的黑客:我放了一个"if(mydirectory.SchemaEntry)",如果没有建立连接会产生异常,因为DirectoryEntry的某些成员,例如SchemaEntry,不是如果连接失败,则设置.但是1:在丑陋的等级2上必须是11/10:在失败之前需要花费很多时间.

那么这样做的好方法是什么?当然,微软必须提供一些东西(即使我使用的是LDAP目录而不是Active Directory)来了解我是否真的已经连接了?

c# ldap active-directory directoryentry

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

如何让鼠标位置超过某个控件

Windows Form
我在layoutpanel上使用DragOver事件,DragEventArgs返回鼠标相对于屏幕的X/Y坐标.我知道有一个函数可以将它转换为鼠标在控件上的位置,但是我很难找到它.

c# mouse cursor-position winforms

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

UserControl如何破坏自己?

当用户单击窗口的某个部分时,我将UserControl添加到窗口的控件中.UserControl有一个关闭按钮.我可以在UserControl的按钮处理程序中执行哪些操作来销毁UserControl?似乎没有.net类似于Win32 DestroyWindow调用,并且控件没有Close()方法.到目前为止我有这个:

private void sbClose_Click(object sender, EventArgs e)
{
    Parent.Controls.Remove(this);
    this.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

并且,如果父母需要销毁控件,那么步骤是什么?这是我到目前为止:

    Controls.Remove(control);
    control.Dispose();
Run Code Online (Sandbox Code Playgroud)

winforms

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

在Windows XP上运行WPF应用程序

我最近使用WPF构建了一个新的应用程序,以便我可以学习新技术.现在我正在尝试部署应用程序,它似乎在Vista系统上运行正常,但在具有.Net fx 3.5SP1的Windows XP SP2计算机上,它无法加载PresentationFramework.dll文件.

我对此做了一些进一步的调查,发现我的xp测试机器上的PresentationFramework.dll文件与我的Vista开发机器上的文件之间存在轻微的构建差异.

我很好奇的是,如果有其他人也遇到过这个问题,他们采取了什么措施来纠正这种情况,以便他们可以在Windows Vista上开发,但将开发的应用程序部署到Vista和XP客户端.

谢谢.

我需要在vista机器和客户端机器上添加一点......我有.Net Fx 3.5 SP1.我做了一些挖掘,发现PresentationFramework.dll文件是相同的,除了最后一组版本号.

有没有人找到一个体面的工作来解决这个问题?

deployment wpf windows-xp windows-vista

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