|
You need to provide more information. When are you doing this, where are the objects being dragged from etc.? What part of the C# language do you believe is affecting this?
|
|
|
|
|
On older version of c#. I could display the form on the screen and on the left side of the screen I had a list of tools such as button, textbox. I could then select an object from the list then drag it on the form and position it on the form where I wanted the object to appear (when I say object I mean things like buttons and textboxs).
In C# 8.0 I don't seem to be able to do this unless you know of a way or something in the setup I need to change first.
|
|
|
|
|
It is impossible to guess what you are doing. Please edit your original question above and add full details of the problem, including the failing code.
|
|
|
|
|
If you're talking about designing the from in Visual Studio, you can get the ToolBox to show up from the View menu. Just click the View menu, then Toolbox.
Or you could hit Ctrl-W, X.
|
|
|
|
|
Hi Dave.
I tried clicking on Toolbox in the View menu but when I do that the only thing I see on the screen is a list of tools. I need to have both the form and the list of tools displayed on the screen at the same time.
In past versions of C# things were put in panels on the screen so the form display was put in one panel in the middle of the screen and the list of tools was put in the left side panel.
Can panels be setup with C# 8.0 like they have been in the past for the user interface?
|
|
|
|
|
Then you double-click the form you want to open.
The Toolbox doesn't have a maximize button so it cannot be taking up the entire window. There is a small pushpin icon next to the Close (X) button in the ToolBox window. That can pin the toolbox window or allow it to autohide into a tab on the left edge of the Visual Studio window.
|
|
|
|
|
Thanks Dave.
I found I had to dock some things such as toolbox so the interface becomes panels and is the way I want things to appear.
Brian
|
|
|
|
|
I think, and I may be wrong but is winforms supported in NET.Core? I believe the visual designer may not be included yet.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
In that case I'll need to use only Net.Framework
|
|
|
|
|
If you're running the current release of Visual Studio 2019, you'll need to enable the .NET Core Windows Forms designer in the "preview features" settings.
It's still not complete, and there's a newer version available with the preview version of Visual Studio.
Windows Forms Designer for .NET Core Released | .NET Blog[^]
The .NET Framework version of the designer and toolbox should not have changed.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Thanks Richard.
I updated Microsoft Visual Studio today and now have a form displayed when using Net.Core
Brian
|
|
|
|
|
Hi all!
Got a new question.
I have a barcode scanner that saves all scanned barcodes in the following format:
Date,Time,Barcode
Example:
2020-07-08,13:54:16,1578456329781
2020-07-08,14:07:13,1578453697235
2020-07-08,14:08:03,1548795358155
2020-07-08,14:11:09,1578453697235
2020-07-08,14:11:42,1578453697235
Now I add this to a ListView in Gridview mode with the following code:
List<List> items = new List<List>();
string[] lines = File.ReadAllLines(@"F:\BARCODE.txt");
foreach (string line in lines)
{
string Pattern = @"(?<Date>\d{4}-\d{2}-\d{2})(?:,)(?<Time>\d{2}:\d{2}:\d{2})(?:,)(?<EAN>\d*)";
Regex R = new Regex(Pattern);
Match m = R.Match(line);
items.Add(new List() { Date = m.Groups["Date"].ToString(),
Time = m.Groups["Time"].ToString(), EAN = m.Groups["EAN"].ToString() });
}
LvItems.ItemsSource = items;
Now I want to be able to count if there are any duplicates, and show the results in a new ListView like this:
(| shows new Column in the gridview)
1578456329781|1
1578453697235|3
1548795358155|1
Does anyone have a better idea than using a atleast two loops to do this?
I was thinking on using one loop to go threw the list, and then use the second loop to check for duplicates and count.
Wondering if there are a simplier solution for this.
Any help, as always, are much appreciated.
Have a nice day!
Have gotten a new IDE
modified 25-Aug-20 10:14am.
|
|
|
|
|
For starters, I wouldn't use a Regex: use string.Split instead:
string[] lines = File.ReadAllLines(filePath);
var barcodes = lines.Select(line => {string[] parts = line.Split(',');
return parts[2]; }); You can then use GroupBy to combine them and get the Key - the barcode number - and it's Count:
var x = barcodes.GroupBy(b => b);
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Hi!
Sorry for late reply, been a bit busy.
Anyhow, I have tried your example, but how can I output it to a Listview?
I have the following code now:
string[] lines = File.ReadAllLines(@"C:\Users\<user>\Desktop\Test data.txt");
var barcodes = lines.Select(line => {string[] parts = line.Split(',');
return parts[2]; });
var x = barcodes.GroupBy(b => b);
Tried differnt mthoods, among other: Messagebox.Show(x.ToString());
That failed :P
Thankfull for any help.
Have a nice day!
I have a new IDE!
|
|
|
|
|
What does GroupBy return?
What type is x?
Why would you assume that ToString would do anything useful?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I have never used LinQ, and as such I am a bit unsure what GroupBy returns and what type x is.
And about the ToString, I was just testing, all (or many) does...
Here is the whole code I have, if anyone is interested:
using System;
using System.Collections.Generic;
using System.Windows;
using System.IO;
using System.Linq;
namespace Inventory
{
public partial class Window1 : Window
{
void button1_Click(object sender, RoutedEventArgs e)
{
string[] lines = File.ReadAllLines(@"C:\Users\sdadmin\Desktop\Test data.txt");
var barcodes = lines.Select(line => {string[] parts = line.Split(',');
return parts[2]; });
var x = barcodes.GroupBy(b => b);
}
public class List
{
public string Date{get; set;}
public string Time{get; set;}
public string EAN {get; set;}
}
}
}
I am pretty new to C#, I have only been at it for about 1 month or so, if I disregard time when I don't do any programming...
Have a nice day!
|
|
|
|
|
If you don't know what type something is, you can hover the mouse over it, and VS will tell you.
In this case it's a IEnumerable<IGrouping<string, string>>
Which means that it's a collection of Groups of string key / string value pairs.
Each Group in the collection has two properties you are interested in: the Key (which is the barcode number) and the Count method which tells you how many items are in each group.
So it's pretty simple to access the barcode and count:
string[] lines = File.ReadAllLines(filePath);
var barcodes = lines.Select(line => {
string[] parts = line.Split(',');
return parts[2];
});
var x = barcodes.GroupBy(b => b);
foreach (var y in x)
{
Console.WriteLine($"{y.Key} : {y.Count()}");
}
For your sample data you get:
1578456329781 : 1
1578453697235 : 3
1548795358155 : 1
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Thanks for the help!
That worked like a charm.
Was unfamiliar that you could hover the mouse over the variable and the IDE would tell you what type it was.
On the PC I am on now, at work, I can't install a newer framework, so I had to redo the code to not use String interpolation, sadly.
Also I am using SharpDevlop.
Anyhow, thanks for the help
Have a nice day!
|
|
|
|
|
You're welcome!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Quote: I was thinking on using one loop to go threw the list, and then use the second loop to check for duplicates and count. You are right, it is not just about finding/removing the duplicates, but also counting them.
For a custom solution, you can scan the list and create a Dictionary<string, int> that holds the times that a key occurs; check if the key exists, then increment the value, otherwise, add the key with 1 as value. The algorithm will run O(N) in a single go, and you can then traverse on the Dictionary while performing your actions—and this part depends on how you use the Dictionary and what purpose you make it serve. You will be using a single loop, and the front-end framework (ListView) would then be able to render the results itself; which will again be a loop.
You might as well want to use LINQ or other "shiny" C# features to perform this as well, C# LINQ find duplicates in List - Stack Overflow
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
Finding duplicates by barcodes is easy; i'd suggest you get your data into an "object" where it will be easy to perform any type of query on it: I'd use a Dictionary:
private readonly string bcdata = @"2020-07-08,13:54:16,1578456329781
2020-07-08,14:07:13,1578453697235
2020-07-08,14:08:03,1548795358155
2020-07-08,14:11:09,1578453697235
2020-07-08,14:11:42,1578453697235";
private char[] splitwhtspc = {'\r', '\n', ' ', '\t'};
private char[] splitcomma = {','};
var lines = bcdata.Split(splitwhtspc, StringSplitOptions.RemoveEmptyEntries);
Dictionary<DateTime, Int64> dttobc = lines.Select
(
line => line.Split(splitcomma, StringSplitOptions.RemoveEmptyEntries)
).Select
(
sary =>
new
{
key = DateTime.Parse(sary[0] + " " + sary[1]),
value = long.Parse(sary[2])
}
)
.ToDictionary(
kl => kl.key,
vl => vl.value
); Using this Dictionary, you can easily create a new Dictionary of barcodes and number of barcodes:
Dictionary<long, int> dups = dttobc.Values.GroupBy(v => v).ToDictionary(g => g.Key, g => g.Count());
«One day it will have to be officially admitted that what we have christened reality is an even greater illusion than the world of dreams.» Salvador Dali
|
|
|
|
|
Hello,
I has asked to create a POC on creating Entity in PowerApps CDS using C#. I don't know which API to be consumed in C#.
Could someone please guide me?
Thanks
Ramesh
|
|
|
|
|
|
con = new OleDbConnection("provider=oraoledb.oracle.1;user id=scott;password=tiger");
daEmp = new OleDbDataAdapter("select * from emp", con);
daDept = new OleDbDataAdapter("select * from dept", con);
//----------------------------
ds = new DataSet();
//---------------------------------------
daEmp.Fill(ds, "emp");
dataGridView1.DataSource = ds.Tables["emp"];
//-------------------------------------------
daDept.Fill(ds, "dept");
cmbDname.DataSource = ds.Tables["dept"];
cmbDname.DisplayMember = "dname";
cmbDname.ValueMember = "deptno";
//-------------------------------------------------
pictureBox1.DataBindings.Add("Image", ds.Tables["emp"], "photo2", true, DataSourceUpdateMode.OnPropertyChanged);
txtEmpno.DataBindings.Add("text", ds.Tables["emp"], "empno");
txtEname.DataBindings.Add("text", ds.Tables["emp"], "ename");
txtSal.DataBindings.Add("text", ds.Tables["emp"], "sal");
cmbDname.DataBindings.Add("selectedvalue", ds.Tables["emp"], "deptno");
dtpHireDate.DataBindings.Add("text", ds.Tables["emp"], "hiredate");
txtJob.DataBindings.Add("text", ds.Tables["emp"], "job");
OleDbCommandBuilder cmb = new OleDbCommandBuilder(daEmp);
bmb = this.BindingContext[ds.Tables["emp"]];
}
Im using the above code to insert picture of employee but when i Try to save it using
bmb.EndCurrentEdit();
daEmp.Update(ds.Tables["emp"]);
Im getting an error Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information.
I have tried to change the data type in Oracle from blob to long raw but Im getting the same issue.
Could u plz let me know what is the error
Table emp already having primary key
The problem occur only when the line binding of picturebox is ther.
If i committed the line of picturebox no error the record will be saved.
In Sql server I have tried same table and same column it is working.
In sql server I declare the column of employee photo as image data type.
But in oracle I have tried Long raw and blob data type it is not working
|
|
|
|
|
Ask in the Oracle forums; their database, they might know.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|