用C#怎样实现windows的开始按钮

利用C#实现类似windows的开始按钮,即按一下弹出,在按一下收回,按空白区域弹出的界面也可收回。最好利用WPF的popup实现。我目前无法实现当界面已弹出后,再按一下让界面收回。

3个回答

popup定义代码
PlacementTarget="{Binding ElementName=BottomGrid}"
StaysOpen="False"
Name="ArchiveButtonPopup"
Closed="IsShowClosed"
IsOpen="{Binding IsChecked, ElementName=ArchiveButton, Mode=OneWay}">

prism:RegionManager.RegionName="ArchivingJobMonitorRegion" />

按钮定义
Name="ArchiveButton">
<Image Source="icons/状态栏-归档.png"
Stretch="Fill"
Width="64"
Height="64"
Name="ArchiveImage"
ToolTip="归档"
MouseLeftButtonDown="PullMouseDown"

MouseLeftButtonUp="PushMouseUp"/>

private bool isShowClosed = true;
private bool isUnchenked = false; //鼠标是否在下拉框没有弹出的时候按下
private void IsShowClosed(object sender, EventArgs e)
{
isShowClosed = true;
}
private void PullMouseDown(object sender, MouseButtonEventArgs e)
{
if (isShowClosed)
{
isUnchenked = true;
}
}
private void PushMouseUp(object sender, MouseButtonEventArgs e)
{
if (isUnchenked)
{
isUnchenked = false;
isShowClosed = false;
ArchiveButtonPopup.IsOpen = true;
}
}
全部代码就这三块,现在就是按下按钮界面弹出后,在按空白区域,界面收回。但再次按下按钮,界面无法弹出。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C# 通过winform的一个按钮事件 切换当前windows系统打开的窗口?
就是在winform窗口里 只有一个按钮!功能:点一次按钮,就会切换当前切换窗口! 就是用C#实现 alt+tab功能【不过是一次只切换一个窗口】 ,求高手啊 是不是要调用winodws API的类库啊,怎么调用????
C#windows应用程序如何将输入的信息保存在数组中?
3、 设计一个Windows应用程序,在该程序中定义一个学生类和班级类,以处理每个学生的学号、姓名、语文、数学和英语3门课程的期末考试成绩,要求: (1) 能查询每个学生的总成绩; (2) 能显示全班前3名的成绩; (3) 能显示单科成绩最高分和不及格的学生名单; (4) 能统计全班学生的平均成绩; (5) 能显示各科成绩在不同分数段的学生人数百分比。 设计提示: (1) 定义一个Student学生类,包含字段(学号、姓名、语文成绩、数学成绩、英语成绩)和属性(总成绩)等; (2) 定义一个Grade班级类,包含一个Student类型的数组(用来保存全班学生的信息以及若干个实现上述要求的方法等; (3) 设计用户操作界面,首先让用户能输入一个学生的信息,当单击“添加”按钮时把这些信息添加班级对象的学生数组中。当单击“完成”按钮时调用班级类的方法来显示所要求统计的统计结果。当用户在查询框中输入了学生的名字,并单击“查询”按钮时显示该学生的总成绩。 请问"输入一个学生的信息,当单击“添加”按钮时把这些信息添加到班级对象的学生数组中"这是怎么做到的?代码怎么写的?谢谢!!!
c#实现点击button判断是否正确的的问题
想实现: 一个 Image 底下有4个 button image随机出现 button也随着不通的image而出现不同的结果 对了加3分 错了不加不减 (这个比较好实现) 直接用随机数弄了 但是还是有以下问题我实现不了 1 , 怎样判断我按钮 点击是正确的 例如 图片出现的是 一张中国国旗 然后底下按钮是的Content 是 日本 ,中国 ,美国,德国 怎样判断点击中国这个按钮就是对的呢?而且还要加3分 我是自己在 点击按钮中写 string s1 = n1.Content.ToString(); if ( s1 == "中国") { fenshu += 3; } 可是不行呀 求解 用的是Silverlight
windows8.1 应用开发 如何用c#实现选择本地图片并显示到xaml中?
就是比如有个 自定义头像 按钮,点击之后就可以弹出本地图库。 然后选择图库中的图片之后,xaml的image框中就出现这个图片了。 求大神告知,小弟刚刚学习。不是太懂,希望详细一点
用C# windows窗体 设计计算器
设计一个简单的计算器,实现两个数的加减乘除,处理“计算”按钮的Click事件,实现四则运算。 判断计算需要的两个数是否为空。 利用double.Parse()方法,将文本框中的两个操作数转换为double类型 利用switch结构判断运算符,执行相应的计算。 利用Convert.ToString()方法将计算值转换为字符串,并显示在结果文本框中
新手c#计算器窗体button和键盘双输入无法实现
尝试写一个c#Windows计算器的小程序,用按钮已经都能实现,但是当使用Ke'yDown的时用就按盘输入有问题。数字都没问题,但是enter(等号)和其他加减乘除有问题,请大神帮忙解答谢谢。 private void calculator_KeyDown_1(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { button11.PerformClick(); e.Handled = true; } if (e.KeyCode == Keys.NumPad0) { button16.PerformClick(); e.Handled = true; ... } } ``` 以上是我想用keydown的代码
C#通过SerialPort读取电子天平数据时第一次操作无法获取数据,必须进行第二次操作才能获取当前数据?
C#通过SerialPort读取电子天平数据时,连接串口成功后,通过发送命令方式第一次操作无法获取数据,无任何数据返回,必须进行第二次操作才能获取当前数据。并且更新电子天平负载后,单击读取数据按钮,通过串口获得的数据为上一次读数,必须再单击一次才能获取更新的数据。一直卡到这里,不知道怎么解决,求大神帮忙看看!暂无积分,抱歉! 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; using System.IO.Ports; using System.Text.RegularExpressions; namespace 读天平 { public partial class Form1 : Form { SerialPort mySerialPort = null; string receiveing; string read_data; int count_read; int row_no; int column_no; DataGridView dgv; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { mySerialPort = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One); mySerialPort.Handshake = Handshake.None; // 四种都可以使用 mySerialPort.Open(); mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceivedHandler); mySerialPort.DtrEnable = true; // 加上此属性接收事件可被触发 mySerialPort.ReceivedBytesThreshold = 1; if (mySerialPort.IsOpen == true) { MessageBox.Show("串口打开成功", "提示", MessageBoxButtons.OK); } else { MessageBox.Show("串口打开失败", "提示", MessageBoxButtons.OK); } } private void mySerialPort_DataReceivedHandler(object sender, SerialDataReceivedEventArgs e) // SerialPort.DataReceived事件运行比较特殊,其运行在辅线程,不能与主线程中的显示数据控件直接进行数据传输,必须用间接的方式实现 {//接收数据 SerialPort sp = (SerialPort)sender; read_data = sp.ReadExisting(); this.Invoke((EventHandler)(delegate { receiveing = read_data.Trim().TrimStart('+').TrimStart('-').TrimEnd('g').Trim(); })); mySerialPort.DiscardInBuffer(); // 清除接收缓存 } private void dataGridView1_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { byte[] send = { 0x1B, 0x70 }; // 十六进制ASCII码 mySerialPort.Write(send, 0, send.Length); row_no = e.RowIndex; column_no = e.ColumnIndex; dgv = dataGridView1; dgv.Rows[row_no].Cells[column_no].Value = receiveing; } private void dataGridView2_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { byte[] send = { 0x1B, 0x70 }; // 十六进制ASCII码 mySerialPort.Write(send, 0, send.Length); row_no = e.RowIndex; column_no = e.ColumnIndex; dgv = dataGridView2; dgv.Rows[row_no].Cells[column_no].Value = receiveing; } } }
c#异步通讯五子棋 双方倒计时怎么写
我用c#异步通讯做了个五子棋的winform,服务器端和客户端分开的。想利用timer实现双方倒计时要怎么写? client端代码 ``` using System; using System.Drawing; using System.Windows.Forms; using System.IO; namespace GameClient { public partial class FormPlaying : Form { private int tableIndex; private int side; private DotColor[,] grid = new DotColor[15, 15]; //保存颜色,用于消点时进行判断 private Bitmap blackBitmap; private Bitmap whiteBitmap; //命令是否来自服务器 private bool isReceiveCommand = false; private Service service; delegate void LabelDelegate(Label label, string str); delegate void ButtonDelegate(Button button, bool flag); delegate void RadioButtonDelegate(RadioButton radioButton, bool flag); delegate void SetDotDelegate(int i, int j, int dotColor); LabelDelegate labelDelegate; ButtonDelegate buttonDelegate; RadioButtonDelegate radioButtonDelegate; public FormPlaying(int TableIndex, int Side, BinaryWriter bw) { InitializeComponent(); this.tableIndex = TableIndex; this.side = Side; labelDelegate = new LabelDelegate(SetLabel); buttonDelegate = new ButtonDelegate(SetButton); radioButtonDelegate = new RadioButtonDelegate(SetRadioButton); blackBitmap = new Bitmap(Properties.Resources.black); whiteBitmap = new Bitmap(Properties.Resources.white); service = new Service(listBox1, bw); } /// <summary>载入窗体时发生的事件</summary> private void FormPlaying_Load(object sender, EventArgs e) { //默认游戏级别为3级 radioButton3.Checked = true; for (int i = 0; i <= grid.GetUpperBound(0); i++) { for (int j = 0; j <= grid.GetUpperBound(1); j++) { grid[i, j] = DotColor.None; } } labelSide0.Text = ""; labelSide1.Text = ""; labelGrade0.Text = ""; labelGrade1.Text = ""; } /// <summary>设置标签显示信息</summary> /// <param name="Label">要设置的Label</param> /// <param name="string">要设置的信息</param> public void SetLabel(Label label, string str) { if (label.InvokeRequired) { this.Invoke(labelDelegate, label, str); } else { label.Text = str; } } /// <summary>设置button是否可用</summary> /// <param name="Button">要设置的Button</param> /// <param name="flag">是否可用</param> private void SetButton(Button button, bool flag) { if (button.InvokeRequired) { this.Invoke(buttonDelegate, button, flag); } else { button.Enabled = flag; } } /// <summary>设置radioButton选择状态</summary> /// <param name="radioButton">要设置的RadioButton</param> /// <param name="flag">是否选中</param> private void SetRadioButton(RadioButton radioButton, bool flag) { if (radioButton.InvokeRequired) { this.Invoke(radioButtonDelegate, radioButton, flag); } else { radioButton.Checked = flag; } } /// <summary>设置棋子状态</summary> /// <param name="i">第几行</param> /// <param name="j">第几列</param> /// <param name="dotColor">棋子颜色</param> //public void SetDot(int i, int j, DotColor dotColor) //{ // service.AddItemToListBox(string.Format("{0},{1},{2}", i, j, dotColor)); // grid[i, j] = dotColor; // pictureBox1.Invalidate(); //} /// <summary>重新开始新游戏</summary> /// <param name="str">警告信息</param> public void Restart(string str) { MessageBox.Show(str, "", MessageBoxButtons.OK, MessageBoxIcon.Warning); ResetGrid(); SetButton(buttonStart, true); } /// <summary>重置棋盘</summary> private void ResetGrid() { SetLabel(labelGrade0, ""); SetLabel(labelGrade1, ""); for (int i = 0; i <= grid.GetUpperBound(0); i++) { for (int j = 0; j <= grid.GetUpperBound(1); j++) { grid[i, j] = DotColor.None; } } pictureBox1.Invalidate(); } /// <summary>取消棋子</summary> /// <param name="x">x坐标</param> /// <param name="y">y坐标</param> public void UnsetDot(int x, int y,DotColor dotColor) { //service.AddItemToListBox(string.Format("{0},{1},{2}", i, j, dotColor)); //grid[x / 20 - 1, y / 20 - 1] = dotColor; grid[x,y] = dotColor; pictureBox1.Invalidate(); } /// <summary>绘制图像</summary> private void pictureBox1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; for (int i = 0; i <= grid.GetUpperBound(0); i++) { for (int j = 0; j <= grid.GetUpperBound(1); j++) { if (grid[i, j] != DotColor.None) { if (grid[i, j] == DotColor.Black) { g.DrawImage(blackBitmap, (i + 1) * 20, (j + 1) * 20); } else { g.DrawImage(whiteBitmap, (i + 1) * 20, (j + 1) * 20); } } } } } /// <summary>设置游戏难度级别</summary> /// <param name="ss">难度级别</param> public void SetLevel(string ss) { isReceiveCommand = true; switch (ss) { case "1": SetRadioButton(radioButton1, true); break; case "2": SetRadioButton(radioButton2, true); break; case "3": SetRadioButton(radioButton3, true); break; case "4": SetRadioButton(radioButton4, true); break; case "5": SetRadioButton(radioButton5, true); break; } isReceiveCommand = false; } /// <summary>当游戏难度级别发生变化时触发的事件</summary> private void radioButton_CheckedChanged(object sender, EventArgs e) { //isReceiveCommand为true表明是接收服务器设置的难度级别触发的此事件 //就不需要再向服务器发送 if (isReceiveCommand == false) { RadioButton radiobutton = (RadioButton)sender; if (radiobutton.Checked == true) { //设置难度级别 //格式:Time,桌号,难度级别 service.SendToServer(string.Format("Level,{0},{1}",tableIndex, radiobutton.Name[radiobutton.Name.Length - 1])); } } } /// <summary>向服务器发送消息</summary> private void buttonSend_Click(object sender, EventArgs e) { //字符串格式:Talk,桌号,对话内容 service.SendToServer(string.Format("Talk,{0},{1}", tableIndex, textBox1.Text)); } /// <summary>对话内容改变时触发的事件</summary> private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == (char)Keys.Enter) { //字符串格式:Talk,桌号,对话内容 service.SendToServer(string.Format("Talk,{0},{1}", tableIndex, textBox1.Text)); } } /// <summary>点击帮助按钮时触发的事件</summary> private void buttonHelp_Click(object sender, EventArgs e) { string str = "\n本游戏每两人为一组。游戏玩法:\n\n" + "(1)对局双方各执一色棋子。\n\n"+ "(2)空棋盘开局。\n\n" + "(3)黑先、白后,交替下子,每次只能下一子。\n\n" + "(4)只要黑白方中任意一方的棋子有五子连在一起(即五子连珠),可以为横连、纵连、斜连,则该方获胜。\n"; MessageBox.Show(str, "帮助信息"); } /// <summary>点击开始按钮时触发的事件</summary> private void buttonStart_Click(object sender, EventArgs e) { service.SendToServer(string.Format("Start,{0},{1}", tableIndex, side)); this.buttonStart.Enabled = false; } /// <summary>点击退出按钮时触发的事件</summary> private void buttonExit_Click(object sender, EventArgs e) { this.Close(); } /// <summary>关闭窗体时触发的事件</summary> private void FormPlaying_FormClosing(object sender, FormClosingEventArgs e) { //格式:GetUp,桌号,座位号 service.SendToServer(string.Format("GetUp,{0},{1}", tableIndex, side)); } /// <summary>FormRoom中的线程调用此方法关闭此窗体</summary> public void StopFormPlaying() { Application.Exit(); } /// <summary>在pictureBox1中按下鼠标触发的事件</summary> private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { int x = e.X / 20; int y = e.Y / 20; int color=-1; if (!(x < 1 || x > 15 || y < 1 || y > 15)) { if (grid[x - 1, y - 1] == DotColor.None) { // int color = (int)grid[x - 1, y - 1]; if (side == 0) { color = 0; } if (side == 1) { color = 1; } //发送格式:UnsetDot,桌号,座位号,行,列,颜色 service.SendToServer(string.Format( "UnsetDot,{0},{1},{2},{3},{4}", tableIndex, side, x - 1, y - 1, color)); } } } /// <summary> /// 设置玩家信息,格式:座位号,labelSide显示的信息,listbox显示的信息 /// </summary> /// <param name="sideString">指定玩家</param> /// <param name="labelSideString">labelSide显示的信息</param> /// <param name="listBoxString">listbox显示的信息</param> public void SetTableSideText(string sideString, string labelSideString, string listBoxString) { string s = "白方"; if (sideString == "0") { s = "黑方:"; } //判断自己是黑方还是白方 if (sideString == side.ToString()) { SetLabel(labelSide1, s + labelSideString); } else { SetLabel(labelSide0, s + labelSideString); } service.AddItemToListBox(listBoxString); } /// <summary> /// 设置成绩信息,格式:grade0为黑方成绩,grade1为白方成绩 /// </summary> /// <param name="str0">黑方成绩信息</param> /// <param name="str1">白方成绩信息</param> public void SetGradeText(string str0, string str1) { if (side == (int)DotColor.Black) { SetLabel(labelGrade1, str0); SetLabel(labelGrade0, str1); } else { SetLabel(labelGrade0, str0); SetLabel(labelGrade1, str1); } } /// <summary>显示谈话信息</summary> /// <param name="talkMan">谈话者</param> /// <param name="str">要显示的信息</param> public void ShowTalk(string talkMan, string str) { service.AddItemToListBox(string.Format("{0}说:{1}", talkMan, str)); } /// <summary> /// 显示消息 /// </summary> /// <param name="str">要显示的消息</param> public void ShowMessage(string str) { service.AddItemToListBox(str); } } } ``` service方法代码 ``` //------Service.cs----------// using System.Windows.Forms; using System.IO; using System.Net; using System.Net.Sockets; using System; using System.Threading; namespace GameClient { class Service { ListBox listbox; //StreamWriter sw; BinaryWriter bw; bool isExit = false; public Service(ListBox listbox, BinaryWriter bw) { this.listbox = listbox; this.bw = bw; } private struct SendToServerStates { public SendToServerDelegate d; public IAsyncResult result; } /// <summary>异步向服务器端发送数据</summary> public void AsyncSendToServer(string message) { SendToServerDelegate d = new SendToServerDelegate(SendToServer); IAsyncResult result = d.BeginInvoke(message, null, null); while (result.IsCompleted == false) { if (isExit) { return; } Thread.Sleep(50); } SendToServerStates states = new SendToServerStates(); states.d = d; states.result = result; Thread t = new Thread(FinishAsyncSendToServer); t.IsBackground = true; t.Start(states); } /// <summary>处理接收的服务器端数据</summary> private void FinishAsyncSendToServer(object obj) { SendToServerStates states = (SendToServerStates)obj; states.d.EndInvoke(states.result); } delegate void SendToServerDelegate(string message); /// <summary>向服务器发送数据</summary> public void SendToServer(string str) { try { bw.Write(str); bw.Flush(); } catch { AddItemToListBox("发送数据失败"); } } delegate void ListBoxDelegate(string str); /// <summary>在listbox中追加信息<</summary> /// <param name="str">要追加的信息</param> public void AddItemToListBox(string str) { if (listbox.InvokeRequired) { ListBoxDelegate d = AddItemToListBox; listbox.Invoke(d, str); } else { listbox.Items.Add(str); listbox.SelectedIndex = listbox.Items.Count - 1; listbox.ClearSelected(); } } } } ```
求助,C# winform实现socket接收客户端数据,总是丢数据。
程序主体是client端发送数据给server端,server那边接收到信息就发送一条固定的确认信息给client。 出现的问题就是运行的时候会固定丢掉第二次返回的数据,第一次和其他时候的都正常。打断点调试的时候也是正常的,很懵啊。。 感觉跟UI刷新有关,却又解决不了。另开线程接收也会有这个问题。贴上代码,求助大神。 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; using System.Net; using System.Net.Sockets; using System.Threading; namespace SocketDemo_Client { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private Socket soc_client = null; private byte[] socket_buf = null; private Thread t_listener = null; private void MainForm_Load(object sender, EventArgs e) { if (socket_buf == null) { socket_buf = new byte[4096]; } } /// <summary> /// 连接按钮的点击事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConnect_Click(object sender, EventArgs e) { IPAddress host_ip = IPAddress.Parse(this.txtIP.Text); IPEndPoint end_ipe = new IPEndPoint(host_ip, Convert.ToInt32(this.txtPort.Text)); soc_client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); soc_client.Connect(end_ipe); this.txtLog.AppendText("连接到" + soc_client.RemoteEndPoint.ToString() + "服务端。。。"); this.txtLog.AppendText(System.Environment.NewLine); } private void btnDisConnect_Click(object sender, EventArgs e) { this.txtLog.AppendText("关闭双向传输通道。。。"); this.txtLog.AppendText(System.Environment.NewLine); soc_client.Shutdown(SocketShutdown.Both); Thread.Sleep(500); this.txtLog.AppendText("关闭Socket对象。。。"); this.txtLog.AppendText(System.Environment.NewLine); soc_client.Close(); } private void btnSendMsg_Click(object sender, EventArgs e) { if (this.txtMsg.Text == "") { MessageBox.Show("输入发送内容啊骚年!"); return; } this.txtLog.AppendText("发送" + this.txtMsg.Text + "到服务端。。。"); this.txtLog.AppendText(System.Environment.NewLine); /* Array.Clear(socket_buf, 0, socket_buf.Length); socket_buf = Encoding.ASCII.GetBytes(this.txtMsg.Text); soc_client.Send(socket_buf); //清空发送框 this.txtMsg.Text = ""; //启动接收监听线程 if (t_listener == null) { t_listener = new Thread(MsgListener); t_listener.Start(); } if (t_listener.ThreadState == ThreadState.Suspended) { t_listener.Resume(); } */ string getStr = ""; getStr = SendAndReceive(this.txtMsg.Text); Thread.Sleep(2000); this.txtLog.AppendText("收到服务端信息:"); this.txtLog.AppendText(System.Environment.NewLine); this.txtLog.AppendText(getStr); this.txtLog.AppendText(System.Environment.NewLine); } /// <summary> /// /// </summary> private string SendAndReceive(string msg) { Array.Clear(socket_buf, 0, socket_buf.Length); socket_buf = Encoding.ASCII.GetBytes(msg); soc_client.Send(socket_buf); //清空发送框 this.txtMsg.Text = ""; string t = ""; soc_client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 500); Array.Clear(socket_buf, 0, socket_buf.Length); try { while (true) { int length = soc_client.Receive(socket_buf); t += Encoding.ASCII.GetString(socket_buf, 0, length); } } catch (SocketException e) { return t; } return t; } /// <summary> /// 接收线程 /// </summary> private void MsgListener() { string get_str = ""; soc_client.SetSocketOption(SocketOptionLevel.Socket,SocketOptionName.ReceiveTimeout,500); while (true) { Array.Clear(socket_buf, 0, socket_buf.Length); try { int length = soc_client.Receive(socket_buf); //接收活动连接发送的数据填充到buffer中 get_str += Encoding.ASCII.GetString(socket_buf, 0, length); //将缓存buffer的byte数据转换成字符串 } catch (SocketException se) { //线程委托去刷新信息 this.Invoke(new MethodInvoker(delegate { this.txtLog.AppendText("收到服务端信息:"); this.txtLog.AppendText(System.Environment.NewLine); this.txtLog.AppendText(get_str); this.txtLog.AppendText(System.Environment.NewLine); get_str = ""; })); //挂起线程 t_listener.Suspend(); continue; } } } } }
C#窗体实现在线答题系统时代码无bug能运行,但不显示题目信息,求问怎么回事?
数据库那边没有问题,连接语句在别的窗体也能用,怀疑是questionIndex的问题,求大神帮忙看下怎么改 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Data.SqlClient; using System.Windows.Forms; using System.Collections; namespace graduationproject { public partial class PsychologicalTest : Form { public int questionIndex = 1; public PsychologicalTest() { InitializeComponent(); } private void PsychologicalTest_Load(object sender, EventArgs e) { timer1.Start(); // 启动计时器 GetQuestionDetails(); // 显示题目信息 CheckOption();    // 如果题目已经答过,让相应的选项选中 CheckBtnNext();   // 确定是否到了最后一题 } private void CheckBtnNext() { // 如果达到20题,就让“下一题”按钮的文字显示为“提交” if (questionIndex >= QuizHelper.selectedQuestionIds.Length) { button2.Text = "提交"; } } private void button2_Click(object sender, EventArgs e) { // 如果没有到最后一题,就继续显示新题目信息 if (questionIndex < QuizHelper.selectedQuestionIds.Length) { questionIndex++; GetQuestionDetails(); // 显示试题信息 CheckOption(); // 如果题目已经答过,让相应的选项选中 CheckBtnNext();   // 确定是否到了最后一题 } else // 否则,打开答题卡窗体 { OpenResultCard(); } } private void OpenResultCard() { PsychologicalTestResult psychologicalTestResult = new PsychologicalTestResult(); psychologicalTestResult.MdiParent = this.MdiParent; psychologicalTestResult.Show(); this.Close(); } private void timer1_Tick(object sender, EventArgs e) { int minute; // 当前的分钟 int second; // 秒 // 如果还有剩余时间,就显示剩余的分钟和秒数 if (QuizHelper.remainSeconds > 0) { QuizHelper.remainSeconds--; minute = QuizHelper.remainSeconds / 60; second = QuizHelper.remainSeconds % 60; label4.Text = string.Format("{0:00}:{1:00}", minute, second); } // 否则,就提示交卷 else { timer1.Stop(); MessageBox.Show("时间到了!", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Close(); } } private void radioButton_Click(object sender, EventArgs e) { QuizHelper.studentAnswers[questionIndex] = Convert.ToString(((RadioButton)sender).Tag); } public void GetQuestionDetails() { // 显示当前的题目信息 label1.Text = string.Format("第{0}题:", questionIndex); // 查询题目信息的sql语句 string sql = "SELECT Question FROM PsyQuestion WHERE QNumber=questionIndex "; SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=graduationproject;Integrated Security=true"); try { conn.Open(); SqlCommand command = new SqlCommand(sql, conn); SqlDataReader reader = command.ExecuteReader(); if (reader.Read()) { label3.Text = reader["Question"].ToString(); } reader.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { DBHelper.connection.Close(); } } private void CheckOption() { switch (QuizHelper.studentAnswers[questionIndex]) { case "A": radioButton1.Checked = true; break; case "B": radioButton2.Checked = true; break; case "C": radioButton3.Checked = true; break; default: radioButton1.Checked = false; radioButton2.Checked = false; radioButton3.Checked = false; break; } } } }
c#如何通过子线程控制主线程控件呢?
我主窗口有个webbrowser控件,想通过子线程点击已显示出来的网页实现填写的功能,要怎么实现呢?我直接写代码会出错; 求大神贴点代码! 我用主线程弄个按钮是可以点击的,就是子线程不行 错误信息: “System.InvalidCastException”类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 指定的转换无效。 线程代码 HtmlElement ht = webBrowser1.Document.GetElementById("J_imlis"); HtmlElementCollection ht2 = ht.GetElementsByTagName("a"); foreach (HtmlElement item in ht2) { ab++; if (ab == 1) { item.InvokeMember("click"); //执行点击 break; } }
c# 动态创建控件 及触发事件 即插即用。
各大大好,初来驾到,请大家多多关照,问题是这样的。 **需求** :需要动态添加控件。然后需要项目做出来后要实现“即插即用”的特点。(即插即用:我们要是更新一个功能,用户只要更新这个控件就可以直接使用,而不用更新整个客服端) **问题** :知道要用泛型来写,但是看了一天了,不知道如何下手,现已写了如下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing; namespace SEM { class Enter { TextBox TEXTB; string u = null; string p = null; //动态创建Btn public void Add_WinBtn(Form _name, string text, string name, int x, int y) { Button btn = new Button(); btn.Text = text; btn.Name = name; btn.Location = new Point(x,y); btn.Click += new EventHandler(button1_Click); _name.Controls.Add(btn); } //登入按钮的事件 public void button1_Click(object sender, EventArgs e) { enter(u, p); } //登入的判断: public void enter(string TextBU, string TextBP) { u = TextBU; p = TextBP; if (u != "1" && p != "22") { MessageBox.Show("输入的账号密码错误,请重新输入!"); TEXTB.Text = null; } else { MessageBox.Show("进入系统"); TEXTB.Text = null; } } //创建TextBox public void Add_WinTextBox(Form _name, string text, string name, int x, int y) { TEXTB = new TextBox(); TEXTB.Text = text; TEXTB.Name = name; TEXTB.Location = new Point(x, y); TEXTB.LostFocus += new EventHandler(textbox_LostFocus); _name.Controls.Add(TEXTB); } //TextBox的事件 public void textbox_LostFocus(object sender, EventArgs s) { switch ((sender as TextBox).Name) { case "TxtBU": u = TEXTB.Text; break; case "TxtBP": p = TEXTB.Text; break; } } } }
C#实现delphi程序中DBConn.udl数据库链接工具,请高手解答疑惑
第1步可以获取所有区域网内的服务器名,但是第三步骤无法从特定的服务器名下,通过用户名和密码,得到数据库 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using StudentManager.com.huixin.util; using System.Collections; using System.Data.ProviderBase; using SQLDMO; using System.Data.SqlClient; namespace StudentManager { public partial class DataSourceConfig : Form { //连接数据库的类型 private String sqlConType = ""; public DataSourceConfig() { InitializeComponent(); } //配置数据库链接的窗体关闭时,打开相对应登录窗体 private void DataSourceConfig_FormClosed(object sender, FormClosedEventArgs e) { try { //杀死进程 //System.Diagnostics.Process.GetCurrentProcess().Kill(); //关闭当前窗体 //终止当前进程并为基础操作系统提供指定的退出代码 //System.Environment.Exit(System.Environment.ExitCode); this.Dispose(); this.Close(); //打开登录窗体 LoginForm lf = new LoginForm(); lf.Show(); // LoginForm.loginFrm.Show(); } catch (Exception ex) { Console.WriteLine("连接数据的窗体进程出错了:" + ex.Message); } } //显示组合框的下拉部分时发生 private void comboBox1_DropDown(object sender, EventArgs e) { this.comboBox1.DataSource = SqlLocator.GetLocalSqlServerNamesWithSqlClientFactory(); this.comboBox1.DisplayMember = "ServerName"; } //当用户点击刷新按钮时,将局域网内服务器和实例名给comobox private void button1_Click(object sender, EventArgs e) { this.comboBox1.DataSource = SqlLocator.GetLocalSqlServerNamesWithSqlClientFactory(); this.comboBox1.DisplayMember = "ServerName"; } //在窗体加载时,将Sql Server按钮以及和他相关两个文本框禁用 private void DataSourceConfig_Load(object sender, EventArgs e) { //Windows的按钮默认被选中 this.radioButton1.Select(); this.textBox1.Enabled = false; this.textBox2.Enabled = false; } private void radioButton1_Click(object sender, EventArgs e) { if (this.radioButton1.Checked == true) { sqlConType = "0"; } } private void radioButton2_CheckedChanged(object sender, EventArgs e) { if (this.radioButton2.Checked == true) { sqlConType = "1"; this.textBox1.Enabled = true; this.textBox2.Enabled = true; } } //3.点击数据库链接时显示时,组合框的下拉部分时发生 private void comboBox2_DropDown(object sender, EventArgs e) { //通过第一步输入的服务器实例名,从而找到步骤三中的数据库 //通过判断用户点击的属于哪一种数据库连接方式,从而判断采用什么方法 if (sqlConType == "0") { //用户选择的是Windows方式 this.comboBox2.DataSource = GetDataBaseList(this.comboBox1.SelectedItem.ToString()); this.comboBox2.DisplayMember = ""; } else if (sqlConType == "1") { //用户选择了Sql Server方式 this.comboBox2.DataSource = GetDataBaseList(this.comboBox1.SelectedItem.ToString(),this.textBox1.Text.Trim().ToString(),this.textBox2.Text.Trim().ToString()); this.comboBox2.DisplayMember = ""; } } //得到指定SQL服务器所有数据库的列表 //这种输入Sql Server模式,需要用户名和密码 public ArrayList GetDataBaseList(string ServerName, string UserName, string Pwd) { //一般使用SQLDMO,只能用于sql server2005一般的版本 ArrayList list = new ArrayList(); SqlConnection conn = new SqlConnection("Uid=" + UserName + ";Pwd=" + Pwd + ";Data Source=SQL2012;Integrated Security=false;"); ; SqlCommand cmd = new SqlCommand("select name from sys.databases where database_id > 4", conn); ; try { if (conn.State == ConnectionState.Closed){ conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { list.Add(dr[0]); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); //释放资源 } } /** SQLDMO.Application sqlApp = new SQLDMO.Application(); SQLDMO.SQLServer oServer = new SQLDMO.SQLServer("Data Source="+ServerName+";Persist Security Info=True;UID="+UserName+";PWD="+Pwd+""); oServer.Connect(ServerName,UserName,Pwd); foreach (SQLDMO.Database db in oServer.Databases) { if ((db.Name != null) && (db.SystemObject == false)) { list.Add(db.Name); } } **/ return list; } //这种属于Windows方式 //此时链接数据库时,需要加integrated security=SSPI public ArrayList GetDataBaseList(string ServerName) { //一般使用SQLDMO,只能用于sql server2005一般的版本 ArrayList list = new ArrayList(); SqlConnection conn = new SqlConnection("Data Source=" + ServerName + ";Integrated Security=SSPI;Initial Catalog=mwyqms_2016-03-25"); SqlCommand cmd = new SqlCommand("select name from sys.databases where database_id > 4", conn); ; try { if (conn.State == ConnectionState.Closed) { conn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { list.Add(dr[0]); } } } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { if (conn != null && conn.State == ConnectionState.Open) { conn.Close(); conn.Dispose(); //释放资源 } } return list; } } } 效果![图片说明](https://img-ask.csdn.net/upload/201607/03/1467514278_53237.png)
C#窗口程序调用快递鸟API查询快递完整源码
请大神帮忙C#实现点击按钮用户输入快递单号和快递公司,调用快递鸟API查询快递物流信息,将结果输出到文本框中 以下是快递鸟Demo ``` using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Net; using System.IO; namespace KdGoldAPI { public class KdApiSearchDemo { //电商ID private string EBusinessID = "xxxxxxxxxxx"; //电商加密私钥,快递鸟提供,注意保管,不要泄漏 private string AppKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //请求url private string ReqURL = "http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx"; /// <summary> /// Json方式 查询订单物流轨迹 /// </summary> /// <returns></returns> public string getOrderTracesByJson() { string requestData = "{'OrderCode':'','ShipperCode':'SF','LogisticCode':'589707398027'}"; Dictionary<string, string> param = new Dictionary<string, string>(); param.Add("RequestData", HttpUtility.UrlEncode(requestData, Encoding.UTF8)); param.Add("EBusinessID", EBusinessID); param.Add("RequestType", "1002"); string dataSign = encrypt(requestData, AppKey, "UTF-8"); param.Add("DataSign", HttpUtility.UrlEncode(dataSign, Encoding.UTF8)); param.Add("DataType", "2"); string result = sendPost(ReqURL, param); //根据公司业务处理返回的信息...... return result; } /// <summary> /// Post方式提交数据,返回网页的源代码 /// </summary> /// <param name="url">发送请求的 URL</param> /// <param name="param">请求的参数集合</param> /// <returns>远程资源的响应结果</returns> private string sendPost(string url, Dictionary<string, string> param) { string result = ""; StringBuilder postData = new StringBuilder(); if (param != null && param.Count > 0) { foreach (var p in param) { if (postData.Length > 0) { postData.Append("&"); } postData.Append(p.Key); postData.Append("="); postData.Append(p.Value); } } byte[] byteData = Encoding.GetEncoding("UTF-8").GetBytes(postData.ToString()); try { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.ContentType = "application/x-www-form-urlencoded"; request.Referer = url; request.Accept = "*/*"; request.Timeout = 30 * 1000; request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; request.Method = "POST"; request.ContentLength = byteData.Length; Stream stream = request.GetRequestStream(); stream.Write(byteData, 0, byteData.Length); stream.Flush(); stream.Close(); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream backStream = response.GetResponseStream(); StreamReader sr = new StreamReader(backStream, Encoding.GetEncoding("UTF-8")); result = sr.ReadToEnd(); sr.Close(); backStream.Close(); response.Close(); request.Abort(); } catch (Exception ex) { result = ex.Message; } return result; } ///<summary> ///电商Sign签名 ///</summary> ///<param name="content">内容</param> ///<param name="keyValue">Appkey</param> ///<param name="charset">URL编码 </param> ///<returns>DataSign签名</returns> private string encrypt(String content, String keyValue, String charset) { if (keyValue != null) { return base64(MD5(content + keyValue, charset), charset); } return base64(MD5(content, charset), charset); } ///<summary> /// 字符串MD5加密 ///</summary> ///<param name="str">要加密的字符串</param> ///<param name="charset">编码方式</param> ///<returns>密文</returns> private string MD5(string str, string charset) { byte[] buffer = System.Text.Encoding.GetEncoding(charset).GetBytes(str); try { System.Security.Cryptography.MD5CryptoServiceProvider check; check = new System.Security.Cryptography.MD5CryptoServiceProvider(); byte[] somme = check.ComputeHash(buffer); string ret = ""; foreach (byte a in somme) { if (a < 16) ret += "0" + a.ToString("X"); else ret += a.ToString("X"); } return ret.ToLower(); } catch { throw; } } /// <summary> /// base64编码 /// </summary> /// <param name="str">内容</param> /// <param name="charset">编码方式</param> /// <returns></returns> private string base64(String str, String charset) { return Convert.ToBase64String(System.Text.Encoding.GetEncoding(charset).GetBytes(str)); } } ```
如何在C#窗口应用程序中调用并显示数据库内容
1.我建立了一个access数据库并使用程序进行调用,使用datagridview可以显示出来 2.我的问题是怎么通过一个button按钮对数据库内容进行筛选调用,并且可以将其显示到textbox中 ``` using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.OleDb; namespace text01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); OleDbConnection thisConnection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\赵吉利15067\Desktop\access数据库文件夹\20190225-数据完整版1.mdb"); string sql = "select * from 总表(二字词、三字词、四字词)"; OleDbDataAdapter thisAdapter = new OleDbDataAdapter(sql, thisConnection); System.Data.DataSet thisDataSet = new System.Data.DataSet(); thisAdapter.Fill(thisDataSet, "table"); DataTable dt = thisDataSet.Tables["table"]; this.dataGridView1.DataSource = dt; /*设置抽取选项,按照属性 单元 序号的顺序抽取*/ thisConnection.Close(); } private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { } } } ``` 主要目的是通过一个按钮实现对数据库的调用,并且显示在空白文本框里面
C++ Windows窗体应用程序如何点击按钮跳转至另一个窗体
楼主最近因数据结构课程设计,需要写一个管理系统,且含图形化界面、。但是老师规定不能只能用双向循环链表存储数据,所以楼主便想创建"Windows窗体应用程序"工程。如图:![图片说明](https://img-ask.csdn.net/upload/201612/02/1480665530_509118.png) 之后创建好了两个窗口,一个login登陆窗口,一个登陆过后需要填跳转到的主界面。如图:![图片说明](https://img-ask.csdn.net/upload/201612/02/1480665789_180333.png)![图片说明](https://img-ask.csdn.net/upload/201612/02/1480665825_876956.png)。 为什么我写如下方法不能实现窗口的跳转?哪位大神帮忙支下招呗。谢了... ![![图片说明](https://img-ask.csdn.net/upload/201612/02/1480665903_251029.png) 附上main的代码![图片说明](https://img-ask.csdn.net/upload/201612/02/1480665849_783236.png) 应该是没有问题的啊,C#都可以这样写?
win系统中的选择文件夹对话框
win10下的设置壁纸中,幻灯片播放的浏览按钮,可以使用资源管理器选择一个文件夹, 请问这个效果在wpf中如何实现,![图片说明](https://img-ask.csdn.net/upload/201701/15/1484491023_840471.png) 还有,怎么样可以实现分别设置两个屏幕的壁纸,目前使用iActiveDesktop会同时设置所有屏幕。
用vc2010,怎样实现这个小功能。
windows窗体上点击按钮A 则复制预先设置好的文本到剪切板。 例如我点一下按钮,就把某手机号1391234####复制到剪切板。 谢谢各位![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/83.gif)
怎么在一个窗体的按钮控制另一个窗体关闭或者show出来
一个项目有两个文件夹,其中一个是前台一个是后台,后台应该能控制前台关闭和show出来才对,该怎么实现呢
终于明白阿里百度这样的大公司,为什么面试经常拿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微信的一个框架,但微信官方并不允
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问