GVKun编程网logo

c# – 如何在winform上向用户定义的文本框添加工具提示(c#怎么给文本框赋值)

13

本文将带您了解关于c#–如何在winform上向用户定义的文本框添加工具提示的新内容,同时我们还将为您解释c#怎么给文本框赋值的相关知识,另外,我们还将为您提供关于.NETWinFrom中给文本框添加

本文将带您了解关于c# – 如何在winform上向用户定义的文本框添加工具提示的新内容,同时我们还将为您解释c#怎么给文本框赋值的相关知识,另外,我们还将为您提供关于.NET WinFrom中给文本框添加拖放事件的代码、c – 为什么插入用户定义的析构函数需要用户定义的复制构造函数、c – 哪些用户定义的文字是按照标准预定义的?、c – 如何在命名空间中引用用户定义的文字运算符?的实用信息。

本文目录一览:

c# – 如何在winform上向用户定义的文本框添加工具提示(c#怎么给文本框赋值)

c# – 如何在winform上向用户定义的文本框添加工具提示(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 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 – 为什么插入用户定义的析构函数需要用户定义的复制构造函数

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 – 哪些用户定义的文字是按照标准预定义的?

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 – 如何在命名空间中引用用户定义的文字运算符?

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 – 如何在命名空间中引用用户定义的文字运算符?的相关信息,可以在本站进行搜索。

本文标签:

上一篇c# – 在卸载Winform应用程序时完全删除所有文件夹和文件?(卸载窗体form1的语句是)

下一篇c# – json.net序列化继承自List的类的附加条件属性(c#序列化 list中的继承类)