|
It certainly does ! Should I remove the other one?
|
|
|
|
|
You can't once there is a reply - don't worry about it.
It would be polite to edit them, and add "[SOLVED]" to the subject line though!
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
Thanks for the info. Still getting the hang of things lol.
|
|
|
|
|
I have a couple of questions regarding this. I'm creating an app that allows me to click on characters that appear in a textbox so they can be copied an pasted with ease.I'm currently using a textbox but everytime I enter a character it doesn't enter it from left to write. On the textbox it appears from top to bottom and my goal is to construct sentences. I want it to read from left to right.
|
|
|
|
|
Would you like to try asking that again?
As it is, I don't have a clue what your problem is.
Remember that we can't see your screen, access your HDD, or read your mind.
Perhaps an example of what you are doing, and what help you need?
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
I apologize for the vagueness of information in my question. I'm currently working on a keyboard (I'll provide a link so you can get an idea) that has buttons with the characters and once they're clicked the character chosen goes into a textbox. The problems I'm encountering are the following: The buttons won't work for a textbox, it was fine when I was using a listbox, but when I switched to a textbox (I want to be able to copy and paste the text constructed) the buttons won't add text.
Another problem I was having was (when using the listbox) the characters wouldn't read from left to right(I think this might of been because of the listbox settings).
My goal is to have an app on my computer that looks and feels very similar to this. In fact it's this same alphabet: http://www.lexilogos.com/keyboard/hiragana.htm[^]
|
|
|
|
|
Here's a challenge for you Diego, now that OriginalGriff has answered your questions: add an EventHandler for the TextBox's 'TextChanged Event, and then every time the end-user types in the English-equivalent for one of your Hiragana characters, substitute the Hiragana character.
So, when I type in "kasatanahamaya:" instantly, as I type, those letters are replaced by the Hiragana
Note: that achieving this will involve you suppressing recursion: the moment you convert "ka" to the equivalent Hiragana, the TextChanged event is going to be called again.
mmmm ... too bad CP doesn't have a forum, kind of like Project Euler, for interesting challenges.
best, Bill
"If you shoot at mimes, should you use a silencer ?" Stephen Wright
|
|
|
|
|
This is out of my league but I'm going to try it out. I finally finished the keyboard and I want to keep improving it so this is not a bad idea. This week looks very busy with school but the weekend is going to be a long one.
|
|
|
|
|
Hi all, it seems what I wanted to do is pretty straight forward but I can't get it to work. What I wanted to do is upload a file called Test.doc to a folder called MyFiles in the Root directory of my Web Server. Then retrieve the file using the following code
<a href="/MyFolders/test.doc">Click here</a>
That's essentially what I wanted to do. However,I want to save the name and extension of Test.doc in a database. Then I want to replace the name Test.doc with a GUID before uploading it to the folder on the server to avoid duplication. I have tried the following to store the file path of Test.doc without success:
string myFileName = Path.GetFileName(FileUpload1.FileName);
string myFilePath = Server.MapPath("~/Documents/");
What code do I use to get the path of Test.doc? Thanks in advance for your help.
modified 25-Aug-12 21:08pm.
|
|
|
|
|
Hi,
You are not getting your file because you may not have uploaded file on server. After selecting your file you need to call FileUpload1.SaveAs method and store it on the server. After storing you can get the path of the file because you need to specify path of the storage location.
Let me know if this is not the case,
Thanks
-Amit Gajjar (MinterProject)
|
|
|
|
|
That is not quite what you want to do - if you are replacing the file name with a Guid, (which is very sensible) then any download of that file direct from an href link will have the GUID as the file name, rather than the original.
What I do is to provide a href link to an ASPX page that reads the file, and sends it as the original file name. (This code reads teh whole file from the database, but that is easy for you to change (mine is probably a bit more complex that yours, as it supports versions as well):
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="wm5ftdl.aspx.cs" Inherits="wm5ftdl" %>
<%
string guid = Request.QueryString["file"];
string fileName = "ERROR";
byte[] data = new byte[] { 0, 0, 0, 0 };
string strCon = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["DownloadDatabase"].ConnectionString;
using (System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon))
{
con.Open();
string strcmd = "SELECT [iD] ,cn.[fileName],[description] ,[dataContent] ,[version] " +
"FROM dlContent cn " +
"WHERE cn.iD=@ID";
using (System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand(strcmd, con))
{
cmd.Parameters.AddWithValue("@ID", guid);
using (System.Data.SqlClient.SqlDataReader r = cmd.ExecuteReader())
{
if (r.Read())
{
fileName = (string) r["filename"];
data = (byte[]) r["dataContent"];
}
}
}
}
Response.Clear();
Response.AddHeader("Cache-Control", "no-cache, must-revalidate, post-check=0, pre-check=0");
Response.AddHeader("Pragma", "no-cache");
Response.AddHeader("Content-Description", "File Download");
Response.AddHeader("Content-Type", "application/force-download");
Response.AddHeader("Content-Transfer-Encoding", "binary\n");
Response.AddHeader("content-disposition", "attachment;filename=" + fileName);
Response.BinaryWrite(data);
Response.End();
%>
The link is generated from the CS code for the displayed page:
protected void Page_Load(object sender, EventArgs e)
{
try
{
List<Downloadable> downloads = GetDownloadList();
foreach (Downloadable dl in downloads)
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell = new HtmlTableCell();
cell.InnerHtml = "<a href=\"wm5ftdl.aspx?file=" + dl.Id + "\" target=\"_blank\">" + dl.FileName + "</a>";
row.Cells.Add(cell);
tbDownloads.Rows.Add(row);
}
}
catch (Exception ex)
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell = new HtmlTableCell();
cell.InnerHtml = ex.ToString();
row.Cells.Add(cell);
tbDownloads.Rows.Add(row);
}
}
private List<Downloadable> GetDownloadList()
{
List<Downloadable> list = new List<Downloadable>();
string strCon = ConnectionStrings.Download;
using (SqlConnection con = new SqlConnection(strCon))
{
con.Open();
string strcmd = "SELECT [iD] ,cn.[fileName],[description] ,[version], [uploadedOn], [uploadedBy], [downloadUserOnly] " +
"FROM dlContent cn " +
"INNER JOIN " +
"( SELECT filename, MAX(Version) AS maxver " +
" FROM dlContent " +
" GROUP BY filename" +
") gcn ON cn.filename = gcn.filename " +
" AND cn.version = gcn.maxver";
using (SqlDataAdapter da = new SqlDataAdapter(strcmd, con))
{
DataTable dt = new DataTable();
da.Fill(dt);
foreach (DataRow dr in dt.Rows)
{
list.Add(new Downloadable(dr));
}
}
}
return list;
}
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
ASPnoob wrote: Then I want to replace the name Test.doc with a GUID before uploading it to the folder on the server to avoid duplication.
It doesn't. I can simply upload the document again and it will get a new Guid.
Is it "required" to detect "duplicates", or is it just a filler for the specs?
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Hi Eddy, thanks for responding. The GUID is required to prevent duplicates.
|
|
|
|
|
Explain me, in detail, HOW it does that.
I just said it does not prevent duplicates, and explained where the flaw is. Instead of regurgitating that the primary key prevents duplicates, try and think HOW it would do that. Hint: it doesn't.
See you tomorrow.
Bastard Programmer from Hell
if you can't read my code, try converting it here[^]
|
|
|
|
|
Hi,every one
How can we change the combobox look in Wpf?
what I mean in here is to change it from rectangle into ellipse.
thank you all in advance.
modified 25-Aug-12 17:47pm.
|
|
|
|
|
|
Hello
I am trying to write a program to input and display 10 employee details using indexers.I am stuck please help.
[code]
using System;
namespace EmployeeIndexer
{
class Employee
{
string[] edept=new string[10];
string[] ename=new string[10];
int[] eno=new int[10];
int[] esal=new int[10];
int index = 0;
public Employee()
{
edept[index] = "";
ename[index] = "";
eno[index] = 0;
esal[index] = 0;
}
public void AddRec(string d, string n, int no, int s)
{
edept[index] = d;
ename[index] = n;
eno[index] = no;
esal[index] = s;
}
public void this[int pos]
{
get
{
Console.WriteLine("{0} {1} {2} {3}",edept[pos],ename[pos],eno[pos],esal[pos]);
}
}
}
class Employee_List
{
Employee[] e;
int size=0;
public Employee_List()
{
e = new Employee[10];
}
public void AddFunc()
{
string n, d;
int s, no;
Console.WriteLine("Enter the number of records you want to add:");
size = Int32.Parse(Console.ReadLine());
for (int i = 0; i < size; i++)
{
Console.WriteLine("Record Number {0}",i);
Console.WriteLine("Name:");
n = Console.ReadLine();
Console.WriteLine("Number:");
no = Int32.Parse(Console.ReadLine());
Console.WriteLine("Dept:");
d = Console.ReadLine();
Console.WriteLine("Salary:");
s = Int32.Parse(Console.ReadLine());
e[i].AddRec(d,n,no,s);
}
}
public void Disp()
{
for (int i = 0; i < size; i++)
{
Console.WriteLine("Record Number {0}",i);
Console.WriteLine(e[i]);
}
}
}
class Main_Class
{
public static void Main()
{
while (true)
{
Console.WriteLine("Menu");
Console.WriteLine("1.Add 2.Display 3.Exit");
Console.WriteLine("Choice:");
int c = Int32.Parse(Console.ReadLine());
switch (c)
{
case 1:
Employee_List el = new Employee_List();
el.AddFunc();
break;
case 2:
Employee_List e2 = new Employee_List();
e2.Disp();
break;
case 3:
return;
}
}
}
}
}
I am new to C# so pardon my mistakes.
[/code]
|
|
|
|
|
ripples wrote: I am stuck
Do you really think that this is a very good description of your problem?
Why is common sense not common?
Never argue with an idiot. They will drag you down to their level where they are an expert.
Sometimes it takes a lot of work to be lazy
Please stand in front of my pistol, smile and wait for the flash - JSOP 2012
|
|
|
|
|
The easiest way to have indexers available to a class is to derive from an object that already has them, such as List<T>.
A simple example:
public class EmployeeData
{
private string name;
private string department;
public EmployeeData(string name, string department)
{
this.name = name;
this.department = department;
}
public string Name
{
get { return name; }
}
public string Department
{
get { return department; }
}
public override string ToString()
{
return string.Format("{0}, {1}", name, department);
}
}
public class Employee : List<EmployeeData>
{
public Employee(EmployeeData data)
: base(new EmployeeData[] { data })
{ }
}
Employee employee = new Employee(new EmployeeData("Fred", "Reception"));
employee.Add(new EmployeeData("George", "IT"));
List<Employee> employees = new List<Employee>();
employees.Add(employee);
foreach (Employee employeeItem in employees)
{
foreach (EmployeeData employeeData in employeeItem)
{
Console.WriteLine(employeeData);
}
}
If you don't want to expose your class as a List then you can wrap it and expose the parts you want using your own indexers:
public class Employee : IEnumerable<EmployeeData>
{
private List<EmployeeData> list;
public Employee(EmployeeData data)
{
list = new List<EmployeeData>();
list.Add(data);
}
public EmployeeData this[int index]
{
get { return list[index]; }
set { list[index] = value; }
}
public int Count
{
get { return list.Count; }
}
public void Add(EmployeeData data)
{
list.Add(data);
}
public IEnumerator<EmployeeData> GetEnumerator()
{
return list.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return list.GetEnumerator();
}
}
|
|
|
|
|
Indexers are unlikely to be a suitable technique. More information is needed.
|
|
|
|
|
ripples wrote: I am new to C# so pardon my mistakes. Your first mistake is trying to use an advanced technique before you are fully acquainted with the basics. In your main() method you are creating a new list e1 , every time the user selects option 1, and adding some information into it. You then break out of that case block and e1 goes out of scope and is disposed (i.e all information is thrown away). If the user selects option 2 you create a different new object e2 , and call the method to display its contents, but since you have not added anything into it there is no information to display. I would suggest going back to your notes and spending some time learning about creating and using objects. A good tutorial can be found in .NET Book Zero[^] by Charles Petzold.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
|
Note: this "experiment" was actually touched-off by Bob Janova's comment [^] on the recent thread on Tuples, "Tuples in Functions" [^], here, on this forum.
I'm not clear exactly why, but, that got me interested in what it would take to build a generic List of KeyValuePairs, where the 'Key would be a 'Type, and the 'Value an instance of that 'Type, and the 'Type for each KeyValuePair would be inferred from the 'Value.
The idea was that to to call a function that added items to the List<KeyValuePair> like this, passing in only the actual 'Value for each new KeyValuePair item:
AddToKVPList("tweet");
AddToKVPList(1.567893);
AddToKVPList(new TextBox()); I struggled to find a way to do this without using any "higher" .NET facilities, but could not achieve what I wanted: my final solution was
private List<KeyValuePair<Type, dynamic>> _listOkvp = new List<KeyValuePair<Type, dynamic>>();
private void AddToKVPList(object oIn)
{
workingType = oIn.GetType();
KeyValuePair<Type, dynamic> newKVP = new KeyValuePair<Type, dynamic>(workingType, oIn);
_listOkvp.Add(newKVP);
} If we execute the above code, and examine what _listOkvp is after the three calls to AddToKVPList in a 'Command' window in Visual Studio:
> ? _listOkvp
Count = 3
[0]: {[System.String, tweet]}
[1]: {[System.Double, 1.567893]}
[2]: {[System.Windows.Forms.TextBox, System.Windows.Forms.TextBox, Text: ]} Well, yes, that's what I was trying to get to: and, if you add this to iterate and print to the Console everything in the KeyValuePairList:
foreach(var kvp in _listOkvp)
{
Console.WriteLine(kvp.Value.GetType());
} You do get:
System.String
System.Double
System.Windows.Forms.TextBox So what's wrong ? Two things:
1. I believe I could have achieved this without using 'Dynamic, but I could not find a way to do that.
2. I cannot understand how I did transform the value of the (edit: 'Key)'Value, which was passed in as an 'object' parameter to the method 'AddToKVPList, to an actual instance of the 'Type of the passed in 'Value.
Which is worse: code you think should work, but does not, and you can't understand what's wrong, or: code that works, but you can't understand why ?
Appreciate your response: could this be done without 'dynamic ?
thanks, Bill
"One of the few good things about modern times: If you die horribly on television, you will not have died in vain. You will have entertained us." Kurt Vonnegut
modified 25-Aug-12 17:20pm.
|
|
|
|
|
1. As is often the case, you can replace dynamic with object and it will still work the same. The two are very similar.
2. You passed in the Value not the Key . The GetType method you called returns the true type of the object, not object :
object o = 1;
Console.WriteLine(o.GetType());
|
|
|
|
|
+5
Thanks, DaveyM69, I edited the OP to correct the mistake you identified: yes, I did pass in the 'Value for the KeyValuePair, not the 'Key !
I regret I did not keep back copies of my various failed attempts, so that I could examine them, now, since you enlightened me that object.GetType() will return the "true" 'Type !
best, Bill
"If you shoot at mimes, should you use a silencer ?" Stephen Wright
|
|
|
|
|