c# – 如何在winform上向用户定义的文本框添加工具提示(c#怎么给文本框赋值)
13
本文将带您了解关于c#–如何在winform上向用户定义的文本框添加工具提示的新内容,同时我们还将为您解释c#怎么给文本框赋值的相关知识,另外,我们还将为您提供关于.NETWinFrom中给文本框添加
本文将带您了解关于c# – 如何在winform上向用户定义的文本框添加工具提示的新内容,同时我们还将为您解释c#怎么给文本框赋值的相关知识,另外,我们还将为您提供关于.NET WinFrom中给文本框添加拖放事件的代码、c – 为什么插入用户定义的析构函数需要用户定义的复制构造函数、c – 哪些用户定义的文字是按照标准预定义的?、c – 如何在命名空间中引用用户定义的文字运算符?的实用信息。
本文目录一览:
我有一个表单上有多个实例的uvSelfLoadingTextBox.
我想在运行时加载带有_value属性的工具提示.
我试过了
public ucSelfLoadingTextBox()
{
Windows.Forms.ToolTip myToolTip;
myToolTip.AutomaticDelay = 5000;
myToolTip.AutopopDelay = 50000;
myToolTip.InitialDelay = 100;
myToolTip.ReshowDelay = 500;
myToolTip.SetToolTip(this,_value);
在控件内但不起作用.
我已经尝试使用拖到表单上的工具提示
ucSelfLoadingLogicTextBox uc = new ucSelfLoadingLogicTextBox();
toolTipA.SetToolTip(uc,uc._value );
这不起作用.
这样做的正确方法是什么?
解决方法
你忘了实例化myToolTip.您需要将其设置为新的Tooltip().
另外,我认为在文本框的构造函数中分配工具提示并不是一个好习惯.您可以在OnCreateControl()
中执行此操作(您需要覆盖).
因此,您的代码可能变为:
protected override void OnCreateControl()
{
base.OnCreateControl();
var myToolTip = new System.Windows.Forms.ToolTip
{
AutomaticDelay = 5000,AutopopDelay = 50000,InitialDelay = 100,ReshowDelay = 500
};
myToolTip.SetToolTip(this,this.Text);
}

.NET WinFrom中给文本框添加拖放事件的代码
在开发.NET WinForm程序时,有时候我们希望窗体上的文本框能接受鼠标拖放事件,比如允许将文件直接拖放到文本框中以直接获取到文件的本地路径,或者将选取的字符串直接拖放到文本框中等等。要实现这个功能其实很简单,代码如下。
1. 将文本框的属性AllowDrop设置成True
2. 给文本框添加DragEnter事件
复制代码 代码如下:
private void textBox1_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop, false))
{
e.Effect = DragDropEffects.All;
}
}
注意DataFormats下面有许多其它的属性允许你将不同类型的数据拖放到文本框中。上面的代码用于将文件的本地路径拖放到文本框中。
3. 给文本框添加DragDrop事件以接收数据
复制代码 代码如下:
private void textBox1_DragDrop(object sender, DragEventArgs e)
{
this.textBox1.Text = GetDragData((string[])e.Data.GetData(DataFormats.FileDrop));
}
你还可以给其它的控件添加鼠标拖放事件,如ListBox等,方法类似。
您可能感兴趣的文章:- WinFrom中label背景透明的实现方法
- C# winfrom 模拟ftp文件管理实现代码
- winfrom 在业务层实现事务控制的小例子
- winfrom 打印表格 字符串的封装实现代码 附源码下载
- C#之WinForm跨线程访问控件实例
- c#中多线程访问winform控件的若干问题小结
- 深入分析C#中WinForm控件之Dock顺序调整的详解
- C#中让控件全屏显示的实现代码(WinForm)
- WinForm实现按名称递归查找控件的方法
- WinForm自定义控件应用实例
- 简介Winform中创建用户控件
- WinForm 自动完成控件实例代码简析
- C#的winform控件命名规范

