标签: controls

在C++中防止类继承

最近我的一位朋友问我如何在C++中阻止类继承.他希望编译失败.

我在考虑它并找到了3个答案.不确定哪个是最好的.

1)私人建设者

class CBase
{

public:

 static CBase* CreateInstance() 
 { 
  CBase* b1 = new CBase();
  return b1;
 }

private:

 CBase() { }
 CBase(CBase3) { }
 CBase& operator=(CBase&) { }


};
Run Code Online (Sandbox Code Playgroud)

2)使用CSealed基类,私有ctor和虚拟继承

class CSealed
{

private:

 CSealed() {
 }

 friend class CBase;
};


class CBase : virtual CSealed
{

public:

 CBase() {
 }

};
Run Code Online (Sandbox Code Playgroud)

3)使用CSealed基类,受保护的ctor和虚拟继承

class CSealed
{

protected:

 CSealed() {
 }

};

class CBase : virtual CSealed
{

public:

 CBase() {
 }

};
Run Code Online (Sandbox Code Playgroud)

以上所有方法都确保不能继承CBase类.我的问题是:

1)哪种方法最好?还有其他方法吗?

2)除非CSealed类是虚拟继承的,否则方法2和3将不起作用.这是为什么 ?它与vdisp ptr有什么关系吗?

PS: …

c++ inheritance controls

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

Windows窗体的CheckBox CheckedChanged与CheckStateChanged

Windows Forms的CheckBox控件实现了两者CheckedChangedCheckStateChanged事件.据我所知,当复选框的选中状态发生变化时,两者都会触发.

CheckedChanged先于CheckStateChanged,但除此之外,我认为没有区别.我错过了什么吗?应该优先于另一个吗?

.net events controls winforms

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

WPF中ProgressBar上的文本

这可能是WPF认知的明智之举,但我想知道是否有一种简单的方法将文本放在WPF ProgressBar上.对我来说,空的进度条看起来很赤裸.这是屏幕房地产可能携带有关消息什么是进步,甚至只是添加数字来表示.现在,WPF完全是关于容器和扩展的,我正在慢慢地围绕着它,但由于我没有看到"文本"或"内容"属性,我想我将不得不添加一些东西到我的进度条的容器.是否有一种技术或两种技术比我原来的WinForms冲动更自然?什么是最好的,最WPF自然的方式来添加文本到进度条?

.net wpf controls progress-bar

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

为什么<%=%>表达式作为服务器控件上的属性值会导致编译错误?

这个问题是我在尝试回答另一个问题时注意到的结果.现在我很好奇知道为什么<asp:TextBox runat="server" Visible="<%= true %>" />会导致编译错误,而不是像我期望的那样导致可见的TextBox.

从我迄今发现的内容来看,<%= %>表达式并没有像我一直认为的那样被翻译成文字控件.但是,在呈现页面时,它会被评估并直接写入HtmlTextWriter.但显然解析器(我不确定这是将ASP.NET标记转换为.NET代码的部分的正确术语)<%= %>在将它们用作服务器控件的属性值时甚至不会尝试计算表达式.它只是将它用作字符串.我猜这就是为什么我收到错误消息:无法从'Visible'属性的字符串表示'<%= true%>'创建'System.Boolean'类型的对象.

如果我改为抛弃runat ="server"并将其<%= %>与常规的html-markup 相结合,如下所示:

<input type="button" id="Button1" visible='<%= true %>' />
Run Code Online (Sandbox Code Playgroud)

然后解析器只是在表达式之前和之后将块拆分为部分,然后将其写入render方法中的HtmlTextWriter.像这样的东西:

    __w.Write("<input type=\"button\" id=\"Button1\" visible='");
    __w.Write(true);
    __w.Write("' />");
Run Code Online (Sandbox Code Playgroud)

作为我注意到的最后一件事...当我尝试<%# %>+ Control.DataBind(),然后我得到我期望的.它将控件数据绑定时使用的表达式挂钩,但与<%=%>表达式不同,生成的代码实际上会计算<%# %>表达式的内容.解析器最终生成以下内容:

[DebuggerNonUserCode]
private Button __BuildControldataboundButton()
{
    Button button = new Button();
    base.databoundButton = button;
    button.ApplyStyleSheetSkin(this);
    button.ID = "databoundButton";
    button.DataBinding += new EventHandler(this.__DataBindingdataboundButton);
    return button;
}

public void __DataBindingdataboundButton(object sender, EventArgs e)
{ …
Run Code Online (Sandbox Code Playgroud)

asp.net controls

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

在Windows窗体中访问另一个窗体上的控件的最佳方法?

首先,这是一个关于使用Windows窗体的桌面应用程序的问题,而不是ASP.NET问题.

我需要与其他表单上的控件进行交互.我试图通过使用,例如,以下来访问控件...

otherForm.Controls["nameOfControl"].Visible = false;
Run Code Online (Sandbox Code Playgroud)

它不像我期望的那样工作.我最终抛出了一个例外Main.但是,如果我public而不是制作控件private,我可以直接访问它们,因为......

otherForm.nameOfControl.Visible = false;
Run Code Online (Sandbox Code Playgroud)

但这是最好的方法吗?是否public将其他形式的控件视为"最佳实践"?是否有"更好"的方式访问另一种形式的控件?

进一步说明:

这实际上是我提出的另一个问题的后续问题,在C#中创建"树视图首选项对话框"类型的界面的最佳方法?.我得到的答案非常好,解决了许多很多组织问题,这些问题在保持用户界面简单易用的同时兼顾了运行时和设计时.然而,它确实提出了一个轻松控制界面其他方面的问题.

基本上,我有一个根表单,它实例化了根表单中面板中的许多其他表单.因此,例如,其中一个子表单上的单选按钮可能需要更改主,根表单上的状态条图标的状态.在这种情况下,我需要子表单与父(根)表单的状态条中的控件进行通信.(我希望这是有道理的,而不是在"谁是第一个"的方式.)

c# controls winforms

47
推荐指数
4
解决办法
17万
查看次数

有简单的JavaScript滑块吗?

我需要为WMP对象创建自定义音量滑块.当前的滑块很难修改和使用,是否有一种简单的方法可以在HTML页面上生成滑块,将其值传递给javascript函数?

javascript controls wmp slider

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

获取相对于整个屏幕的控件的位置?

假设我有一个Control,它的位置是相对于它的父级.如果它嵌入很多次并且是主要形式的伟大曾孙,我如何确定它在我的整个屏幕上的位置,而不仅仅是它在直接父母中的位置?这是为了通过屏幕截图打印特定的控件(因为对于某些控件,DrawToBitmap无法正常工作).

c# controls location winforms

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

如何设置哪个控件专注于应用程序启动

在C#/ Winforms中,如何在应用程序启动时设置默认焦点?

c# controls focus init winforms

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

DataGridView - 如何设置列宽?

我有一个带DataGridView控件的WinForms应用程序.我的控件有五列(比如"姓名","地址","电话"等)

我对默认列宽不满意.我希望能更好地控制列外观.我想要的是能够做到以下之一:

  • 以百分比设置每列的宽度
  • 设置每列的宽度(以像素为单位)
  • 使用其他一些最好的方法(使宽度适合文本等)

请建议 - 使用哪个属性以及如何使用.

.net controls datagridview winforms

40
推荐指数
5
解决办法
24万
查看次数

在Drupal/CMS项目上使用版本控制

我想知道使用Drupal(或任何其他CMS)开发网站的团队如何将版本控制,颠覆,git或类似功能集成到他们的工作流程中.您显然希望自定义代码和主题文件受版本控制,但是当您使用诸如Drupal之类的CMS时,很多工作包括配置模块和设置,所有这些都存储在数据库中.

所以当你是一个开发团队时,你如何在这样的项目上进行协作?将数据库转储到文件中并将该文件置于版本控制之下可能会起作用,但是当网站处于活动状态时,客户端会不断添加内容,这使得同步有点问题.

我很想知道其他人是如何做到这一点的.

controls drupal version content-management-system

39
推荐指数
1
解决办法
9524
查看次数