急!!C#中二进制数据与通过RichTextBox输入的数据如何比较?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了急!!C#中二进制数据与通过RichTextBox输入的数据如何比较?相关的知识,希望对你有一定的参考价值。
我用C#做了一个管理系统,数据库用的是sql2005,数据库表里的数据类型为二进制类型。我通过C#做的界面向数据库里添加数据,必须要实现不能重复添加相同数据的功能。通过richTextBox这个控件来输入数据。我是想着把输入的数据与数据库里的二进制数据进行比较一下,如果有相同数据则不能插入。该怎样转化才能让输入的数据与数据库中的二进制数据进行比较呢????求高手帮忙!!!
这是我的部分代码
QuestionContent在数据库中为二进制类型。
string str=RichTextContent.text;
string sql = "select * from tb_Paper where QuestionContent=" + str;
int count;
count = operate.Nums(sqlt);
if (count > 0)
MessageBox.Show("请不要选择同样的题目!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
该怎样改呢???
如果那样反过来的话,代码该怎么写呢?您能帮帮忙吗?
追答判断重复你是用什么来判断是否重复的?名字?还是其它的什么
追问通过QuestionContent这个字段,这个字段存的是试题内容。
追答你先自己找下资料,如果找不到我再给你代码
追问我用百度HI 加你了 你同意一下吧 可以HI 上说!
追答//执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行
byte[] result = (byte[])com.ExecuteScalar();
//两种方法转换
//1.根据你的存储方法,将这个二进制数组解析你的结构
//2.如果这个二进制数组是通过将一个结构对象序列化得到的,那么反序列化就行了
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter bin = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bin.Deserialize(new System.IO.MemoryStream(result));
跟这个类似
//字符串转二进制
byte[] bt= Encoding.Unicode.GetBytes(textBox1.Text);
StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in bt)
result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
string sql = "select * from tb_Paper where QuestionContent=" + result .tostring();
int count;
count = operate.Nums(sqlt);
if (count > 0)
MessageBox.Show("请不要选择同样的题目!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
追问
您说的byte[] bt= Encoding.Unicode.GetBytes(textBox1.Text)中的textBox1.Text应该是RichTextContent.Text吧 ?StringBuilder result = new StringBuilder(data.Length * 8);中的data输入不进去,我把data 改成bt 运行后还是有错误,提示说不识别人输入的问题,我该改成什么呀??
追答string str=RichTextContent.text;
byte[] data = Encoding.Unicode.GetBytes(str);
StringBuilder result = new StringBuilder(data.Length * 8);
foreach (byte b in data)
result.Append(Convert.ToString(b, 2).PadLeft(8, '0'));
这个转化2进制的方法是公认的,所以不会转化错误的。所以问题应该出在count = operate.Nums(sqlt);这个方法。调试跟踪一下,很容易发现问题的。
在 C# 中的 RichTextBox 中清除文本
【中文标题】在 C# 中的 RichTextBox 中清除文本【英文标题】:Clear Text in RichTextBox in C# 【发布时间】:2012-04-23 13:29:24 【问题描述】:我有一个 RichTextBox,我想对其进行编码,当用户在框中左键单击时,该文本框中的文本会被清除。
有人可以帮帮我吗?
我尝试过的代码是:
private void richTextBox1_TextChanged(object sender, EventArgs e)
richTextBox1.text = "";
目前我有一个写有“在此处输入文本”的框(在属性部分的文本下) - 所以当用户在框内单击时,它将清除该文本,因此用户可以输入文本在那里。
谢谢。
【问题讨论】:
如果用户不使用鼠标而只是 Tab 键使 RichTextBox 成为焦点会发生什么? 或者如果用户将文本更改为他想要的内容?! 【参考方案1】:试试这个
private void richTextBox1_Click(object sender, EventArgs e)
if (richTextBox1.Text == "Input Text Here")
richTextBox1.Clear();
richTextBox1.Focus();
它会检查默认文本是否存在,如果存在则将其清除并赋予 Richbox 焦点,以便您输入文本。否则,它会继续进行常规的文本更改。
【讨论】:
如果您需要帮助,请告诉我,记住,当然用您的等替换我的对象名称。【参考方案2】:订阅 rtb 的 MouseClick,然后执行:
private void richTextBox1_MouseClick(object sender, MouseEventArgs e)
if (e.Button == MouseButtons.Left)
richTextBox1.Clear();
【讨论】:
我认为您不想在每次鼠标左键单击时清除文本! :) 你说得对,我不想每次鼠标点击都清除它,但是这个程序的主要原因不是保存输入的文本,而是当它在框中时使用它 -该程序是将文本转换为可读文本的工具。所以我左边有一个输入文本框,右边有一个可读列表框,中间有一个按钮。【参考方案3】:您正在寻找的是一个提示文本框。您可以通过一个 WINAPI 调用来完成此操作。
将此作为参考:http://www.codeproject.com/Articles/18858/Fully-themed-Windows-Vista-Controls
【讨论】:
【参考方案4】:我是VS2015用户。
richTextBox1.Clear(); // Form
richTextBox1.Document.Blocks.Clear(); // WPF
【讨论】:
【参考方案5】:这将起作用:
转到富文本框的“属性”。您将在第一行选项卡中看到一个黄色闪电。在那里,您将找到所有可能触发的事件。搜索“Enter”或“Click”条目,双击它。你可以放任何你想要的东西(比如richTextBox1.Text = "";)
【讨论】:
以上是关于急!!C#中二进制数据与通过RichTextBox输入的数据如何比较?的主要内容,如果未能解决你的问题,请参考以下文章
C# winform中 怎么让RichTextBox支持透明。通过继承还是重绘了?最好有代码,菜鸟学习中。
C#中如何改变richtextbox中已选择部分的字体和颜色?