c – 为什么插入用户定义的析构函数需要用户定义的复制构造函数
以下代码编译:
#include <vector>
#include <iostream>
#include <memory>
using namespace std;
class container
{
public:
container(){}
~container(){}
};
class Ship
{
public:
Ship(){}
//Ship(const Ship & other){cout<<"copY"<<endl;}
//~Ship(){}
std::unique_ptr<container> up;
};
Ship buildShip()
{
Ship tmp;
return tmp;
}
int main(int argc,char *argv[])
{
return 0;
}
但是如果我们包含用户定义的析构函数~Ship(){},那么只有当我们还包括用户定义的复制构造函数Ship(const Ship& other){cout<<“copY”<< endl时,代码才会编译;} 简而言之: 编译:
Ship(){}
//Ship(const Ship & other){cout<<"copY"<<endl;}
//~Ship(){}
编译:
Ship(){}
Ship(const Ship & other){cout<<"copY"<<endl;}
~Ship(){}
不编译:
Ship(){}
//Ship(const Ship & other){cout<<"copY"<<endl;}
~Ship(){}
为什么插入用户定义的析构函数需要用户定义的复制构造函数,为什么我们在上面的例子中需要一个复制构造函数呢?
我希望上面的例子中不需要复制构造函数,因为甚至无法复制unique_ptr.
解决方法
代码被编译,因为buildShip()将使用返回tmp时由编译器自动生成的移动构造函数.添加用户声明的析构函数可防止编译器自动生成析构函数.例如,请参阅
this或
this问题.并且由于成员up是std :: unique_ptr,因此无法使用编译器生成的复制构造函数.并且显式删除了unique_ptr的复制构造函数.
所以这将编译,因为显式要求编译器生成移动构造函数:
class Ship
{
public:
Ship(){}
Ship(Ship&&) = default;
~Ship(){}
std::unique_ptr<container> up;
};

c – 哪些用户定义的文字是按照标准预定义的?
我的问题听起来像一个矛盾,但我不知道如何引用除用户定义的文字之外的新的文字语法.
std::string operator "" s ( const char* str,size_t len ){ return std::string( str,len );}assert( "foo"s == "bar"s );
我记得听说用户定义的文字应该以_前缀开头.这意味着图书馆为我们定义了一些非前缀的文字.
该标准是否在标准库中提供了一些UDL?
如果是,他们是什么?
解决方法
该语言已经使用常规文字后缀,例如1U.
如果你使用U作为用户定义的文字,那么这个建议就会变得模棱两可.
整数后缀:u,U,l,L,ll,LL
浮动后缀:f,F,L

c – 如何在命名空间中引用用户定义的文字运算符?
考虑以下:
#include <iostream>
namespace X
{
void operator ""_test(unsigned long long x)
{
std::cout << x;
}
}
int main()
{
using namespace X;
10_test;
// 10_X::test; /* doesn't work */
}
我可以通过显式使用命名空间X;来引用命名空间X中的user defined literal operator.有没有明确包含命名空间的方式引用文字运算符?我试过了
10_X::test;
但当然不起作用,因为解析器认为X指的是运算符的名称.
X::operator ""_test(10)
工作,但它很笨拙.
解决方法
#include <iostream>
namespace X {
inline namespace literals {
void operator ""_test(unsigned long long x) {
std::cout << x;
}
}
}
int main() {
{
using namespace X::literals;
10_test;
}
{
using X::operator""_test;
10_test;
}
}
_test都在X和X :: literals中.这允许人们使用命名空间X :: literals;没有从X中提取所有内容,但在X _test中也可以使用.
导入单个文字有点烦人.
std使用std :: chrono和std :: literals以及std :: chrono :: literals进行此操作.内联命名空间允许您定义命名空间的子部分,您认为人们希望将其作为块导入而不会获取其余的部分.
我们今天的关于c# – 如何在winform上向用户定义的文本框添加工具提示和c#怎么给文本框赋值的分享就到这里,谢谢您的阅读,如果想了解更多关于.NET WinFrom中给文本框添加拖放事件的代码、c – 为什么插入用户定义的析构函数需要用户定义的复制构造函数、c – 哪些用户定义的文字是按照标准预定义的?、c – 如何在命名空间中引用用户定义的文字运算符?的相关信息,可以在本站进行搜索。