C#如何调用其他窗体的Textbox控件值?

想这样实现:Form1里的textbox1的值为2时,点击Form2的“下一步”可以打开Form3.
如果Form1里的textbox1的值为1时,点击Form2的“下一步”不会有反应。

我已经将textbox设置为Public,但不知道如何调用,这样写对不对?

        form1 frm = new form1();
        frm.textBox1.Text;
        private void button_Click(object sender, EventArgs e)
        {
            this.Close();
            form3 F2 = new form3();
            F2.Show();
        }
JIL12
Az Ning 里面应该有一个if语句吧,不知道怎么实现-.-
大约 2 个月之前 回复

2个回答

访问方法太多了,Form也是一个类,你平常怎么一个类访问另一个类的字段这个就怎么访问

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#中自定义类给窗体中的textbox.text赋值
C#项目中,定义了一个类reader.cs 现在想在reader中调用from1中的textbox1并且直接给textbox1.text赋值。 请教各位了。
C#如何在1个窗体调用另外1个窗体控件的值
我想调用form2里numericupdown控件里的值传递到form1里的textbox控件里 刚开始我是设置了1个全局静态decimal变量来接收,可是发现不行.是我想错了还是怎么?求大神解答
C#中窗体控件textbox的用法
在文本框中输入数据,判断输入数据的范围,若超出范围则重新输入,怎么写代码?
c#中TextBox控件设置了ScrollBars属性为both,缩小窗体,水平竖直滚动条都不见了
c#中TextBox控件设置了ScrollBars属性为both,为何运行后缩小窗体,水平竖直滚动条都不见了,感觉是每当缩小到某一个大小之后滚动条就不见了,再放大就出来了,好像被什么遮住了一样,可是,Dock属性设为Fill,不应该呀,求大神指教!!!
C# asp.net web窗体 timer控件还有FileSystemWatcher无法修改页面
就是在HTML界面按下一个button后,想实现数据输入,用线程处理,最后返回结果,但是输入处理都没问题,就是无法把结果返回到界面上,连想修改一个textbox里的text也无法做到,刷新也咩有用··· ps:有更好的办法判断线程输出已完成,我之前用timer莫名其妙就是无法跳入tick事件里面;用FileSystemWatcher可以触发事件,但是因为是流输出,有多少行数据就会触发多少回,还会影响到输出。有木有一次性输出的··· 代码如下: ``` //提交当前行 protected void Button2_Click(object sender, EventArgs e) { // if (FileUpload1.HasFile) { FileUpload1.SaveAs(Server.MapPath("upload") + "//" + FileUpload1.FileName); //exceldata是一个datatable,LoadDataFromExcel函数是读取Excel文件返回datatable exceldata = LoadDataFromExcel(Server.MapPath("upload") + "//" + FileUpload1.FileName); //make_table(); //显示输入结果 GridView1.DataSource = exceldata; GridView1.DataBind(); //调用FileSystemWatcher的函数 find_out_end("M:\\", "*.txt"); //调用timer //timer1.Enable=true;//之前尝试用timer来修改界面也不成功 } else { TextBox4.Text = "nofile"; } } ``` 其中FileSystemWatcher的触发后的函数: ``` public void OnProcess(object source, FileSystemEventArgs e) { TextBox5.Text = "end";//textbox5是web界面上的一个textbox,但是结果就是不显示,刷新也不行;加断点有路过这句话,但是界面就是没有反应 } ```
在c#窗体程序datetimepicker控件值转换为string,但显示将截断字符串或二进制数据,长度够
string s姓名 = textBox1.Text; string s性别 = comboBox1.Text; string s所属科室 = comboBox2.Text; string s出生日期 = dateTimePicker1.Value.ToString("yy-MM-dd"); //string s出生日期 = ((DateTime)dateTimePicker1.Value).ToString("yyyy-MM-dd"); string s身份证号 = textBox2.Text; string s登录口令 = textBox3.Text; if (textBox3.Text.Length != 18) { // if (!this.CheckCardId(textBox3.Text)) //若CheckCardId返回值为false,提醒并return // { // MessageBox.Show("身份证号有误,请检查!"); // return; // } // year = Convert.ToInt32(textBox3.Text.Substring(6, 4)); //截取字符串id第6位第7位 //} //else //{ MessageBox.Show("你输入的身份证号格式有误!"); return; } //SqlConnection conn = new SqlConnection(); //conn.ConnectionString = "server=localhost;database=HIS;user=sa;pwd=123456"; DBObject db = new DBObject(); SqlConnection conn = db.dataconn(); conn.Open(); SqlCommand cmd = new SqlCommand(); cmd.Connection = conn; cmd.CommandText = "insert into 员工档案(姓名,性别,所属科室,出生日期,身份证号,登录口令)values ('" + s姓名 + "','" + s性别 + "','" + s所属科室 + "','" + s出生日期 + "','" + s身份证号 + "','" + s登录口令 + "')"; //cmd.CommandText = "insert into 员工档案 values(姓名 = '" + s姓名 + "',性别 = '" + s性别 + "',所属科室 = '" + s所属科室 + "',出生日期 = '" + 出生日期 + "',身份证号 = '" + s身份证号 + "',登录口令 = '" + s登录口令 + "')"; //cmd.ExecuteNonQuery(); int row = cmd.ExecuteNonQuery(); //关闭数据库的连接 //释放数据库的连接 //conn.Dispose(); if (row > 1) { MessageBox.Show("添加成功!"); } else { MessageBox.Show("添加失败!"); }
c# 写的windows 窗体应用程序 运行后 界面卡主不动 程序照样运行
本人小白菜菜鸟,刚学会c# 不久,用vs2015写了几个程序,大致内容:循环读取文件夹内word信息, 界面两个按钮,开始和停止。点开始后,程序运行,然后界面就卡主不动了,点停止没反应,点窗体上的叉叉也没反应,只能任务管理器结束进程。请问这是为什么? Ps:代码里面没有timer类的控件。 部分代码如下: 其中的doc和app是全局变量 private static Word.Application app = new Word.Application(); private static Word.Document doc = null; ``` private void button2_Click(object sender, EventArgs e) { var files = Directory.GetFiles(wordPath, "*.doc"); foreach (var file in files) { button2.Text = "进行中。。。"; wordName = file.Replace(textBox2.Text, ""); textBox1.Text = wordName; textBox1.Refresh(); string paperName = wordName.Replace(".doc", ""); if (Sql.existsExam(paperName) > 0) { listBox2.Items.Add ( "此试卷已存在!"+ file.ToString()); listBox2.Refresh(); continue; } try { exam_id=Sql.getExamId(); wordNameSave = wordName.Substring(0, wordName.IndexOf(".")); String path = @"d:\word/img_hy/" + exam_id; BaseClass.createFile(path); BaseClass.writeFile("d:\\word\\log.txt", "**********************************************************************", 0, 1); string log = file+" "+ DateTime.Now.ToString(); BaseClass.writeFile("d:\\word\\log.txt",log, 0, 1); doc = app.Documents.Open(file); //一会要记录word打开的文档 string strContent = ReadWordMian.readWordMain(app, doc, path, wordNameSave); Sql.insertExam(ReadWordMian.paperHead,exam_id, grade_id, subject_id); cutExercises(strContent); log = "we have a finish ! " + wordNameSave + " " + DateTime.Now.ToString(); //Console.WriteLine(DateTime.Now.ToString()); BaseClass.writeFile("d:\\word\\log.txt", log, 0, 1); } catch (Exception err) { button2.Text = "批量入库"; //listBox2.Items.Add("异常:"+"此文件读取异常"+ file+" "+err); BaseClass.writeFile("d:\\word\\log.txt", "异常:" + "此文件读取异常" + file + " " + err, 0, 1); } } // listBox2.Items.Add(error_string); doc.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(doc); app.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(app); button2.Text = "批量入库"; } ```
c#对数据表格控件已选行记录的调用
public partial class FrmMainfo : Form { public FrmMainfo() { InitializeComponent(); } string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; private void button2_Click(object sender, EventArgs e) { FrmMadetail frmmadetail = new FrmMadetail(); frmmadetail.Show(); } private void FrmMainfo_Load(object sender, EventArgs e) { comboBox2.SelectedIndex = 0; comboBox3.SelectedIndex = 0; string sql = "select Id,sbmc,sbbh,sbfl,sblx,ggxh,azwz,sccj,sybm,sycj from Information"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); dataGridView1.DataSource = dt; } public class DvgData { public string id = ""; public string ID { get { return id; } set { id = value; } } } private void dataGridView1ListHeadText() { dataGridView1.Columns[0].HeaderText = "编号"; dataGridView1.Columns[1].HeaderText = "设备名称"; dataGridView1.Columns[2].HeaderText = "设备编号"; dataGridView1.Columns[3].HeaderText = "设备分类"; dataGridView1.Columns[4].HeaderText = "设备类型"; dataGridView1.Columns[5].HeaderText ="规格型号"; dataGridView1.Columns[6].HeaderText ="安装位置"; dataGridView1.Columns[7].HeaderText ="生产厂家"; dataGridView1.Columns[8].HeaderText = "使用部门"; dataGridView1.Columns[9].HeaderText = "使用车间"; dataGridView1.Columns[10].HeaderText = "外形尺寸"; dataGridView1.Columns[10].Visible = false; dataGridView1.Columns[11].HeaderText = "总重"; dataGridView1.Columns[11].Visible = false; dataGridView1.Columns[12].HeaderText = "总功率"; dataGridView1.Columns[12].Visible = false; dataGridView1.Columns[13].HeaderText = "出厂编号"; dataGridView1.Columns[13].Visible = false; dataGridView1.Columns[14].HeaderText = "制造日期"; dataGridView1.Columns[14].Visible = false; dataGridView1.Columns[15].HeaderText = "使用日期"; dataGridView1.Columns[15].Visible = false; dataGridView1.Columns[16].HeaderText = "购入日期"; dataGridView1.Columns[16].Visible = false; } private void button1_Click(object sender, EventArgs e) { string azwz = ""; //定义一个string 类型的变量 azwz = comboBox3.SelectedItem.ToString(); string sbfl=""; sbfl = comboBox2.SelectedItem.ToString(); string sqf = "select * from Information where azwz = '" +azwz.Trim() + "'and sbfl = '" +sbfl.Trim() + "'"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sqf, conn); conn.Open(); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); dataGridView1.DataSource = dt; this.dataGridView1ListHeadText(); } private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex > 0) { int id = (int)dataGridView1.Rows[e.RowIndex].Cells[0].Value;//记录选中的ID号 } } } } public partial class FrmMadetail : Form { public FrmMadetail() { InitializeComponent(); } string connStr = ConfigurationManager.ConnectionStrings["str"].ConnectionString; FrmMainfo frmmainfo = new FrmMainfo(); private void FrmMadetail_Load(object sender, EventArgs e) { string sqf = "select * from Information where ID = 1"; SqlConnection conn = new SqlConnection(connStr); SqlCommand cmd = new SqlCommand(sqf, conn); conn.Open(); DataTable dt = new DataTable(); SqlDataAdapter sda = new SqlDataAdapter(cmd); sda.Fill(dt); textBox1.Text = dt.Rows[0][1].ToString(); textBox2.Text = dt.Rows[0][2].ToString(); textBox3.Text = dt.Rows[0][3].ToString(); textBox4.Text = dt.Rows[0][4].ToString(); } 本人小白一个 现在需要把第一个窗体数据表格控件 选中的行 INT 记录下来 接着在 另外一个窗体LOAD事件中 利用这个记录值 用SQL语句进行查询 这个代码要如何实现呢 谢谢大家 初来咋到 全部自学啊 很辛苦
求助大神!! C# 用委托不同窗体传值的问题
我在网上看到的例子,自己试了下,有FORM1和FORM2两个窗体,分别有Button1和TextBox1两个控件,如下图: ![图片说明](https://img-ask.csdn.net/upload/201610/12/1476276710_26169.png) FORM1代码: public partial class Form1 : Form { public Form1() { InitializeComponent(); } public delegate void mydelegate(string text);//定义一个委托 public event mydelegate myevent;//定义上诉委托类型的事件 private void button1_Click(object sender, EventArgs e) { Form2 fm2 = new Form2(); fm2.Show(); if (myevent != null) { myevent(textBox1.Text); } } ![图片说明](https://img-ask.csdn.net/upload/201610/12/1476276724_366433.png) FORM2代码: public Form2() { InitializeComponent(); } string namedis; private void button1_Click(object sender, EventArgs e) { Form1 fm1 = new Form1(); fm1.myevent += new Form1.mydelegate(givevalue);//订阅FORM1的事件,调用givevalue()方法. textBox1.Text = namedis; } public void givevalue(string text) //用于修改textbox的方法 { this.namedis = text; } 向FORM1的TextBox1输入值,Button1触发传值和弹出FORM2; FORM2的Button1触发在TextBox1中显示传过来的值。 现在问题来了:FORM2的TextBox1始终显示为空,得不到FORM1传过来的值。这是调试界面,myevent值为null,这是为什么啊? ![图片说明](https://img-ask.csdn.net/upload/201610/12/1476277109_6000.png)
窗体编程中的DataGrid控件的使用
我想用c#实现一个功能,就是点击DataGrid控件中的某一行,这行记录中的内容就显示到相应的textBox中,比如一行记录中包括姓名,年龄,性别三列,点击后姓名显示在textBox1中,年龄显示在textBox2中,性别显示在textBox3中。 应该怎么实现?我做的是窗体的程序。求具体代码~谢谢各位了。
C#窗体程序,想在axmapcontrol空间上画线,标注出每个点的坐标
C#窗体程序,想在axmapcontrol空间上画线,标注出每个点的坐标,最好能显示在textboxbox控件里。。。 例如我点了三个点,textbox里会显示出(23,21),(54,67),(65,67)。我才开始学C#,所以问的问题 可能很蠢。。。希望各位大神帮帮忙。。。
C#窗体控件实现一个多线程序出现了点小问题,、请大家指点一下
刚刚学习C#,想创建一个时间的窗口,但是运行不了说是Thread没有声明,不知道怎么改,下面是程序的具体,请大神们看看 谢谢 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace 多线运行 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } delegate void SetTextCallback(string text); private void button1_Click(object sender, EventArgs e) { Thread t = new Thread(new ThreadStart(Show)); t.Start(); } private void SetText(string text) { if (textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); this.Invoke(d, new object[] { text }); } else { textBox1.Text = text; } } private void Show() { for (int i = 0; i < 500; i++) { SetText(DateTime.Now.ToString()); Thread.Sleep(100); } } } }
C#winform中的按钮点击事件中如何跳转到输入框输入数据才继续按钮中的事件?
如下面的代码,我要怎么跳转到输入框,好像是说manualResetEvent可以做到,可是我用了manualResetEvent会造成窗体假死,新手求大神指教, private void button13_Click(object sender, EventArgs e) { float totalCost = 0; foreach(float cost in TotalCost) { totalCost += cost; } listBox1.Items.Add("---------------------------"); listBox1.Items.Add("您一共消费了" + totalCost + "元"); //转到输入框输入金额,然后找钱, } 我想做的是一个非常简单的收银系统,消费总金额已得到并已显示到listbox控件上,现在是想在button事件中得到消费总金额后跳转到textbox中输入顾客给的钱数并找补,然后一并显示到listbox控件上,就像超市小票上一样,有个消费总额,还有顾客给的钱数,找零
c#windows窗体应用程序数据存储,显示,打印和导出
新建一个windows窗体应用程序 创建form1和form2两个页面 ----------------------------- 在form1页面上添加控件button1(新增),button2(修改),button3(删除),button4(导出).datagridview(用来显示数据). 在form2页面上添加多个textbox(让用户输入数据) ----------------------------- 现在我已经做好了的是当点击button1跳转到form2页面,用户填写数据点击确定后将数据存入到一个xml文件中.xml中数据格式如下: <?xml version="1.0"?> <ArrayOfLWJL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <LWJL> <ID>df13d4aa-bd0f-48c2-aba9-4c389ad12b2f</ID> <TIME>2016-11-03T00:00:00</TIME> <BM>BM</BM> <ZH>ZH</ZH> <TM>TM</TM> <PS>PS</PS> <JG>JG</JG> </LWJL> </ArrayOfLWJL> ----------------------------- 现在我不会做的是将xml文件中的数据对应显示在form1上的datagridview中并且当点击button4的时候能导出datagridview中的数据成excel表。 请各位大神帮帮忙。求全部代码。万分感谢!!!
进销存管理系统C#中,什么存在二义性,inputDataGridArray[0]这里不懂怎么改
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; namespace 进销存管理系统 { public partial class StockTable : Form { private LinkDataBase link = new LinkDataBase(); private DataTable newTable; //保存从”供货商信息维护”窗体中选择后传过来的数据,它们将被放入DataGrid的相 应表格中 public static string[] inputDataGridArray = new string[]{null,null,null}; //保存从”供货商信息维护”窗体中选择后传过来的数据,它们将被赋值给供货商号和名称 //的控件Text属性 //确定要赋的值为文本,故用空字符初始化 public static string[] inputDataGridArray = new string[] {"",""}; private DateTime gridMouseDownTime;//记录单击DateGrid时的时间 public StockTable() { InitializeComponent(); this.selectDataBase(); this.DataGridStateControl(); this.cmb_StokerID.Items.Add(""); } public void setWareData() { dgrd_StockTable[dgrd_StockTable.CurrentCell.RowNumber,0]=inputDataGridArray[0]; dgrd_StockTable[dgrd_StockTable.CurrentCell.RowNumber,4]=inputDataGridArray[1]; dgrd_StockTable[dgrd_StockTable.CurrentCell.RowNumber,5]=inputDataGridArray[2]; dgrd_StockTable[dgrd_StockTable.CurrentCell.RowNumber,7]=17; } private void setTextData() { this .cmb_StokerID.IntegralHeight = false; this .cmb_StokerID.DroppedDown = false; this .cmb_StokerID.Items[0] = inputDataGridArray[0]; this .cmb_StokerID.SelectedIndex= 0; this.txt_StokerName.Text= inputDataGridArray [1]; this .cmb_StokerID.IntegralHeight = true ; } private void selectDataBase() { this .txt_StockDate.Text = System .DateTime .Today.ToShortDateString (); string tempStrSQL = "select distinct 姓名from 用户清单"; DataTable tempDataTable = link.SelectDataBase(tempStrSQL); for (int i =0;i<tempDataTable .Rows .Count ;i++) this .cmb_Oprater.Items.Add(tempDataTable.Rows [i][0]); this.cmb_Oprater.SelectedIndex = 0; } private void DataGridStateControl() { newTable = new DataTable (); newTable.Columns.Add("货号(双击)",typeof (string )); newTable.Columns.Add("数量",typeof (decimal )); newTable.Columns.Add("单价",typeof (decimal )); newTable.Columns.Add("仓库",typeof(string )); newTable.Columns.Add("品名",typeof (string )); newTable.Columns.Add("单位",typeof (string )); newTable.Columns.Add("金额",typeof (decimal ),"数量单价?"); newTable.Columns.Add("税率",typeof (decimal )); newTable.Columns.Add("不含税额",typeof (decimal ),"金额/1.17"); newTable.Columns.Add("税额",typeof (decimal ),"金额-不含税额"); this .dgrd_StockTable.DataSource= newTable; newTable.Rows.Add(newTable.NewRow()); DataGridTableStyle ts = new DataGridTableStyle (); DataGridTextBoxColumn aColumnTextColumn; ts.AllowSorting = false ; ts.AlternatingBackColor = Color .LightGray ; ts.MappingName = newTable.TableName; int numCols = newTable.Columns.Count; for (int i =0;i <numCols ;i++) { aColumnTextColumn = new DataGridTextBoxColumn (); if (i!=0&&i!=1&&i!=2&&i!=3) { aColumnTextColumn .ReadOnly = true ; } if (i==0) { aColumnTextColumn .TextBox .MouseDown += new MouseEventHandler (TextBoxMouseDownHandler); } if (i==4) { aColumnTextColumn .Width =160; } if (i==3) { string sendStrSQL ="select distinct仓库from 库存库a order by 仓库ASC"; DataTable tempTable = this .link.SelectDataBase(sendStrSQL ); } else { aColumnTextColumn .MappingName = newTable.Columns[i].ColumnName; aColumnTextColumn .HeaderText = newTable.Columns[i].ColumnName; aColumnTextColumn .NullText= ""; aColumnTextColumn .Format= "N"; ts .GridColumnStyles.Add(aColumnTextColumn ); } } this .dgrd_StockTable.TableStyles.Add(ts); } private void toolBar1_Button_Click(object sender,System .Windows .Forms . ToolBarButtonClickEventArgs e) { if (e.Button .ToolTipText =="保存修改?") { clickedSaveIcon(); } else if (e.Button .ToolTipText =="删除数据") { try { if (newTable.Rows.Count>0) { this .newTable.Rows.RemoveAt(this .dgrd_StockTable.CurrentCell.RowNumber); this .controlCalculate(); } if (newTable.Rows.Count-1<=0) newTable.Rows.Add(newTable.NewRow()); } catch { return; } } else if (e.Button.ToolTipText==" 打印报表") { } } //------------创建窗体,共用户选择供货商------------ private void cmd_Stoker_DropDown(object sender ,System.EventArgs e) { StokerDataManage newFrm= new StokerDataManage(); newFrm.setDataGridReadOnly(); newFrm.ShowDialog(); setTextData(); SendKeys.Send("{Tab}"); //向活动应用程序发送Tab键,跳到下一控件 }
c#用serialport进行的串口数据接收,遇到了问题,求大神指点
运行后再richtextbox1中只显示一个数,例如:33 随后会报错:对象未引用到对象的实例,点了关闭后又会出现一个数据,例如31,之后又会报错,如此循环,而且数据不太对。 整了好久了,希望能帮帮忙,第一次做这,谢谢!! 代码: namespace yfy_串口调试 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /****************************设置变量******************************/ public string[] strArray; public SerialPort sp1 = new SerialPort(); public Byte[] mydata; public int mydatalength; //这个数的值是由接收到的字节长度决定的,并且作为mydata的长度,如果索引值还超过数组定义值,就应该是接收问题。 public int zhengfu = 2, now_x = 30; public static Bitmap bmp = new Bitmap(500,350); public Graphics gph = Graphics.FromImage(bmp); public char name_image='A'; /*****************************相关函数****************************/ public void sp1_DataReceived(object sender, SerialDataReceivedEventArgs e)//数据接收函数 { if (sp1.IsOpen==true ) //为了严谨性,加上检查串口是否被打开 { if (rbRcv16.Checked == true) //接收16进制按钮 { try { int average_speed = 0; //设置初始平均速度 Byte[] receivedData = new Byte[sp1.BytesToRead]; //创建接收字节数组 sp1.Read(receivedData, 0, receivedData.Length); //读取数据 sp1.DiscardInBuffer(); //清空SerialPort控件的Buffer mydatalength = receivedData.Length; for (int i = 0; i < receivedData.Length; i++) //窗体显示 { richTextBox1.Text = receivedData[i].ToString("X2"); //16进制显示在接受栏 mydata[i] = receivedData[i]; richTextBox1.Text += ","; //让每个数据都隔开 average_speed += receivedData[i]; } textBox1.Text = (average_speed / receivedData.Length).ToString("X2"); } catch (System.Exception ex) { MessageBox.Show(ex.Message, "出错提示"); } } } else { MessageBox.Show("请打开某个串口或者没有选中16进制接收", "错误提示"); } } private void Form1_Load(object sender, EventArgs e)//页面初始化 { Control.CheckForIllegalCrossThreadCalls = false; //强制不检查线程 sp1.DataReceived += new SerialDataReceivedEventHandler(sp1_DataReceived); //订阅委托 sp1.ReceivedBytesThreshold =1; //当缓冲区的字节数为x时,触发datareceive事件 //检查是否有串口 string[] str = SerialPort.GetPortNames(); if (str == null) { MessageBox.Show("本机没有串口!", "Error!"); return; } //添加串口项目 foreach (string s in System.IO.Ports.SerialPort.GetPortNames()) { cbSerial.Items.Add(s); //获取有COM口 } rbRcv16.Checked = true; //接收数据按16进制进行 } private void btnSwitch_Click(object sender, EventArgs e)//设置串口 { if (sp1.IsOpen == false) { try { string serialName = cbSerial.SelectedItem.ToString();//读取串口号 sp1.PortName = serialName; //设置串口号 sp1.BaudRate = 9600; //波特率 sp1.DataBits = 8; //数据位 sp1.StopBits = StopBits.One; //停止位 sp1.Parity = Parity.None; //校验位 sp1.Open(); //打开串口 btnSwitch.Text = "关闭串口"; } catch (System.Exception ex) { MessageBox.Show("Error:" + ex.Message, "Error"); return; } } else { sp1.Close(); //关闭串口 btnSwitch.Text = "打开串口"; } }
当网页采用js动态获取数据时,HttpClient应如何获取数据?
总的问题是这样的:因为我需要在两个城市来回跑,但是机票价格不断变化,就想通过.NET的HttpClient对携程网的网页进行访问,定时为每几小时一次,然后在后台进行一下分析,当某个机票价格贴近预期的最低价的时候通知我。 我用的VB.NET,但是C#应该更广泛,如果哪位大神可以帮忙回答用C#就可以。 代码如下,我先写了一个类 ``` Imports System.IO Imports System.Net.Http Public Class MySpider Dim callback As CallBackSub Public Sub CallBackTo(ByVal callclass As CallBackSub) callback = callclass End Sub Public Shared Async Sub GetPage(ByVal url As String, ByVal callclass As CallBackSub) Dim MyHttpClient As New HttpClient() Dim str As String = Await GetStringFromUrl(url) Dim callback0 As CallBackSub = callclass callback0.Invoke(str) End Sub Private Shared Async Function GetStringFromUrl(ByVal Url As String) As Task(Of String) Using client As HttpClient = New HttpClient() Try Dim response As HttpResponseMessage = Await client.GetAsync(Url) response.EnsureSuccessStatusCode() Dim responseBody As String = Await response.Content.ReadAsStringAsync() Return responseBody Catch e As HttpRequestException Console.WriteLine(vbLf & "Exception Caught!") Console.WriteLine("Message :{0} ", e.Message) Return Nothing End Try End Using End Function End Class ``` 这个类中的GetStringFromUrl是微软给的例程,然后我用了一个委托来把获取的字符串传递给Form窗体。(我的.NET仅仅勉强入门,正准备task和线程这些,就姑且用委托了,如果有正确的处理方法还麻烦告诉一下) 窗体代码就不贴出来了,就是一个textbox用来接收委托传过去的数据,然后一个button控制getpage 然后问题就在于,我发现我取出response中的数据后,根本找不到机票价格 ![图片说明](https://img-ask.csdn.net/upload/201901/29/1548767543_874475.jpg) 然后我在浏览器中把网页保存了之后,发现里面有很多js和css文件,我就想是不是有些数据是通过js动态获取的。 最后我试了Windows窗体控件WebBroswer,在赋值了URL之后,仅仅这一句代码就得到了我想要的机票价格数据 ``` TextBox1.Text = WebBrowser1.Document.All(1).InnerText ``` ![图片说明](https://img-ask.csdn.net/upload/201901/29/1548767560_985205.png) 虽然问题可以说暂时解决,但是我还是觉得,HttpClient作为微软推荐使用的一个类,应该不会处理不了这种动态获取数据的情况,就想请教下各位使用.NET得前辈,是否可以用HttpClient类处理这个问题呢? 如果能给出代码我会感激不尽,如果给一个资料的链接也一样很感谢!
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
作为程序员的我,大学四年一直自学,全靠这些实用工具和学习网站!
我本人因为高中沉迷于爱情,导致学业荒废,后来高考,毫无疑问进入了一所普普通通的大学,实在惭愧...... 我又是那么好强,现在学历不行,没办法改变的事情了,所以,进入大学开始,我就下定决心,一定要让自己掌握更多的技能,尤其选择了计算机这个行业,一定要多学习技术。 在进入大学学习不久后,我就认清了一个现实:我这个大学的整体教学质量和学习风气,真的一言难尽,懂的人自然知道怎么回事? 怎么办?我该如何更好的提升
新来个技术总监,禁止我们使用Lombok!
我有个学弟,在一家小型互联网公司做Java后端开发,最近他们公司新来了一个技术总监,这位技术总监对技术细节很看重,一来公司之后就推出了很多"政策",比如定义了很多开发规范、日志规范、甚至是要求大家统一使用某一款IDE。 但是这些都不是我这个学弟和我吐槽的点,他真正和我吐槽的是,他很不能理解,这位新来的技术总监竟然禁止公司内部所有开发使用Lombok。但是又没给出十分明确的,可以让人信服的理由。 于...
相关热词 c# id读写器 c#俄罗斯方块源码 c# linq原理 c# 装箱有什么用 c#集合 复制 c# 一个字符串分组 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图
立即提问