热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何能让EditBox显示背景图?任何方法都行!分不是问题

在C#中EditBox重载OnPaint等方法后虽然能实现显示背景图。但用户输入数据时背景就会变回BackColor的颜色,而不是背景图。怎样能实现在用户输入数据时也能显示背景图呢。不管什么方
在C#中EditBox重载OnPaint等方法后虽然能实现显示背景图。但用户输入数据时背景就会变回BackColor的颜色,而不是背景图。怎样能实现在用户输入数据时也能显示背景图呢。
  不管什么方法,甚至自己做一个EditBox控件都行。请给出具体实现方法。或发到我的邮箱byrrj@163.net
  只要方法可行,要多少分请说。

25 个解决方案

#1


EditBox在默认情况下是不支持透明颜色的,可以使用下面的方法让其支持:

SetStyle(ControlStyles.SupportsTransparentBackColor, True)

有了上面语句的运行,EditBox就可以支持透明背景色。

既然能让EditBox支持背景色,设置背景图片是否就简单了呢?

我现在没有办法查阅资料,是否可以象设置背景色一样的解决,但下面的方法也是一个替代的解决办法:

放置一个图片,把EditBox放置在图片上面,这样图片就变成EditBox的背景图片了,这个时候,只要再把EditBox的背景色设置为透明,是否就可以解决了呢?

#2


triout(笨牛):
我已按你的方法做了。但没有作用。TextBox还是不透明。你试过行的吗?

#3


关注,学习

#4


帮你顶

#5


请各位继续指导

#6


up

#7


up

#8


设置样式不行吗?

.XpButton01
{
BORDER-RIGHT: #333333 1px solid; 
BORDER-TOP: #333333 1px solid; 
FONT-SIZE: 9pt; 
BACKGROUND: url(../images/input.gif) #ffffff; 
BORDER-LEFT: #333333 1px solid; 
COLOR: #000000; 
BORDER-BOTTOM: #333333 1px solid; 
FONT-FAMILY: verdana;
font-style:normal;
width: 60px
}

#9


我说的是WinForm不是Web.
有没有人会呀。
或者提供一些自己做一个TextBox控件的方法来啦!

#10


学习...............
学习................

#11


http://community.csdn.net/Expert/topic/3199/3199558.xml?temp=.5888788

我测试,发现确实不行。

上面的连接的楼主说已经解决了让TextBox透明的问题,可以咨询一下。

#12


关注

#13


请各位继续指导
或者提供一些自己做一个TextBox控件的方法来啦!

#14


up

#15


请各位继续指导
或者提供一些自己做一个TextBox控件的方法来啦!

#16


你是用的WebForm吗? 我以前是用TD上放一个TextBox(透明),然后加载背景图片.




backbmp.Style.Add("BACKGROUND-IMAGE",file);

#17


不是WebForm,是WinForm.
没有人会呀??
请帮帮忙啦

#18


up
等待高手来临!!!!!!!!!!!!!!1

#19


真的没有人会呀

#20


using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Runtime.InteropServices;

namespace WindowsApplication1
{
/// 
/// Form1 的摘要说明。
/// 

public class Form1 : System.Windows.Forms.Form
{

const int GWL_EXSTYLE = -20;
const int LWA_ALPHA = 0x00000002;
const int WS_EX_LAYERED = 0x00080000;
private System.Windows.Forms.RichTextBox richTextBox1;
const int LWA_COLORKEY = 0x00000001;

[DllImport("User32.DLL")]
public static extern int SetLayeredWindowAttributes(IntPtr hwnd,uint crKey,byte bAlpha,uint dwFlags);
[DllImport("User32.DLL")]
public static extern long GetWindowLong(IntPtr hWnd,int nIndex);
[DllImport("User32.DLL")]
public static extern long SetWindowLong(IntPtr hWnd,int nIndex,long dwNewLong);



/// 
/// 必需的设计器变量。
/// 

private System.ComponentModel.Container components = null;

public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();

//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//


}

/// 
/// 清理所有正在使用的资源。
/// 

protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null) 
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows 窗体设计器生成的代码
/// 
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// 

private void InitializeComponent()
{
this.richTextBox1 = new System.Windows.Forms.RichTextBox();
this.SuspendLayout();
// 
// richTextBox1
// 
this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.richTextBox1.Location = new System.Drawing.Point(0, 0);
this.richTextBox1.Name = "richTextBox1";
this.richTextBox1.Size = new System.Drawing.Size(624, 312);
this.richTextBox1.TabIndex = 0;
this.richTextBox1.Text = "richTextBox1";
// 
// Form1
// 
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.BackColor = System.Drawing.Color.White;
this.ClientSize = new System.Drawing.Size(624, 400);
this.Controls.Add(this.richTextBox1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.SizableToolWindow;
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Form1";
this.ResumeLayout(false);

}
#endregion
private void SetTextWindowOpacity(Control box)
{
IntPtr handle = box.Handle;
long lRt=GetWindowLong(handle,GWL_EXSTYLE);
lRt=lRt|WS_EX_LAYERED; 
SetWindowLong(handle,GWL_EXSTYLE,lRt); 
SetLayeredWindowAttributes(handle,0XFFFFFF,0,LWA_COLORKEY); 


}
protected override void OnLoad(EventArgs e)
{
base.OnLoad (e);
SetTextWindowOpacity(this);

}

/// 
/// 应用程序的主入口点。
/// 

[STAThread]
static void Main() 
{
Application.Run(new Form1());
}



}
}

#21


呵..看来楼主的问题,同我过去遇到的相似..
我当时是要做一个可以带背景的RichTextbox也就是像QQ的聊天窗口那样,可以带背景图片的.
RichTextBox虽然有BackgroundImage属性,但它并没有实现这个属性.实际是不可用的,当时发了贴.查了好多资料也没有解决.后来,想到了这个迂回的办法..基本上解决了这个问题..

把上面的代码编译执行后,你就可以在桌面上看到一个透明的RichTextbox,漂亮的桌面都可以看到,同时也可以输入文字,很酷的..

如果想在别的窗体中使用,只要把这个窗口改成无边框,非顶级的窗口即可.

#22


着伟大哥果然是高啊!

#23


效果是出来了,但总不能用户用鼠标点击选择RichTextbox的文字时。窗口就失去焦点吧。

#24


鼠标事件是被下面的窗口接收到了. 你在下面的窗口的MouseDown事件中,判断它是否得到了焦点,如果得到了,调用TextBox的Focus方法.试一下.

#25


虽然不合我用。但效果出来了,我不吃言。给分

推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 判断数组是否全为0_连续子数组的最大和的解题思路及代码方法一_动态规划
    本文介绍了判断数组是否全为0以及求解连续子数组的最大和的解题思路及代码方法一,即动态规划。通过动态规划的方法,可以找出连续子数组的最大和,具体思路是尽量选择正数的部分,遇到负数则不选择进去,遇到正数则保留并继续考察。本文给出了状态定义和状态转移方程,并提供了具体的代码实现。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • C# WPF自定义按钮的方法
    本文介绍了在C# WPF中实现自定义按钮的方法,包括使用图片作为按钮背景、自定义鼠标进入效果、自定义按压效果和自定义禁用效果。通过创建CustomButton.cs类和ButtonStyles.xaml资源文件,设计按钮的Style并添加所需的依赖属性,可以实现自定义按钮的效果。示例代码在ButtonStyles.xaml中给出。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
author-avatar
执子之手2502891083
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有